Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Jun 2000 14:30:17 -0700 (PDT)
From:      Jason Evans <jasone@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/lib/libc_r/uthread pthread_private.h uthread_init.c uthread_sigwait.c
Message-ID:  <200006272130.OAA69550@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
jasone      2000/06/27 14:30:17 PDT

  Modified files:
    lib/libc_r/uthread   pthread_private.h uthread_init.c 
                         uthread_sigwait.c 
  Log:
  If multiple threads are blocked in sigwait() for the same signal that does
  not have a user-supplied signal handler, when a signal is delivered, one
  thread will receive the signal, and then the code reverts to having no
  signal handler for the signal.  This can leave the other sigwait()ing
  threads stranded permanently if the signal is later ignored, or can result
  in process termination when the process should have delivered the signal to
  one of the threads in sigwait().
  
  To fix this problem, maintain a count of sigwait()ers for each signal that
  has no default signal handler.  Use the count to correctly install/uninstall
  dummy signal handlers.
  
  Reviewed by:	deischen
  
  Revision  Changes    Path
  1.42      +8 -1      src/lib/libc_r/uthread/pthread_private.h
  1.24      +4 -1      src/lib/libc_r/uthread/uthread_init.c
  1.14      +28 -5     src/lib/libc_r/uthread/uthread_sigwait.c



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006272130.OAA69550>