[Haskell-cafe] GHC threaded RTS will call the finaliser of a
ForeignPtr while references still exist
Adam Langley
agl at imperialviolet.org
Sun Mar 16 23:40:41 EDT 2008
I believe that I've managed to distill a crash which has been driving
me crazy for a few days into a short enough test case (22 lines) that
it might be useful.
In short: the threaded RTS will call the finialiser of a ForeignPtr
while an exception handler still holds a reference to it:
% ghc -make fptest.hs cbits.c -threaded
[1 of 1] Compiling Main ( fptest.hs, fptest.o )
Linking fptest ...
% ./fptest
New object getting created: 66f010
Finaliser getting called for 66f010
Use called for 66f010
cbits.c: http://hpaste.org/6420
fptest.hs: http://hpaste.org/6421
I'm hoping that this is useful to someone who knows the RTS.
Cheers,
--
Adam Langley agl at imperialviolet.org http://www.imperialviolet.org
More information about the Haskell-Cafe
mailing list