PyTorCtl shouldn't os.kill() itself
In order to ensure we died properly from uncaught exceptions in user-written event threads, I hacked in an os.kill() into the event loop that catches these exceptions, because sys.exit() only exits the thread, and os._exit() doesn't call atexit handlers. os.kill() does call the atexit handlers, but it causes the return value of the interpreter to be the signal used. This exit value breaks out bw authority parent/child model, which relies on exit codes to properly detect child death and respawn.