Re: addForeignPtrFinalizer - finalizers run in FIFO or LIFO order?
Henning Thielemann <[email protected]> Fri, 17 Aug 2012 17:34:05 +0200 (CEST)
| Newsgroups | gmane.comp.lang.haskell.ffi,gmane.comp.lang.haskell.libraries |
|---|---|
| Message-ID | <alpine.DEB.2.00.1208171732180.14583@anubis.informatik.uni-halle.de> |
On Fri, 17 Aug 2012, Henning Thielemann wrote: > The doc of base-4.5:Foreign.ForeignPtr.addForeignPtrFinalizer states: > "This function adds a finalizer to the given foreign object. The finalizer > will run before all other finalizers for the same object which have already > been registered." > > > I do > > addForeignPtrFinalizer finalize1 fp > addForeignPtrFinalizer finalize2 fp > > and let the finalizers print something when they are started. > I get the output: > > finalizer1 > finalizer2 > > This indicates that the newly added finalizer is run _after_ the finalizers > that are already registered. Is this a documentation bug or a bug in the base > library? Hm, it seems to depend on the context. In some situations I get the correct (reversed) order finalizer2 finalizer1 and in others I get finalizer1 first and then finalizer2. Any hint what can change the order of finalizers?