aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-10-06 08:53:46 +0000
committerUlrich Drepper <drepper@redhat.com>2004-10-06 08:53:46 +0000
commit67060ef581a5e44ced1d08e654f8f63737c51c78 (patch)
tree24c1001a76242d23c029441a4f248c380a7ce9bd
parentUpdate. (diff)
downloadglibc-67060ef581a5e44ced1d08e654f8f63737c51c78.tar.gz
glibc-67060ef581a5e44ced1d08e654f8f63737c51c78.tar.bz2
glibc-67060ef581a5e44ced1d08e654f8f63737c51c78.zip
2004-10-05 Dwayne Grant McConnell <dgm69@us.ibm.com> * pthread.c: Mask restart signal during cancel signal handler.
-rw-r--r--linuxthreads/ChangeLog4
-rw-r--r--linuxthreads/pthread.c1
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/tst-cancel4.c14
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);
}