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)
committerVenkatesh Srinivas <me@endeavour.zapto.org>
Sat, 30 Jul 2011 10:51:33 +0000 (03:51 -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 8b770ef..ab717c9 100644 (file)
@@ -154,6 +154,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 34ef724..7a4b764 100644 (file)
@@ -159,6 +159,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);