Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 May 2017 15:35:53 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 219228] EINTR on thread with full signal mask.
Message-ID:  <bug-219228-8-KmEb3Jochb@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-219228-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-219228-8@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D219228

--- Comment #5 from commit-hook@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@darkreality.org>
  PR:   219228
  Sponsored by: The FreeBSD Foundation
  MFC after:    1 week

Changes:
  head/sys/kern/kern_sig.c

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-219228-8-KmEb3Jochb>