On platforms without execv(), we must spawn a separate subprocess.
This breaks down when an internal autoreload is firing in a wrapped
process, since the internal reload raises an exception with the
wrapper catches (triggering a second reload and another copy of the
process).