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
psoutput is also OK, but already shows strange
process states and hierarchy:
- Why is the parent
Forkin D state? - Why is
psa 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 |