Red Hat Bugzilla – Bug 364321
misused pipe breaks update of selinux-policy-targeted
Last modified: 2014-01-21 17:59:58 EST
Description of problem:
yum starts rpm scripts with their outputs set to a pipe that only the yum
process itself can read from, and waits for them to complete before it will
attempt to read from the pipe.
If the scriptlet generates more output than the pipe buffer, (e.g., fixfiles run
by the selinux-policy-targeted update), the update will hang forever
Version-Release number of selected component (if applicable):
yum-3.2.7-1.fc7 updating to selinux-policy-targeted-2.6.4-49.fc7
Steps to Reproduce:
1.ssh hostname -l root yum -y update selinux-policy-target
Prints "Updating selinux-policy-targeted" progress bar then deadlocks wait()ing
for the rpm %post script to complete, while restorecon and fixfiles write to the
pipe whose buffer is full and nobody is reading from.
No such deadlock, output buffered in separate thread or process or sent straight
to the update initiator.
cat /proc/<yumpid>/fd/32 (that was the read end of the pipe) enabled the update
to complete on my end. The file descriptor was the same on two different
machines, but then, the same updates were running on them, so I can't tell
whether it was just a coincidence or something that can be relied upon.
*** Bug 365011 has been marked as a duplicate of this bug. ***
This is closed in 3.2.8 in updates released!