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