From: Simon Marlow Date: Thu, 1 Apr 2010 10:07:05 +0000 (+0000) Subject: Make ioManagerDie() idempotent X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=6c3f7b65603359ed605062835a62da9f9bd229d6 Make ioManagerDie() idempotent Avoids screeds of "event buffer overflowed; event dropped" in conc059(threaded1). --- diff --git a/rts/win32/ThrIOManager.c b/rts/win32/ThrIOManager.c index 50dd4fb..35f1b5e 100644 --- a/rts/win32/ThrIOManager.c +++ b/rts/win32/ThrIOManager.c @@ -123,6 +123,10 @@ void ioManagerDie (void) { sendIOManagerEvent(IO_MANAGER_DIE); + // IO_MANAGER_DIE must be idempotent, as it is called + // repeatedly by shutdownCapability(). Try conc059(threaded1) to + // illustrate the problem. + io_manager_event = INVALID_HANDLE_VALUE; // ToDo: wait for the IO manager to pick up the event, and // then release the Event and Mutex objects we've allocated. }