On 05/24/2018 11:01 AM, Michael S. Tsirkin wrote:
On Thu, May 24, 2018 at 11:00:19AM -0500, Eric Blake wrote:
On 05/24/2018 10:52 AM, Eric Blake wrote:

Also, since waitpid() can only return either s->qemu_pid or -1 as we
aren't using WNOHANG, it may also be worth asserting that if pid == -1,
we either have EAGAIN (but why aren't we looping in that case?) or
ECHILD.

I meant EINTR, not EAGAIN.  But in general, using waitpid() to collect
process status without doing it in a loop is risky.

Interesting. Risky how?

If your process has any signal handler installed, then an EINTR failure means you interpret a transient failure to grab process status (because your check was interrupted by something else) as a permanent failure, unless you go back to another waitpid() in a loop.

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Reply via email to