The attached script hits some "This should never happen" code in the subprocess module.
These lines here:
https://github.com/python/cpython/blob/2.7/Lib/subprocess.py#L1036-L1038
The root cause is a lack of checking WIFSTOPPED and WSTOPSIG in the handler.
When a process elects into being ptraced via PTRACE_TRACEME, it is stopped on the SIGSEGV instead of terminating, allowing the user to attach a debugger before the kernel destroys the process.
This bug makes it impossible to wait on any process which crashes, which is set up to wait for a debugger.