I don't know if this is a bug in my code, in ghc, or in the python interpreter. I could not find it for a long time. Would somebody please help me? In http://qrczak.ids.net.pl/HsPython-bug.tar.gz there is a simplest fragment I could ake which exposes the bug. It requires ghc-4.11 and python-2.0. It should be tweakable for older versions of both: - For older ghc versions, either replace Ptr/FunPtr with Addr and ForeignPtr with ForeignObj, or use QForeign instead of Foreign. In any case you must install hsc2hs from ghc >= 4.09 or QForeign. QForeign is at http://download.sourceforge.net/qforeign/qforeign-0.63.tar.gz. - For older Python versions, fix paths in the Makefile. The program should do an equivalent of main = putStr (repeat '9') but in a very indirect way, calling Python which calls back Haskell for each digit. On my machine it crashes after several lines of output (inside malloc). It is very sensitive to small changes. When compiled with -O, it works fine. When the PyObject module is merged with Main, it works fine. When nullFunPtr is passed in Main.hsFunctionNew instead of freeMethodDefPtr, it still crashes, but if nullFunPtr is replaced with 0 and the corresponding type in a foreign import is changed to Int, it works fine (well, this applied to a version before removing unnecessary junk, now it may be different). When freeMethodDef is written in C and foreign imported instead of being written in Haskell and foreign exported, it works fine. Et caetera. I tried to run it under ghc-4.08.1 and python-1.5 (after necessary tweaking), but it's very different: it crashes very soon and ltrace shows that a message about passing a non-tuple as arguments is strcpy'ed just before the crash. Perhaps the crash is expected, since I don't catch Python exceptions in the simplified version, but the message is not: I am passing the result of PyTuple_New(0) (after wrapping in a ForeignPtr). Anyway, it is very sensitive to small changes of compilers or the source itself. Maybe I am using the Python interface in a wrong way, or I am doing some stupid mistake, or there is a bug in ghc - I really don't know what is going on. Help! -- Marcin 'Qrczak' Kowalczyk