summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS.d/next/Core_and_Builtins/2024-09-01-00-02-05.gh-issue-123545.8nQNbL.rst1
-rw-r--r--Python/bytecodes.c4
-rw-r--r--Python/executor_cases.c.h4
3 files changed, 1 insertions, 8 deletions
diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2024-09-01-00-02-05.gh-issue-123545.8nQNbL.rst b/Misc/NEWS.d/next/Core_and_Builtins/2024-09-01-00-02-05.gh-issue-123545.8nQNbL.rst
new file mode 100644
index 0000000..4da4151
--- /dev/null
+++ b/Misc/NEWS.d/next/Core_and_Builtins/2024-09-01-00-02-05.gh-issue-123545.8nQNbL.rst
@@ -0,0 +1 @@
+Fix a double decref in rare cases on experimental JIT builds.
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index c4cc812..b5a642d 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -4739,8 +4739,6 @@ dummy_func(
if (optimized <= 0) {
exit->temperature = restart_backoff_counter(temperature);
if (optimized < 0) {
- Py_DECREF(current_executor);
- tstate->previous_executor = Py_None;
GOTO_UNWIND();
}
tstate->previous_executor = (PyObject *)current_executor;
@@ -4822,8 +4820,6 @@ dummy_func(
if (optimized <= 0) {
exit->temperature = restart_backoff_counter(exit->temperature);
if (optimized < 0) {
- Py_DECREF(current_executor);
- tstate->previous_executor = Py_None;
GOTO_UNWIND();
}
GOTO_TIER_ONE(target);
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index d4be790..6d687bb 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -5305,8 +5305,6 @@
if (optimized <= 0) {
exit->temperature = restart_backoff_counter(temperature);
if (optimized < 0) {
- Py_DECREF(current_executor);
- tstate->previous_executor = Py_None;
GOTO_UNWIND();
}
tstate->previous_executor = (PyObject *)current_executor;
@@ -5437,8 +5435,6 @@
if (optimized <= 0) {
exit->temperature = restart_backoff_counter(exit->temperature);
if (optimized < 0) {
- Py_DECREF(current_executor);
- tstate->previous_executor = Py_None;
GOTO_UNWIND();
}
GOTO_TIER_ONE(target);