]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-softsig-dont-block-critical-signals-20030411
authorDerrick Brashear <shadow@dementia.org>
Fri, 11 Apr 2003 18:50:48 +0000 (18:50 +0000)
committerDerrick Brashear <shadow@dementia.org>
Fri, 11 Apr 2003 18:50:48 +0000 (18:50 +0000)
blocking these seems to prevent all threads from dying when the kernel
gives e.g. SIGSEGV to one of the processes. since softsig is to protect us
from what signals we handle might do in the handler, this should be fine

(cherry picked from commit 8cb30fa5fb6084f5a6b67120ab1155b7da029e9f)

src/util/pthread_nosigs.h

index 8f84fc2cb51bc0dd925a24999b1d2e6076ac8084..fe747725701c37568073d7b839a01e210bdacfc6 100644 (file)
 #else
 #define AFS_SET_SIGMASK pthread_sigmask
 #endif
+#ifdef SIGSEGV 
+#define _SETSEGV sigdelset(&i_tset, SIGSEGV); 
+#else
+#define _SETSEGV ;
+#endif 
+#ifdef SIGBUS 
+#define _SETBUS sigdelset(&i_tset, SIGBUS); 
+#else 
+#define _SETBUS ;
+#endif 
+#ifdef SIGILL 
+#define _SETILL sigdelset(&i_tset, SIGILL); 
+#else
+#define _SETILL ;
+#endif 
+#ifdef SIGTRAP 
+#define _SETTRAP sigdelset(&i_tset, SIGTRAP); 
+#else
+#define _SETTRAP ;
+#endif 
+#ifdef SIGABRT 
+#define _SETABRT sigdelset(&i_tset, SIGABRT); 
+#else
+#define _SETABRT ;
+#endif 
+#ifdef SIGFPE 
+#define _SETFPE sigdelset(&i_tset, SIGFPE); 
+#else
+#define _SETFPE ;
+#endif 
 #define AFS_SIGSET_CLEAR() \
 do { \
         sigfillset(&i_tset); \
+         _SETSEGV \
+         _SETBUS \
+         _SETILL \
+         _SETTRAP \
+         _SETABRT \
+         _SETFPE \
         assert(AFS_SET_SIGMASK(SIG_BLOCK, &i_tset, &i_oset) == 0); \
 } while (0)