That paper seems interesting, I'll have a look at it.there should be no system guarantee that finalizers are run on program exit
Currenlty, the libraries rely on finalizers being run on program exit - the buffers for stdout and stderr have to be flushed (they are maintained in haskell land, so it's nothing that the OS takes care of). I didn't want to make extensive changes to the library, so I still made finalizers run on exit. I, too think that this should be changed at some point in the future.
| *) Conc031, conc033 and conc034 fail (hang) because deadlock detectionThe reason is that I don't know how to make it work correctly in the presence of foreign code running in parallel with the RTS.
| is disabled.
Maybe I missed it: is there a good reason for disabling it?
If all haskell threads are deadlocked, it is _not correct_ to terminate the program, because there might be foreign code that is about to call a foreign exported function. I'm not even sure if we can trigger garbage collection whenever there are no haskell threads or when all haskell threads are deadlocked --- this might be bad for the performance of a program where haskell code is called repeatedly from a foreign-language main loop.
Of course, the patch only disables deadlock detection for the threaded RTS, the traditional RTS is not affected.
Cheers,
Wolfgang
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc
