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 parentFork
? - 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 |