[GHC] #9295: Deadlock in forkProcess

GHC ghc-devs at haskell.org
Fri Jul 11 10:54:38 UTC 2014


#9295: Deadlock in forkProcess
------------------------------------+-------------------------------------
       Reporter:  edsko             |             Owner:
           Type:  bug               |            Status:  new
       Priority:  normal            |         Milestone:
      Component:  Compiler          |           Version:  7.8.2
       Keywords:                    |  Operating System:  Unknown/Multiple
   Architecture:  Unknown/Multiple  |   Type of failure:  None/Unknown
     Difficulty:  Unknown           |         Test Case:
     Blocked By:                    |          Blocking:
Related Tickets:                    |
------------------------------------+-------------------------------------
 As part of `forkProcess` we discard all tasks except the one task that
 remains. As part of this we call `freeTask`, and `freeTask` in turn calls
 `closeCondition` and `closeMutex`, which are very thin wrappers around
 `pthread_cond_destroy` and `phread_mutex_destroy`. However, the behaviour
 of these functions is undefined when there are currently threads blocked
 on these condition variables/mutexes. In reality, this undefined behaviour
 often (though not always) results in a deadlock. Unfortunately, I don't
 have a minimal test case to demonstrate this, but in the large system on
 which I am testing this I am seeing these deadlocks rather frequently.

 For the global mutex we don't attempt to call `pthread_cond_destroy` or
 `pthread_mutex_destroy`, but instead re-initialize them. The patch

 https://phabricator.haskell.org/D59

 does precisely that for the condition variables and mutexes associated
 with tasks. This is ''somewhat'' or a long way around, because we will
 then subsequently still call `pthread_..._destroy`, but it means that we
 don't have to mess with `freeTask`.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9295>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list