From nobody Sat May 3 15:20:03 2025 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZqWgS0lnLz5vTB7; Sat, 03 May 2025 15:20:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZqWgR2Jhyz3KxH; Sat, 03 May 2025 15:20:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746285603; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=56nVL4Qx0TNqoZWqJSBtEYj0TU47OpLwPCppHFF365k=; b=awBYqx385Zsq3R91JAlqH/Z+Vc59s+OaMM+tKsIfKz1Dtm9/JrbJ4GVvZnYQEF9WT66YYv wAN1Wfe54WnWaKrhYm5rSNkfFKngiJ44v/e0WJ16S0u5ayICAD7gU0IUFVvbL8TWsjJO8d xM37ADT3glR2ot6hQ3K6YinWjiCvSbbKDsGLOodonHq3lWawDdOL9IYDls4xtMMrUCzg7S 0dwqqINx8cVyMZOY6WFDCaAj6gncGhPn4Ref0EhQ6fu2BLr56G35dR6LEioJd0JWJ0lahp LNj/2yQUITMlkmpDLWwK2OczmPgbQ4MJxrkEhgr90dR++2BeYhhEHKrJi/bvtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746285603; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=56nVL4Qx0TNqoZWqJSBtEYj0TU47OpLwPCppHFF365k=; b=BLZhMJoPh3m5mmwSgKopD6Cv6WBYK3XS01s6VO68dYuYA6Zy5sq+JN0qnut1L9F+19k6dy SnLzG6SLeatZoqHqbehUhRJqz8H1+YlbE/pT05eRxjYs03VPysbrSQq9RkgNqZ01m+ihoQ BFtcrVEggw7iFyvO28Ra/GLZQhAgC7VC+0XJXYWa04Y+DkPW4UvGdUHBFheRN+fStpIDz1 Uy69RLEJpoxKZdq+4qjCkvnVpJwcqKdepsbzlmHeVXNvgzLwonUvJn64wQdaUFlOcKgmPF egU3igv/f3/JeiY9CHPZp6v1EOnAbyqzc9UyjQeybpVvKwe9MLqEKS55571CCw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1746285603; a=rsa-sha256; cv=none; b=F8cLbfGFI5LQyznpiWKT0/gk27TlhsRQh5ZXXKFvg20KOtMIqh5zOxPwnKibmDSrttGf13 NsLYAobGCbiGxZNLS3c/Lgrsvki66LOukZZcwoEklCMFobo3cM1tQG7wds95Cs3fS79xl8 AqYe9RYpxroj8kJeC7UVekbCdeX7tBqgRfvgUTXe2Po0VYMyvHzcBuJc4ARr4obVVHhecF pc8r7OXJdZwk5AZ8rZdrheSr16sGkQf/s7/zBxP2OsDWVfgV7Qs2cID504mExaFEDcBF0M AB6oItulklum84oP7rz6ROmDNmvpfYUa2cDgoIYF+Yzo7lSraIqACEOWEYXeJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZqWgR15Rzzp52; Sat, 03 May 2025 15:20:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 543FK3Vh048234; Sat, 3 May 2025 15:20:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 543FK3xd048230; Sat, 3 May 2025 15:20:03 GMT (envelope-from git) Date: Sat, 3 May 2025 15:20:03 GMT Message-Id: <202505031520.543FK3xd048230@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: a86e21e2caaa - stable/14 - ptrace(): p_xthread could be NULL for P_STOPPED_TRACE List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: a86e21e2caaa9796308282a235bdb42bd3c71292 Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a86e21e2caaa9796308282a235bdb42bd3c71292 commit a86e21e2caaa9796308282a235bdb42bd3c71292 Author: Konstantin Belousov AuthorDate: 2025-04-20 23:19:35 +0000 Commit: Konstantin Belousov CommitDate: 2025-05-03 15:19:41 +0000 ptrace(): p_xthread could be NULL for P_STOPPED_TRACE (cherry picked from commit b63281884e0e1530de999723532f2d536cb32477) --- sys/kern/sys_process.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 497084f83563..d4c0737a4769 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -936,12 +936,10 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) } if (tid == 0) { - if ((p->p_flag & P_STOPPED_TRACE) != 0) { - KASSERT(p->p_xthread != NULL, ("NULL p_xthread")); + if ((p->p_flag & P_STOPPED_TRACE) != 0) td2 = p->p_xthread; - } else { + if (td2 == NULL) td2 = FIRST_THREAD_IN_PROC(p); - } tid = td2->td_tid; } @@ -1328,16 +1326,19 @@ kern_ptrace(struct thread *td, int req, pid_t pid, void *addr, int data) /* * Clear the pending event for the thread that just - * reported its event (p_xthread). This may not be - * the thread passed to PT_CONTINUE, PT_STEP, etc. if - * the debugger is resuming a different thread. + * reported its event (p_xthread), if any. This may + * not be the thread passed to PT_CONTINUE, PT_STEP, + * etc. if the debugger is resuming a different + * thread. There might be no reporting thread if + * the process was just attached. * * Deliver any pending signal via the reporting thread. */ - MPASS(p->p_xthread != NULL); - p->p_xthread->td_dbgflags &= ~TDB_XSIG; - p->p_xthread->td_xsig = data; - p->p_xthread = NULL; + if (p->p_xthread != NULL) { + p->p_xthread->td_dbgflags &= ~TDB_XSIG; + p->p_xthread->td_xsig = data; + p->p_xthread = NULL; + } p->p_xsig = data; /*