crosvm/sys_util
Daniel Verkamp 186eb8b0db sys_util: wait on specific pid in panic_safe test
The fork::tests::panic_safe unit test has been hanging intermittently in
CQ runs.  The root cause isn't understood yet, but the most likely
explanation seems to be that the wait_process helper is hanging.
There should be only two causes for that hang: either the cloned process
is not exiting, or the wait() call in wait_process is not returning.
The wait() should only hang if another thread has already reaped the
cloned process.

In order to help debug the issue, change the general wait() to a
waitpid() on the specific cloned process ID.  This will give us more
information about what happens when the test fails - if the waitpid()
returns ECHILD instead of hanging, this will indicate that something
else is waiting on our child process and racing with our wait().

BUG=chromium:925725
TEST=cargo test --release -p sys_util panic_safe

Change-Id: Ib25d88b35b16c75d4d8fe62fc779c9470303368a
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1444317
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
2019-01-30 01:26:15 -08:00
..
poll_token_derive build: Restore ability to compile data_model and sys_util in isolation 2019-01-18 00:46:02 -08:00
src sys_util: wait on specific pid in panic_safe test 2019-01-30 01:26:15 -08:00
Cargo.toml build: Restore ability to compile data_model and sys_util in isolation 2019-01-18 00:46:02 -08:00