Isaac Dunham pointed out that SIGINT's handler was set twice in init.c.
diff --git a/toys/pending/init.c b/toys/pending/init.c
index 8d0d3f0..d9e78ff 100644
--- a/toys/pending/init.c
+++ b/toys/pending/init.c
@@ -473,7 +473,6 @@
   sigaction(SIGTSTP, &sig_act, NULL);
   memset(&sig_act, 0, sizeof(sig_act));
   sig_act.sa_handler = catch_signal;
-  sigaction(SIGINT, &sig_act, NULL);
   sigaction(SIGHUP, &sig_act, NULL);  
   run_action_from_list(SYSINIT);
   check_if_pending_signals();