|
From: | Eric Blake |
Subject: | Re: [Qemu-devel] [PATCH v2 2/1] libqtest: add more exit status checks |
Date: | Thu, 24 May 2018 13:16:24 -0500 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
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
[Prev in Thread] | Current Thread | [Next in Thread] |