mirror of
https://github.com/python/cpython.git
synced 2026-01-06 15:32:22 +00:00
[3.14] gh-137007: Track executor before any possible deallocations (GH-137016) (GH-142541)
gh-137007: Track executor before any possible deallocations (GH-137016)
(cherry picked from commit 97e19014dd)
Co-authored-by: Ken Jin <kenjin@python.org>
This commit is contained in:
parent
cbec73cf63
commit
acd5b97082
2 changed files with 5 additions and 1 deletions
|
|
@ -0,0 +1 @@
|
|||
Fix a bug during JIT compilation failure which caused garbage collection debug assertions to fail.
|
||||
|
|
@ -1213,6 +1213,10 @@ make_executor_from_uops(_PyUOpInstruction *buffer, int length, const _PyBloomFil
|
|||
assert(next_exit == -1);
|
||||
assert(dest == executor->trace);
|
||||
assert(dest->opcode == _START_EXECUTOR);
|
||||
// Note: we MUST track it here before any Py_DECREF(executor) or
|
||||
// linking of executor. Otherwise, the GC tries to untrack a
|
||||
// still untracked object during dealloc.
|
||||
_PyObject_GC_TRACK(executor);
|
||||
_Py_ExecutorInit(executor, dependencies);
|
||||
#ifdef Py_DEBUG
|
||||
char *python_lltrace = Py_GETENV("PYTHON_LLTRACE");
|
||||
|
|
@ -1242,7 +1246,6 @@ make_executor_from_uops(_PyUOpInstruction *buffer, int length, const _PyBloomFil
|
|||
return NULL;
|
||||
}
|
||||
#endif
|
||||
_PyObject_GC_TRACK(executor);
|
||||
return executor;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue