]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-131591: Reset RemoteDebuggerSuupport state after fork (#132793)
authorNadeshiko Manju <me@manjusaka.me>
Fri, 25 Apr 2025 00:40:01 +0000 (08:40 +0800)
committerGitHub <noreply@github.com>
Fri, 25 Apr 2025 00:40:01 +0000 (01:40 +0100)
Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
Misc/NEWS.d/next/Core_and_Builtins/2025-04-22-19-00-03.gh-issue-131591.CdEqBr.rst [new file with mode: 0644]
Modules/posixmodule.c

diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-04-22-19-00-03.gh-issue-131591.CdEqBr.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-04-22-19-00-03.gh-issue-131591.CdEqBr.rst
new file mode 100644 (file)
index 0000000..e237649
--- /dev/null
@@ -0,0 +1 @@
+Reset any :pep:`768` remote debugging pending call in children after :func:`os.fork` calls.
index b7300def8dc75ff47bf002b15fb3ae08f03ae8b2..8d7131b2eacf95609109d49f61785899341ac328 100644 (file)
@@ -677,6 +677,14 @@ PyOS_AfterFork_Parent(void)
     run_at_forkers(interp->after_forkers_parent, 0);
 }
 
+static void
+reset_remotedebug_data(PyThreadState *tstate)
+{
+    tstate->remote_debugger_support.debugger_pending_call = 0;
+    memset(tstate->remote_debugger_support.debugger_script_path, 0, MAX_SCRIPT_PATH_SIZE);
+}
+
+
 void
 PyOS_AfterFork_Child(void)
 {
@@ -710,6 +718,8 @@ PyOS_AfterFork_Child(void)
         goto fatal_error;
     }
 
+    reset_remotedebug_data(tstate);
+
     // Remove the dead thread states. We "start the world" once we are the only
     // thread state left to undo the stop the world call in `PyOS_BeforeFork`.
     // That needs to happen before `_PyThreadState_DeleteList`, because that