We run each of the signal handler tests in their own thread so that state is less likely to leak across tests.