Fix for the following (line number for 1.0.X series):

valgrind: vg_scheduler.c:3446 (scheduler_sanity): Assertion
`vgPlain_kisemptysigset( & vgPlain_threads[i].sigs_waited_for)' failed.

Test case is:

#include <pthread.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>

sigset_t intr;

void *
waiter (void *arg)
{
  int signum;
  printf ("Waiter started\n");

  sigwait (&intr, &signum);

  printf ("Waiter got signal %d (nothing will happen though)\n", signum);
  return 0;
}

int main ()
{
  pthread_t waiter_id;
  void *status;

  sigemptyset (&intr);
  sigaddset (&intr, SIGINT);
  pthread_sigmask (SIG_BLOCK, &intr, 0);

  printf ("Starting the sigwait thread\n");

  pthread_create (&waiter_id, 0, waiter, 0);

  sleep (2);
  printf ("Canceling the sigwait thread\n");

  pthread_cancel (waiter_id);
  pthread_join (waiter_id, &status);

  printf ("All done\n");
  return 0;
}


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1352 a5019735-40e9-0310-863c-91ae7b9d1cf9
1 file changed