kern/150138: commit references a PR
dfilter service
dfilter at FreeBSD.ORG
Tue Aug 31 07:20:12 UTC 2010
The following reply was made to PR kern/150138; it has been noted by GNATS.
From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: kern/150138: commit references a PR
Date: Tue, 31 Aug 2010 07:16:01 +0000 (UTC)
Author: davidxu
Date: Tue Aug 31 07:15:50 2010
New Revision: 212047
URL: http://svn.freebsd.org/changeset/base/212047
Log:
If a process is being debugged, skips job control caused by SIGSTOP/SIGCONT
signals, because it is managed by debugger, however a normal signal sent to
a interruptibly sleeping thread wakes up the thread so it will handle the
signal when the process leaves the stopped state.
PR: 150138
MFC after: 1 week
Modified:
head/sys/kern/kern_sig.c
Modified: head/sys/kern/kern_sig.c
==============================================================================
--- head/sys/kern/kern_sig.c Tue Aug 31 06:22:03 2010 (r212046)
+++ head/sys/kern/kern_sig.c Tue Aug 31 07:15:50 2010 (r212047)
@@ -2139,20 +2139,9 @@ tdsendsignal(struct proc *p, struct thre
* We try do the per-process part here.
*/
if (P_SHOULDSTOP(p)) {
- /*
- * The process is in stopped mode. All the threads should be
- * either winding down or already on the suspended queue.
- */
- if (p->p_flag & P_TRACED) {
- /*
- * The traced process is already stopped,
- * so no further action is necessary.
- * No signal can restart us.
- */
- goto out;
- }
-
if (sig == SIGKILL) {
+ if (p->p_flag & P_TRACED)
+ goto out;
/*
* SIGKILL sets process running.
* It will die elsewhere.
@@ -2163,6 +2152,8 @@ tdsendsignal(struct proc *p, struct thre
}
if (prop & SA_CONT) {
+ if (p->p_flag & P_TRACED)
+ goto out;
/*
* If SIGCONT is default (or ignored), we continue the
* process but don't leave the signal in sigqueue as
@@ -2207,6 +2198,8 @@ tdsendsignal(struct proc *p, struct thre
}
if (prop & SA_STOP) {
+ if (p->p_flag & P_TRACED)
+ goto out;
/*
* Already stopped, don't need to stop again
* (If we did the shell could get confused).
_______________________________________________
svn-src-all at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
More information about the freebsd-bugs
mailing list