diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 094d348ac93457cba4e115867664b9082cae5732..aeeeab307c3dbf410cabb7563dcab9a1f8a0417a 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -295,7 +295,10 @@ (define (call-with-sigint-handler thunk handler)
                         (lambda (signum)
                           (sigaction SIGINT SIG_DFL)
                           (abort-to-prompt %sigint-prompt signum)))
-                      (thunk))
+                      (dynamic-wind
+                        (const #t)
+                        thunk
+                        (cut sigaction SIGINT SIG_DFL)))
                     (lambda (k signum)
                       (handler signum))))