2004-10-05  Dwayne Grant McConnell  <dgm69@us.ibm.com>

	* pthread.c: Mask restart signal during cancel signal handler.
This commit is contained in:
Ulrich Drepper 2004-10-06 08:53:46 +00:00
parent f38a30861e
commit 67060ef581
4 changed files with 25 additions and 0 deletions

View File

@ -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> 2004-10-05 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME, * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME,

View File

@ -560,6 +560,7 @@ static void pthread_initialize(void)
sa.sa_flags = 0; sa.sa_flags = 0;
__libc_sigaction(__pthread_sig_restart, &sa, NULL); __libc_sigaction(__pthread_sig_restart, &sa, NULL);
sa.sa_handler = pthread_handle_sigcancel; sa.sa_handler = pthread_handle_sigcancel;
sigaddset(&sa.sa_mask, __pthread_sig_restart);
// sa.sa_flags = 0; // sa.sa_flags = 0;
__libc_sigaction(__pthread_sig_cancel, &sa, NULL); __libc_sigaction(__pthread_sig_cancel, &sa, NULL);
if (__pthread_sig_debug > 0) { if (__pthread_sig_debug > 0) {

View File

@ -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> 2004-10-05 Jakub Jelinek <jakub@redhat.com>
* tst-clock1.c: Change #ifdef to #if defined. * tst-clock1.c: Change #ifdef to #if defined.

View File

@ -1884,6 +1884,11 @@ static void *
tf_msgrcv (void *arg) tf_msgrcv (void *arg)
{ {
tempmsg = msgget (IPC_PRIVATE, 0666 | IPC_CREAT); 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); int r = pthread_barrier_wait (&b2);
if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) 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); printf ("%s: msgrcv returned %zd with errno = %m\n", __FUNCTION__, s);
msgctl (tempmsg, IPC_RMID, NULL);
exit (1); exit (1);
} }
@ -1940,6 +1947,11 @@ tf_msgsnd (void *arg)
abort (); abort ();
tempmsg = msgget (IPC_PRIVATE, 0666 | IPC_CREAT); 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); int r = pthread_barrier_wait (&b2);
if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
@ -1972,6 +1984,8 @@ tf_msgsnd (void *arg)
printf ("%s: msgsnd returned\n", __FUNCTION__); printf ("%s: msgsnd returned\n", __FUNCTION__);
msgctl (tempmsg, IPC_RMID, NULL);
exit (1); exit (1);
} }