RE: [Haskell-cafe] Re: FPS: Finalizers not running (was Memory usageoutside of the Haskell heap)

On 06 November 2005 18:38, Joel Reymont wrote:
You need to do something like this to force them to run, apparently
main = do foo $ Prelude.concat $ replicate 100 data_
Just triggering the GC with performGC doesn't do it.
The really odd thing is that if I setup a C finalizer (see below) then it's triggered once and the whole thing crashes with a bus error. Duncan reported that it segfaulted for him as well.
installFinalizer fps@(P.PS fp _ _) = addForeignPtrFinalizer finalizer fp
foreign import ccall unsafe "finalizer" finalizer :: FinalizerPtr Word8
where the finalizer itself is
#include
void finalizer(char *p) { printf("--- Finalized: %x\n", p); }
This crash is due to driver error, I'm afraid. You should have written: foreign import ccall unsafe "&finalizer" finalizer :: FinalizerPtr Word8 (note the "&"). Cheers, Simon
participants (1)
-
Simon Marlow