vkernel - do not set SA_NODEFER for SIGIO and SIGUSR1
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 29 Jul 2011 08:21:59 +0000 (01:21 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 29 Jul 2011 08:21:59 +0000 (01:21 -0700)
* Do not set SA_NODEFER for SIGIO and SIGUSR1 in vkernels.  This fixes a
  stack overflow which can occur under heavy I/O or IPI loads.

sys/platform/vkernel/i386/exception.c
sys/platform/vkernel64/x86_64/exception.c

index a866b41..e274e26 100644 (file)
@@ -169,6 +169,8 @@ init_exceptions(void)
        sigaction(SIGTRAP, &sa, NULL);
        sigaction(SIGFPE, &sa, NULL);
 
+       sa.sa_flags &= ~SA_NODEFER;
+
 #ifdef DDB
        sa.sa_sigaction = exc_debugger;
        sigaction(SIGQUIT, &sa, NULL);
index cb266e3..e7c240f 100644 (file)
@@ -174,6 +174,8 @@ init_exceptions(void)
        sigaction(SIGTRAP, &sa, NULL);
        sigaction(SIGFPE, &sa, NULL);
 
+       sa.sa_flags &= ~SA_NODEFER;
+
 #ifdef DDB
        sa.sa_sigaction = exc_debugger;
        sigaction(SIGQUIT, &sa, NULL);