How to synchronously shutdown the event manager loop

Bas van Dijk v.dijk.bas at
Wed Aug 31 01:11:12 CEST 2011

On 31 August 2011 00:15, Bas van Dijk <v.dijk.bas at> wrote:
> I see what I can do. I'm first going to export the 'finished' function
> from GHC.Event and use that to wait till the loop finishes and see if
> that solves my problem.

Waiting till the loop finishes doesn't solve the problem.

Here's an isolated program with the same problem that doesn't use the
usb library:

import Control.Concurrent
import GHC.Event

main = do
  em <- new
  forkIO $ loop em
  threadDelay 2000000
  shutdown em
  threadDelay 2000000

When executed it prints:

example: ioManagerWakeup: write: Bad file descriptor
example: ioManagerDie: write: Bad file descriptor

So it seems like a bug in GHC. I will create a ticket in the morning.



More information about the Glasgow-haskell-users mailing list