move code from signal handlers into mainloop, avoiding a race