GH-95045: gc untrack _lsprof.Profiler before deallocating it (GH-95315)

Automerge-Triggered-By: GH:pablogsal
This commit is contained in:
Kumar Aditya 2022-07-27 17:33:50 +05:30 committed by GitHub
parent 78eb3f79ea
commit deacf391d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 0 deletions

View File

@ -0,0 +1 @@
Fix GC crash when deallocating ``_lsprof.Profiler`` by untracking it before calling any callbacks. Patch by Kumar Aditya.

View File

@ -747,6 +747,7 @@ profiler_traverse(ProfilerObject *op, visitproc visit, void *arg)
static void static void
profiler_dealloc(ProfilerObject *op) profiler_dealloc(ProfilerObject *op)
{ {
PyObject_GC_UnTrack(op);
if (op->flags & POF_ENABLED) { if (op->flags & POF_ENABLED) {
PyThreadState *tstate = _PyThreadState_GET(); PyThreadState *tstate = _PyThreadState_GET();
if (_PyEval_SetProfile(tstate, NULL, NULL) < 0) { if (_PyEval_SetProfile(tstate, NULL, NULL) < 0) {