id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 13139,child::join() incorrectly throws `waitpid(2) failed: No child processes` if child exited abnormally,keithb@…,,"Create a child process. Let it die abnormally (for example, calling `kill(getpid(), SIGABRT)` in the child). In the parent, call `child.join()`. It appears that the `::waitpid` loop in `boost::process::detail::posix::wait` at github.com/boostorg/process/blob/boost-1.64.0/include/boost/process/detail/posix/wait_for_exit.hpp#L26-L31 only checks that the child ended because of a call to `::exit()` and does not check for exiting via signal (`WIFSIGNALED()`). Because `WIFSIGNALED()` is true, `WIFEXITED()` is false; and because it's false, the loop will continue and call `::waitpid()` again... this time with a child PID to a process which has already been reaped. `waitpid()` will report an error (indicating that there's no such child prcess), and the error will be thrown. The child's exact reason for exiting is lost, which is why I believe this should be marked a ""Showstopper"" severity; a workaround would be to avoid calling `boost::process::wait()` in any fashion and to instead use a custom waitpid loop using the `child.native_handle()`.",Bugs,new,To Be Determined,process,Boost 1.64.0,Problem,,,