hs_exit()/shutdownHaskell(): wait for outstanding foreign calls to complete before...
authorSimon Marlow <simonmar@microsoft.com>
Tue, 24 Jul 2007 15:30:57 +0000 (15:30 +0000)
committerSimon Marlow <simonmar@microsoft.com>
Tue, 24 Jul 2007 15:30:57 +0000 (15:30 +0000)
commit681aad99cb29ce54f72ec2a916fb1aab0fa0fabb
tree65e13d3bc1acad8b859e63886c5e5ea429f7236f
parent1bd1fb932375bc4b065cc8de23f0d251e8075395
hs_exit()/shutdownHaskell(): wait for outstanding foreign calls to complete before returning
This is pertinent to #1177.  When shutting down a DLL, we need to be
sure that there are no OS threads that can return to the code that we
are about to unload, and previously the threaded RTS was unsafe in
this respect.

When exiting a standalone program we don't have to be quite so
paranoid: all the code will disappear at the same time as any running
threads.  Happily exiting a program happens via a different path:
shutdownHaskellAndExit().  If we're about to exit(), then there's no
need to wait for foreign calls to complete.
rts/Capability.c
rts/Capability.h
rts/RtsStartup.c
rts/Schedule.c
rts/Schedule.h