Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
When a ksh script contained the "trap" command to capture a "SIGPIPE" signal, sending this signal via the built-in "echo" command could cause its output to be incorrectly added to the redirected output of an external command. With this update, ksh now flushes the output buffer before redirecting any output streams.
DescriptionMichal Hlavinka
2010-07-21 07:53:06 UTC
+++ This bug was initially created as a clone of Bug #615284 +++
Description of problem:
In a ksh script, when SIGPIPE trap action is specified and SIGPIPE occurs by the output of the built-in echo command, the output appears in a redirect file of a external command.
Version-Release number of selected component (if applicable):
ksh-20100202-1.el5
How reproducible:
Always
Steps to Reproduce:
Run the following scripts with
ssh localhost /path/to/the/script.ksh >/dev/null
Steps to reproduce:
Case 1:
-------
the script.ksh is:
#!/bin/ksh
killparent()
{
sleep 1
/bin/kill -9 $1
}
trap "/bin/echo trap > /dev/null" 13
killparent ${PPID} &
/usr/bin/yes
print "echo1"
/bin/echo "echo2" > /tmp/echo2
trap 13
After running the script with ssh print the contents of the resulting file:
# cat /tmp/echo2
Actual results:
echo1
echo2
Expected results:
echo2
Case 2:
-------
the script.ksh is
#!/bin/ksh
killparent()
{
sleep 1
/bin/kill -9 $1
}
trap "/bin/echo trap >> /tmp/trap" 13
killparent ${PPID} &
/usr/bin/yes
echo "echo1"
/bin/echo "echo2"
trap 13
After running the script with ssh print the contents of the resulting file:
# cat /tmp/trap
Actual results:
echo1
trap
trap
Expected results:
trap
trap
Additional information:
Seems that the output of the echo builtin command is buffered and the buffer is flushed upon forking a child process. However when the flush fails the content of the buffer is not erased and then appears in where it should not.
Maybe the ksh should either delete the buffer after flush (even unsucessful), not to buffer the echo output or not to buffer the redirection output.
--- Additional comment from mhlavink on 2010-07-21 03:49:56 EDT ---
patch attached in original bug
Technical note added. If any revisions are required, please edit the "Technical Notes" field
accordingly. All revisions will be proofread by the Engineering Content Services team.
New Contents:
* When a ksh script contained the "trap" command to capture a "SIGPIPE" signal, sending this signal via the built-in "echo" command could cause its output to be incorrectly added to the redirected output of an external command. With this update, ksh now flushes the output buffer before redirecting any output streams.
Technical note updated. If any revisions are required, please edit the "Technical Notes" field
accordingly. All revisions will be proofread by the Engineering Content Services team.
Diffed Contents:
@@ -1 +1 @@
-* When a ksh script contained the "trap" command to capture a "SIGPIPE" signal, sending this signal via the built-in "echo" command could cause its output to be incorrectly added to the redirected output of an external command. With this update, ksh now flushes the output buffer before redirecting any output streams.+When a ksh script contained the "trap" command to capture a "SIGPIPE" signal, sending this signal via the built-in "echo" command could cause its output to be incorrectly added to the redirected output of an external command. With this update, ksh now flushes the output buffer before redirecting any output streams.
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.
http://rhn.redhat.com/errata/RHBA-2011-0645.html