#5897: GHC runtime task workers are not released with C FFI
-------------------------------+--------------------------------------------
  Reporter:  sanketr           |          Owner:                
      Type:  bug               |         Status:  new           
  Priority:  highest           |      Milestone:  7.4.2         
 Component:  Runtime System    |        Version:  7.4.1         
Resolution:                    |       Keywords:  worker, ffi   
        Os:  Unknown/Multiple  |   Architecture:  x86_64 (amd64)
   Failure:  None/Unknown      |     Difficulty:  Unknown       
  Testcase:                    |      Blockedby:                
  Blocking:                    |        Related:  #4262         
-------------------------------+--------------------------------------------

Comment(by sanketr):

 Sorry, comment system mangled the steps. Here it is again:

 In case it is not clear right away from the code, here is the sequence of
 execution from timerevent when forking FFI threads:


 {{{
 - timerevent forks sendSignal threads - it forks n threads corresponding
 to n C FFI threads
 - timerevent now waits on a list of mvar m2 - list has n elements, one
 corresponding to each sendSignal thread
 - each sendSignal thread calls back syncWithC function - puts an element
 in m2, and waits on m1
 - timerevent gets all m2, and puts 0 in list of m1
 - Each syncWithC thread (which was called back by sendSignal) gets its
 corresponding m1, and finishes.
 sendSignal is done. Those FFI threads are now finished.

 }}}

 So, if sendSignal is finished (otherwise the code will deadlock if mvars
 are not put/taken in right order), the number of worker threads shouldn't
 keep increasing with each iteration of timerevent.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5897#comment:10>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to