Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
stop asserting that child.kill() fails after wait
I've confirmed that this test still fails if we reap the child using waitpid(): 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 { 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
- Loading branch information