Running a "final" finaliser

Adrian Hey ahey at iee.org
Tue Dec 23 07:26:53 EST 2003


On Monday 22 Dec 2003 8:53 pm, Carl Witty wrote:
> >  > Thanks for your reply. I'm afraid it's left me even
> > >
> > > more confused about which way to go with this :-(
>
> Is your problem something you could handle with a C atexit() handler?

That's a good idea. With ghc I guess this will work, assuming..
1- ghc rts runs all ForeignPtr finalisers before it shutsdown.
2- ghc rts is shutdown before atexit handlers are executed. 

I both think 1 & 2 are true with ghc at present, but Simon M.
indicated that 1 might not be true in future for ghc (or other
Haskell implementations). That said, the current FFI spec
states at bottom of p.14..

"There is no guarantee on how soon the finalizer is executed
after the last reference to the associated foreign pointer
was dropped; this depends on the details of the Haskell storeage
manager. The only guarantee is that the finalizer runs before
the program terminates."

So I'm still confused :-)

Actually, though I think it would work for me, it's probably
not as general as some folk might want (they might want to
shutdown the library and free up whatever resources it claimed
earlier in program execution, not just at exit).

Regards
--
Adrian Hey




More information about the Glasgow-haskell-users mailing list