From owner-freebsd-bugs@freebsd.org Tue Mar 30 15:31:03 2021 Return-Path: Delivered-To: freebsd-bugs@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6B22F57AC04 for ; Tue, 30 Mar 2021 15:31:03 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from mailman.nyi.freebsd.org (mailman.nyi.freebsd.org [IPv6:2610:1c1:1:606c::50:13]) by mx1.freebsd.org (Postfix) with ESMTP id 4F8th72RLYz4tJZ for ; Tue, 30 Mar 2021 15:31:03 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: by mailman.nyi.freebsd.org (Postfix) id 51E1B57A9D2; Tue, 30 Mar 2021 15:31:03 +0000 (UTC) Delivered-To: bugs@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 51A7E57AC03 for ; Tue, 30 Mar 2021 15:31:03 +0000 (UTC) (envelope-from bugzilla-noreply@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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4F8th71gFbz4tFd for ; Tue, 30 Mar 2021 15:31:03 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2610:1c1:1:606c::50:1d]) (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 2C466B75 for ; Tue, 30 Mar 2021 15:31:03 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org ([127.0.1.5]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id 12UFV3nk072853 for ; Tue, 30 Mar 2021 15:31:03 GMT (envelope-from bugzilla-noreply@freebsd.org) Received: (from www@localhost) by kenobi.freebsd.org (8.15.2/8.15.2/Submit) id 12UFV3xb072852 for bugs@FreeBSD.org; Tue, 30 Mar 2021 15:31:03 GMT (envelope-from bugzilla-noreply@freebsd.org) X-Authentication-Warning: kenobi.freebsd.org: www set sender to bugzilla-noreply@freebsd.org using -f From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 254661] Debug registers seem to be inherited in forked processes Date: Tue, 30 Mar 2021 15:31:03 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Only Me X-Bugzilla-Who: mgorny@gentoo.org X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: bugs@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter cc attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Mar 2021 15:31:03 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D254661 Bug ID: 254661 Summary: Debug registers seem to be inherited in forked processes Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: mgorny@gentoo.org CC: emaste@freebsd.org, kib@FreeBSD.org Created attachment 223712 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D223712&action= =3Dedit fbsd-fork-dbreg.c It seems that when a process forks, the new child process inherits debug registers from the parent. Not sure if this is desirable but it's certainly different than e.g. Linux and NetBSD do (both clear dbregs in the new proce= ss). This currently breaks e.g. GDB that doesn't account for this. If the proce= ss has any watchpoints set before forking, the watchpoints leak to child proce= ss when it's being detached, and it crashes with SIGTRAP afterwards. I'm attaching yet another variant of my cheap reproducer script=E2=84=A2. = It sets dbreg on the parent process before fork, and then reads dbreg from the child after fork. The results I get are: dr0 =3D 0x204690 // set in parent process dr7 =3D 00000013 dr0 =3D 0x204690 // read in child process dr7 =3D 00000413 --=20 You are receiving this mail because: You are the assignee for the bug.=