diff --git a/src/context/signal.rs b/src/context/signal.rs
index fc8e462698406bdda6a8f295a449bde7a700e64c..a19376af3a41879f5f80111159f6ae9780cac04b 100644
--- a/src/context/signal.rs
+++ b/src/context/signal.rs
@@ -15,7 +15,7 @@ pub extern "C" fn signal_handler(sig: usize) {
         actions[sig]
     };
 
-    let handler = action.sa_handler as usize;
+    let handler = action.sa_handler.map(|ptr| ptr as usize).unwrap_or(0);
     if handler == SIG_DFL {
         match sig {
             SIGCHLD => {
diff --git a/syscall b/syscall
index eddcb80eb7c2d43dedf0ba2ee514b54b0b8fafc7..f3bb1f7b68bc8e5544857781de9eb8729b2843f4 160000
--- a/syscall
+++ b/syscall
@@ -1 +1 @@
-Subproject commit eddcb80eb7c2d43dedf0ba2ee514b54b0b8fafc7
+Subproject commit f3bb1f7b68bc8e5544857781de9eb8729b2843f4