
#8295: T4850 deadlocks when run with -Ds on Windows (also it's failing) --------------------------+------------------------------------------------ Reporter: ezyang | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: | Version: 7.7 Runtime System | Operating System: Windows Keywords: | Type of failure: Incorrect result at runtime Architecture: x86_64 | Test Case: T4850 (amd64) | Blocking: Difficulty: | Unknown | Blocked By: | Related Tickets: | --------------------------+------------------------------------------------ T4850 has been failing recently, reporting too *few* OS threads allocated. That's pretty odd. What is also odd (and much less good) is that T4850 is deadlocking when you run it with `-Ds`. Uh oh! {{{ bash.exe-3.1$ ./T4850 +RTS -Ds 7eb0: created capset 0 of type 2 7eb0: created capset 1 of type 3 7eb0: cap 0: initialised 7eb0: assigned cap 0 to capset 0 7eb0: assigned cap 0 to capset 1 7eb0: allocated 1 more capabilities 7eb0: new task (taskCount: 1) 7eb0: returning; I want capability 0 7eb0: resuming capability 0 7eb0: cap 0: created thread 1 7eb0: new bound thread (1) 7eb0: cap 0: schedule() 7eb0: cap 0: running thread 1 (ThreadRunGHC) 7eb0: cap 0: created thread 2 7eb0: cap 0: thread 1 stopped (finished) 7eb0: bound thread (1) finished 7eb0: starting new worker on capability 0 7eb0: new worker task (taskCount: 2) 7eb0: task exiting 7eb0: new task (taskCount: 2) 7eb0: returning; I want capability 0 7fc0: cap 0: schedule() 7fc0: giving up capability 0 7fc0: passing capability 0 to worker 0x7eb0 7eb0: resuming capability 0 7eb0: cap 0: created thread 3 7eb0: new bound thread (3) 7eb0: cap 0: schedule() 7eb0: giving up capability 0 7eb0: passing capability 0 to worker 0x7fc0 7fc0: woken up on capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to bound task 0x7eb0 7eb0: woken up on capability 0 7eb0: resuming capability 0 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: thread 3 stopped (suspended while making a foreign call) 7eb0: starting new worker on capability 0 7eb0: new worker task (taskCount: 3) 7eb0: returning; I want capability 0 7b50: cap 0: schedule() 7b50: giving up capability 0 7b50: passing capability 0 to bound task 0x7eb0 7eb0: resuming capability 0 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: created thread 4 7eb0: cap 0: thread 3 stopped (blocked on an MVar) thread 3 @ 00e03bbc is blocked on an MVar @ 00e021e4 (TSO_DIRTY) 7eb0: giving up capability 0 7eb0: passing capability 0 to worker 0x7b50 7b50: woken up on capability 0 7b50: resuming capability 0 7b50: cap 0: running thread 4 (ThreadRunGHC) 7b50: cap 0: thread 4 stopped (suspended while making a foreign call) 7b50: starting new worker on capability 0 7b50: new worker task (taskCount: 4) 7b50: new task (taskCount: 4) 7b50: returning; I want capability 0 7de4: cap 0: schedule() 7de4: giving up capability 0 7de4: passing capability 0 to worker 0x7b50 7b50: resuming capability 0 7b50: cap 0: created thread 5 7b50: new bound thread (5) 7b50: cap 0: schedule() 7b50: cap 0: running thread 5 (ThreadRunGHC) 7b50: cap 0: thread 5 stopped (finished) 7b50: bound thread (5) finished 7b50: freeing capability 0 7b50: task exiting 7b50: returning; I want capability 0 7b50: resuming capability 0 7b50: cap 0: running thread 4 (ThreadRunGHC) 7b50: cap 0: waking up thread 3 on cap 0 7b50: cap 0: thread 4 stopped (finished) 7b50: giving up capability 0 7b50: passing capability 0 to bound task 0x7eb0 7eb0: woken up on capability 0 7eb0: resuming capability 0 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: thread 3 stopped (suspended while making a foreign call) 7eb0: freeing capability 0 7eb0: returning; I want capability 0 7eb0: resuming capability 0 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: thread 3 stopped (suspended while making a foreign call) 7eb0: freeing capability 0 4 7eb0: returning; I want capability 0 7eb0: resuming capability 0 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: created thread 6 7eb0: cap 0: thread 3 stopped (blocked on an MVar) thread 3 @ 00e03bbc is blocked on an MVar @ 00e021e4 (TSO_DIRTY) 7eb0: giving up capability 0 7eb0: passing capability 0 to worker 0x7b50 7b50: woken up on capability 0 7b50: resuming capability 0 7b50: cap 0: running thread 6 (ThreadRunGHC) 7b50: cap 0: thread 6 stopped (suspended while making a foreign call) 7b50: freeing capability 0 7b50: new task (taskCount: 4) 7b50: returning; I want capability 0 7b50: resuming capability 0 7b50: cap 0: created thread 7 7b50: new bound thread (7) 7b50: cap 0: schedule() 7b50: cap 0: running thread 7 (ThreadRunGHC) 7b50: cap 0: thread 7 stopped (finished) 7b50: bound thread (7) finished 7b50: freeing capability 0 7b50: task exiting 7b50: returning; I want capability 0 7b50: resuming capability 0 7b50: cap 0: running thread 6 (ThreadRunGHC) 7b50: cap 0: waking up thread 3 on cap 0 7b50: cap 0: thread 6 stopped (finished) 7b50: giving up capability 0 7b50: passing capability 0 to bound task 0x7eb0 7eb0: woken up on capability 0 7eb0: resuming capability 0 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: thread 3 stopped (suspended while making a foreign call) 7eb0: freeing capability 0 7eb0: returning; I want capability 0 7eb0: resuming capability 0 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: thread 3 stopped (suspended while making a foreign call) 7eb0: freeing capability 0 4 7eb0: returning; I want capability 0 7eb0: resuming capability 0 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: thread 3 stopped (yielding) 7eb0: cap 0: running thread 3 (ThreadRunGHC) 7eb0: cap 0: thread 3 stopped (finished) 7eb0: bound thread (3) finished 7eb0: freeing capability 0 7eb0: task exiting 7eb0: new task (taskCount: 4) 7eb0: returning; I want capability 0 7eb0: resuming capability 0 7eb0: cap 0: created thread 8 7eb0: new bound thread (8) 7eb0: cap 0: schedule() 7eb0: cap 0: running thread 8 (ThreadRunGHC) 7eb0: cap 0: thread 8 stopped (finished) 7eb0: bound thread (8) finished 7eb0: freeing capability 0 7eb0: task exiting 7eb0: new task (taskCount: 4) 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7eb0: returning; I want capability 0 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (suspended while making a foreign call) 7fc0: passing capability 0 to worker 0x7eb0 7fc0: returning; I want capability 0 7fc0: resuming capability 0 7fc0: cap 0: running thread 2 (ThreadRunGHC) 7fc0: cap 0: thread 2 stopped (yielding) 7fc0: SCHED_INTERRUPTING 7fc0: cap 0: requesting sequential GC 7fc0: grabbing all the capabilies (0/1) all threads: threads on capability 0: thread 2 @ 00e037bc is not blocked (TSO_DIRTY) other threads: 7fc0: deleting all threads 7fc0: cap 0: raising exception in thread 2. 7fc0: cap 0: starting GC 7fc0: cap 0: GC working 7fc0: cap 0: GC idle 7fc0: cap 0: GC done 7fc0: cap 0: GC idle 7fc0: cap 0: GC done 7fc0: cap 0: GC idle 7fc0: cap 0: GC done 7fc0: cap 0: all caps stopped for GC 7fc0: cap 0: finished GC 7fc0: SCHED_SHUTTING_DOWN 7fc0: giving up capability 0 7fc0: passing capability 0 to worker 0x7eb0 7eb0: resuming capability 0 7eb0: passing capability 0 to worker 0x7fc0 7eb0: shutting down capability 0, attempt 0 7fc0: woken up on capability 0 7eb0: runnable threads or workers still alive, yielding 7eb0: passing capability 0 to worker 0x7fc0 7eb0: shutting down capability 0, attempt 1 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 2 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 3 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 4 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 5 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 6 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 7 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 8 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 9 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 10 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 11 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 12 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 13 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 14 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 15 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 16 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 17 7eb0: not owner, yielding 7eb0: shutting down capability 0, attempt 18 7eb0: not owner, yielding ... }}} ad infinitum. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8295 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler