]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix small bug causing assertion failure in computation of SKSS.
authorJulian Seward <jseward@acm.org>
Thu, 23 May 2002 17:09:43 +0000 (17:09 +0000)
committerJulian Seward <jseward@acm.org>
Thu, 23 May 2002 17:09:43 +0000 (17:09 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@316

coregrind/vg_signals.c
tests/Makefile.am
tests/sigwait_all.c [new file with mode: 0644]
vg_signals.c

index 1b4c98128c56ac4d854827887e2d39cbd0eeb504..6532b286d10ee63076d416131fa9c6737733246f 100644 (file)
@@ -312,7 +312,11 @@ void calculate_SKSS_from_SCSS ( SKSS* dst )
           && sig != VKI_SIGKILL && sig != VKI_SIGSTOP)
          VG_(ksigaddset)( &dst->skss_sigmask, sig );
 
-      dst->skss_per_sig[sig].skss_handler = skss_handler;
+      if (sig != VKI_SIGKILL && sig != VKI_SIGSTOP)
+         dst->skss_per_sig[sig].skss_handler = skss_handler;
+      else
+         dst->skss_per_sig[sig].skss_handler = VKI_SIG_DFL;
+
       dst->skss_per_sig[sig].skss_flags   = skss_flags;
    }
 
index 14e6f25a4a38220012b48e716311604eedcfd816..21a8d20a81cfc72f4a5b28c87e489e2cdbeed3de 100644 (file)
@@ -29,4 +29,4 @@ EXTRA_DIST = \
        pth_threadpool.c pth_specific.c pth_mutexspeed.c malloc3.c \
        pth_once.c weirdioctl.c pth_signal1.c pth_signal2.c \
        discard.c pth_semaphore1.c new_override.cpp pth_yield.c \
-       sigaltstack.c erringfds.c
+       sigaltstack.c erringfds.c sigwait_all.c
diff --git a/tests/sigwait_all.c b/tests/sigwait_all.c
new file mode 100644 (file)
index 0000000..27a5be7
--- /dev/null
@@ -0,0 +1,23 @@
+
+#include <stdio.h>
+#include <pthread.h>
+#include <signal.h>
+
+
+int main ( void )
+{
+  int res, sig;
+  sigset_t set;
+  sigfillset(&set);
+
+  /* block all signals */
+  pthread_sigmask(SIG_BLOCK, &set, NULL);
+
+  printf("send me a signal, any signal\n");
+
+  /* Wait for any signal in the set */
+  res = sigwait(&set, &sig);
+
+  printf("sigwait returned, res = %d, sig = %d\n", res, sig);
+  return 0;
+}
index 1b4c98128c56ac4d854827887e2d39cbd0eeb504..6532b286d10ee63076d416131fa9c6737733246f 100644 (file)
@@ -312,7 +312,11 @@ void calculate_SKSS_from_SCSS ( SKSS* dst )
           && sig != VKI_SIGKILL && sig != VKI_SIGSTOP)
          VG_(ksigaddset)( &dst->skss_sigmask, sig );
 
-      dst->skss_per_sig[sig].skss_handler = skss_handler;
+      if (sig != VKI_SIGKILL && sig != VKI_SIGSTOP)
+         dst->skss_per_sig[sig].skss_handler = skss_handler;
+      else
+         dst->skss_per_sig[sig].skss_handler = VKI_SIG_DFL;
+
       dst->skss_per_sig[sig].skss_flags   = skss_flags;
    }