[PATCH] stop asserting that child.kill() fails after wait I've confirmed that this test still fails if we reap the child using waitpid():
-->8-- │ diff --git a/src/lib.rs b/src/lib.rs │ index ca08e94..2b1479d 100644 │ --- a/src/lib.rs │ +++ b/src/lib.rs │ @@ -171,7 +171,12 @@ impl SharedChild { │ // and signal the state condvar. │ let mut state = self.state_lock.lock().unwrap(); │ // The child has already exited, so this wait should clean up without blocking. │ - let final_result = noreap_result.and_then(|_| self.child.lock().unwrap().wait()); │ + let final_result = noreap_result.and_then(|_| unsafe { │ + let mut status = 0; │ + let pid = self.child.lock().unwrap().id() as libc::pid_t; │ + libc::waitpid(pid, &mut status, 0); │ + Ok(std::os::unix::process::ExitStatusExt::from_raw(status)) │ + }); │ *state = if let Ok(exit_status) = final_result { │ Exited(exit_status) │ } else { -->8--
Fails with:
---- tests::test_into_inner_after_wait stdout ---- thread 'tests::test_into_inner_after_wait' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 10, kind: Uncategorized, message: "No child processes" }', src/lib.rs:410:22