Skip to content

runProcess: misbehaving exception on nonexistent working directory

Compiling and running the attached Fork.hs gives unexpected results:

  • The first line is mostly OK: the working directory does not exist.

(Unfortunately it's not clear from the message what does not exist...)

  • The ensuing ps output is also OK, but already shows strange

process states and hierarchy:

  • Why is the parent Fork in D state?
  • Why is ps a grandchild of it, instead of being another child of the parent Fork?
  • The last line is Segmentation fault, which is bad.
$ ./Fork
sleep: runProcess: does not exist (No such file or directory)
  PID TTY      STAT   TIME COMMAND
 3504 ?        Ss     0:00 urxvt
 3505 ?        S      0:00  \_ urxvt
 3506 pts/1    Ss     0:00  \_ bash
 5571 pts/1    D+     0:00      \_ ./Fork
 5572 pts/1    S+     0:00          \_ ./Fork
 5573 pts/1    R+     0:00              \_ ps xf
Segmentation fault

(I elided the irrelevant part of the ps output.)

Somebody on IRC got Bus error instead. Others, testing under GHC 6.8, did not even get an exception. I have got the impression that exception handling inside or around runProcess is broken.

Trac metadata
Trac field Value
Version 6.6.1
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component libraries/process
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information