bug 783453 is another example of a dmidecode hang; F16 does not (yet) have the two patches mentioned in that bug:
commit 06b9c5b9231ef4dbd4b5ff69564305cd4f814879
Author: Michal Privoznik <email address hidden>
Date: Tue Jan 3 18:40:55 2012 +0100
virCommand: Properly handle POLLHUP
It is a good practise to set revents to zero before doing any poll().
Moreover, we should check if event we waited for really occurred or
if any of fds we were polling on didn't encountered hangup.
virCommandProcessIO(): make poll() usage more robust
POLLIN and POLLHUP are not mutually exclusive. Currently the following
seems possible: the child writes 3K to its stdout or stderr pipe, and
immediately closes it. We get POLLIN|POLLHUP (I'm not sure that's possible
on Linux, but SUSv4 seems to allow it). We read 1K and throw away the
rest.
But it is not certain whether those two patches are all that's needed, or whether we need yet a third patch backported to the F16 build.
bug 783453 is another example of a dmidecode hang; F16 does not (yet) have the two patches mentioned in that bug:
commit 06b9c5b9231ef4d bd4b5ff69564305 cd4f814879
Author: Michal Privoznik <email address hidden>
Date: Tue Jan 3 18:40:55 2012 +0100
virCommand: Properly handle POLLHUP
It is a good practise to set revents to zero before doing any poll().
Moreover, we should check if event we waited for really occurred or
if any of fds we were polling on didn't encountered hangup.
commit d19149dda888d36 cea58b6cdf7446f 98bd1bf734
Author: Laszlo Ersek <email address hidden>
Date: Tue Jan 24 15:55:19 2012 +0100
virCommandP rocessIO( ): make poll() usage more robust
POLLIN and POLLHUP are not mutually exclusive. Currently the following
seems possible: the child writes 3K to its stdout or stderr pipe, and
immediately closes it. We get POLLIN|POLLHUP (I'm not sure that's possible
on Linux, but SUSv4 seems to allow it). We read 1K and throw away the
rest.
But it is not certain whether those two patches are all that's needed, or whether we need yet a third patch backported to the F16 build.