finaliser of a ForeignPtr called while references from unreachable threads exist
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
I'm hoping that this is useful to someone who knows the RTS.
Cheers,
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Runtime System |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | Linux |
Architecture | x86_64 (amd64) |