git: 2b11b13b04bd - stable/14 - kern_sig.c: add chicken bit for old way of SIGSTOP handling on PT_ATTACH
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 03 May 2025 15:20:01 UTC
The branch stable/14 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=2b11b13b04bd4b5a0519850d35b334fe420502ca
commit 2b11b13b04bd4b5a0519850d35b334fe420502ca
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-04-17 11:51:42 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-05-03 15:19:41 +0000
kern_sig.c: add chicken bit for old way of SIGSTOP handling on PT_ATTACH
(cherry picked from commit a6b7d5cddacd4aa14ee058195eedfe207a69029e)
---
sys/kern/kern_sig.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 4df052629828..06da39b8cb33 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -176,6 +176,11 @@ SYSCTL_BOOL(_kern, OID_AUTO, sig_discard_ign, CTLFLAG_RWTUN,
"Discard ignored signals on delivery, otherwise queue them to "
"the target queue");
+static bool pt_attach_transparent = true;
+SYSCTL_BOOL(_debug, OID_AUTO, ptrace_attach_transparent, CTLFLAG_RWTUN,
+ &pt_attach_transparent, 0,
+ "Hide wakes from PT_ATTACH on interruptible sleeps");
+
SYSINIT(signal, SI_SUB_P1003_1B, SI_ORDER_FIRST+3, sigqueue_start, NULL);
/*
@@ -2361,7 +2366,8 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi)
if (prop & SIGPROP_CONT)
sigqueue_delete_stopmask_proc(p);
else if (prop & SIGPROP_STOP) {
- if ((p->p_flag & P_TRACED) != 0 &&
+ if (pt_attach_transparent &&
+ (p->p_flag & P_TRACED) != 0 &&
(p->p_flag2 & P2_PTRACE_FSTP) != 0) {
td->td_dbgflags |= TDB_FSTP;
PROC_SLOCK(p);
@@ -3364,7 +3370,7 @@ issignal(struct thread *td)
}
}
- if (false &&
+ if (!pt_attach_transparent &&
(p->p_flag & (P_TRACED | P_PPTRACE)) == P_TRACED &&
(p->p_flag2 & P2_PTRACE_FSTP) != 0 &&
SIGISMEMBER(sigpending, SIGSTOP)) {