diff options
-rw-r--r-- | linuxthreads/ChangeLog | 4 | ||||
-rw-r--r-- | linuxthreads/pthread.c | 1 | ||||
-rw-r--r-- | nptl/ChangeLog | 6 | ||||
-rw-r--r-- | nptl/tst-cancel4.c | 14 |
4 files changed, 25 insertions, 0 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index a4a4222f7b..56b412b5c6 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,7 @@ +2004-10-05 Dwayne Grant McConnell <dgm69@us.ibm.com> + + * pthread.c: Mask restart signal during cancel signal handler. + 2004-10-05 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME, diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index 6c98d73255..24f0eb02b0 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -560,6 +560,7 @@ static void pthread_initialize(void) sa.sa_flags = 0; __libc_sigaction(__pthread_sig_restart, &sa, NULL); sa.sa_handler = pthread_handle_sigcancel; + sigaddset(&sa.sa_mask, __pthread_sig_restart); // sa.sa_flags = 0; __libc_sigaction(__pthread_sig_cancel, &sa, NULL); if (__pthread_sig_debug > 0) { diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 0ddc0d0b08..136cdfcd20 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,9 @@ +2004-10-06 Ulrich Drepper <drepper@redhat.com> + + * tst-cancel4.c (tf_msgrcv): Check for failure in msgget. If the + test fails, remove message queue. + (tf_msgsnd): Likewise. + 2004-10-05 Jakub Jelinek <jakub@redhat.com> * tst-clock1.c: Change #ifdef to #if defined. diff --git a/nptl/tst-cancel4.c b/nptl/tst-cancel4.c index 8dc8aec0af..c3e527fd1c 100644 --- a/nptl/tst-cancel4.c +++ b/nptl/tst-cancel4.c @@ -1884,6 +1884,11 @@ static void * tf_msgrcv (void *arg) { tempmsg = msgget (IPC_PRIVATE, 0666 | IPC_CREAT); + if (tempmsg == -1) + { + printf ("%s: msgget failed: %s\n", __FUNCTION__, strerror (errno)); + exit (1); + } int r = pthread_barrier_wait (&b2); if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) @@ -1927,6 +1932,8 @@ tf_msgrcv (void *arg) printf ("%s: msgrcv returned %zd with errno = %m\n", __FUNCTION__, s); + msgctl (tempmsg, IPC_RMID, NULL); + exit (1); } @@ -1940,6 +1947,11 @@ tf_msgsnd (void *arg) abort (); tempmsg = msgget (IPC_PRIVATE, 0666 | IPC_CREAT); + if (tempmsg == -1) + { + printf ("%s: msgget failed: %s\n", __FUNCTION__, strerror (errno)); + exit (1); + } int r = pthread_barrier_wait (&b2); if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) @@ -1972,6 +1984,8 @@ tf_msgsnd (void *arg) printf ("%s: msgsnd returned\n", __FUNCTION__); + msgctl (tempmsg, IPC_RMID, NULL); + exit (1); } |