From 6971e40c2e02181e486b52f4f6bf98709d35443c Mon Sep 17 00:00:00 2001 From: Brandt Bucher Date: Wed, 6 Sep 2023 13:59:50 -0700 Subject: GH-104584: Restore frame->stacktop on optimizer error (GH-108953) --- .../Core and Builtins/2023-09-05-11-31-27.gh-issue-104584.IRSXA2.rst | 2 ++ Python/optimizer.c | 1 + 2 files changed, 3 insertions(+) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2023-09-05-11-31-27.gh-issue-104584.IRSXA2.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-09-05-11-31-27.gh-issue-104584.IRSXA2.rst b/Misc/NEWS.d/next/Core and Builtins/2023-09-05-11-31-27.gh-issue-104584.IRSXA2.rst new file mode 100644 index 0000000..7f556bf --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2023-09-05-11-31-27.gh-issue-104584.IRSXA2.rst @@ -0,0 +1,2 @@ +Fix a crash when running with :envvar:`PYTHONUOPS` or :option:`-X uops <-X>` +enabled and an error occurs during optimization. diff --git a/Python/optimizer.c b/Python/optimizer.c index 8aaf9f9..c6d0f9e 100644 --- a/Python/optimizer.c +++ b/Python/optimizer.c @@ -169,6 +169,7 @@ _PyOptimizer_BackEdge(_PyInterpreterFrame *frame, _Py_CODEUNIT *src, _Py_CODEUNI if (err <= 0) { assert(executor == NULL); if (err < 0) { + _PyFrame_SetStackPointer(frame, stack_pointer); return NULL; } goto jump_to_destination; -- cgit v0.12