[GHC] #5212: waitForProcess: does not exist (No child processes)

GHC ghc-devs at haskell.org
Fri Jul 5 01:53:48 CEST 2013


#5212: waitForProcess: does not exist (No child processes)
------------------------------------------+---------------------------------
  Reporter:  chrisdone                    |          Owner:                
      Type:  bug                          |         Status:  new           
  Priority:  normal                       |      Milestone:                
 Component:  Runtime System               |        Version:  7.4.2         
Resolution:                               |       Keywords:                
        Os:  Linux                        |   Architecture:  x86_64 (amd64)
   Failure:  Incorrect result at runtime  |     Difficulty:                
  Testcase:                               |      Blockedby:                
  Blocking:                               |        Related:                
------------------------------------------+---------------------------------
Changes (by chrisdone):

  * status:  closed => new
 * cc: chrisdone@… (added)
  * component:  GHC API => Runtime System
  * version:  6.12.3 => 7.4.2
  * owner:  chrisdone =>
  * resolution:  worksforme =>


Comment:

 Oddly, two years later I am experiencing the same problem. I was never
 able to reproduce it outside of production, which was a machine I had no
 control over. In the end I worked around it by running: catch
 (waitForProcess pid >>= return) (\_ -> return $ ExitSuccess) However, that
 was a workaround, not a solution.

 This time with a completely different codebase, XMonad, I can reproduce it
 in few lines of code:

 Here's a test-case:

 {{{
 import Control.Concurrent
 import System.Process
 import XMonad
 import XMonad.Config

 main = do
   forkIO $ xmonad defaultConfig
   readProcess "ghc" ["--version"] "" >>= putStrLn
 }}}

 Compile and run like this (make sure you don't have xmonad already
 running):

 {{{
 chris at retina:~$ ghc --make X.hs -threaded
 [1 of 1] Compiling Main             ( X.hs, X.o )
 Linking X ...
 chris at retina:~$ ./X
 X: waitForProcess: does not exist (No child processes)
 }}}

 The GHC version is 7.4.2, but it perhaps it's not so much a GHC bug but
 some behaviour of the runtime system and interaction with exceptions that
 is subtle or unclear to me.

 Can anyone reproduce, and if so, why does this happen? If you comment out
 the forkIO line, the program succeeds.

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



More information about the ghc-tickets mailing list