From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Wed, 27 Jul 2022 12:28:26 +0000 (-0700) Subject: GH-95045: gc untrack _lsprof.Profiler before deallocating it (GH-95315) X-Git-Tag: v3.10.6~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=657efca298bac3a4fcc66e917a464e4a6764f0d3;p=thirdparty%2FPython%2Fcpython.git GH-95045: gc untrack _lsprof.Profiler before deallocating it (GH-95315) Automerge-Triggered-By: GH:pablogsal (cherry picked from commit deacf391d7a1b3ab49bffa16088b3500fdb4c435) Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> --- diff --git a/Misc/NEWS.d/next/Library/2022-07-27-11-35-45.gh-issue-95045.iysT-Q.rst b/Misc/NEWS.d/next/Library/2022-07-27-11-35-45.gh-issue-95045.iysT-Q.rst new file mode 100644 index 000000000000..d4ab325e0365 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-07-27-11-35-45.gh-issue-95045.iysT-Q.rst @@ -0,0 +1 @@ +Fix GC crash when deallocating ``_lsprof.Profiler`` by untracking it before calling any callbacks. Patch by Kumar Aditya. diff --git a/Modules/_lsprof.c b/Modules/_lsprof.c index 8d754aa7e3ca..0a6b29a969b3 100644 --- a/Modules/_lsprof.c +++ b/Modules/_lsprof.c @@ -741,6 +741,7 @@ profiler_traverse(ProfilerObject *op, visitproc visit, void *arg) static void profiler_dealloc(ProfilerObject *op) { + PyObject_GC_UnTrack(op); if (op->flags & POF_ENABLED) { PyThreadState *tstate = PyThreadState_GET(); if (_PyEval_SetProfile(tstate, NULL, NULL) < 0) {