• Simon Marlow's avatar
    Partial fix for #926 · e4fdc426
    Simon Marlow authored
    It seems that when a program exits with open DLLs on Windows, the
    system attempts to shut down the DLLs, but it also terminates (some
    of?) the running threads.  The RTS isn't prepared for threads to die
    unexpectedly, so it sits around waiting for its workers to finish.
    This bites in two places: ShutdownIOManager() in the the unthreaded
    RTS, and shutdownCapability() in the threaded RTS.  So far I've
    modified the latter to notice when worker threads have died
    unexpectedly and continue shutting down.  It seems a bit trickier to
    fix the unthreaded RTS, so for now the workaround for #926 is to use
    the threaded RTS.
Capability.c 21.4 KB