[Bug 219228] EINTR on thread with full signal mask.

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri May 12 15:35:54 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=219228

--- Comment #5 from commit-hook at freebsd.org ---
A commit references this bug:

Author: kib
Date: Fri May 12 15:35:00 UTC 2017
New revision: 318243
URL: https://svnweb.freebsd.org/changeset/base/318243

Log:
  Do not wake up sleeping thread in reschedule_signals() if the signal
  is blocked.  The spurious wakeup might result in spurious EINTR.

  The reschedule_signals() function is called when the calling thread
  has the signal mask changed.  For each newly blocked signal, we try to
  find a thread which might have the signal not blocked.  If no such
  thread exists, sigtd() returns random thread, which must not be waken
  up.  I decided that re-checking, as suggested by PR submitter, is more
  reasonable change than to change sigtd() interface, due to other uses
  of sigtd().  signotify() already performs this check.

  Submitted by: Duane <parakleta at darkreality.org>
  PR:   219228
  Sponsored by: The FreeBSD Foundation
  MFC after:    1 week

Changes:
  head/sys/kern/kern_sig.c

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list