+++ This bug was initially created as a clone of Bug #726199 +++
Description of problem:
Performing a wait on the pid of a co-process fails in the following circumstance:
ls -l |&
tee -a /tmp/out <&p
The wait's return value is always 127. It does not matter whether the co-process exits with a successful value (e.g., "ls -l") or an unsuccessful value (e.g., "ls -l does-not-exist"); 127 is always returned.
POSIX documentation on wait(1) (http://pubs.opengroup.org/onlinepubs/009695399/utilities/wait.html) states "If one or more pid operands are specified that represent unknown process IDs, wait shall treat them as if they were known process IDs that exited with exit status 127" and later on (in "Exit Status") indicates that 127 is returned only if "[t]he command identified by the last pid operand specified is unknown."
We are porting our application to Linux and ran across this problem. The sample code works correctly under the Korn shell (ksh88) supplied by AIX, HP-UX, and Solaris. It also works correctly under the pdksh-5.2.14-30.6 distributed with RHEL 4.8.
Version-Release number of selected component (if applicable):
I've compiled a number of different ksh SRPMS. The problem is present in ksh-20100202-1.el5 and persists in ksh-20100202-1.el5_6.6, as well in ksh-20100621-2.el6 and ksh-20100621-6.el6. However, the problem is not present in ksh-20080202-2.el5 or ksh-20080202-2.el5_3.1.
Steps to Reproduce:
Run sample code above.
Return value of wait is always 127.
wait returns status of specified command
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.