[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