https://github.com/python/cpython/commit/cf5c170c1bec7ab191198770e3ac7623288df9d6 commit: cf5c170c1bec7ab191198770e3ac7623288df9d6 branch: 3.14 author: Miss Islington (bot) <[email protected]> committer: hugovk <[email protected]> date: 2025-08-21T17:00:05+03:00 summary:
[3.14] gh-137728 gh-137762: Fix bugs in the JIT with many local variables (GH-137764) (#137999) Co-authored-by: Ken Jin <[email protected]> files: A Misc/NEWS.d/next/Core_and_Builtins/2025-08-14-14-18-29.gh-issue-137728.HdYS9R.rst M Python/optimizer_analysis.c M Python/optimizer_symbols.c diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-08-14-14-18-29.gh-issue-137728.HdYS9R.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-14-14-18-29.gh-issue-137728.HdYS9R.rst new file mode 100644 index 00000000000000..cc4a55ddf383ec --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-08-14-14-18-29.gh-issue-137728.HdYS9R.rst @@ -0,0 +1 @@ +Fix the JIT's handling of many local variables. This previously caused a segfault. diff --git a/Python/optimizer_analysis.c b/Python/optimizer_analysis.c index 503e6ed4791371..2bcd99b8bcdc6d 100644 --- a/Python/optimizer_analysis.c +++ b/Python/optimizer_analysis.c @@ -449,13 +449,10 @@ optimize_uops( _Py_uop_abstractcontext_init(ctx); _Py_UOpsAbstractFrame *frame = _Py_uop_frame_new(ctx, co, curr_stacklen, NULL, 0); if (frame == NULL) { - return -1; + return 0; } ctx->curr_frame_depth++; ctx->frame = frame; - ctx->done = false; - ctx->out_of_space = false; - ctx->contradiction = false; _PyUOpInstruction *this_instr = NULL; for (int i = 0; !ctx->done; i++) { diff --git a/Python/optimizer_symbols.c b/Python/optimizer_symbols.c index e8a4f87031b76a..2387f215178624 100644 --- a/Python/optimizer_symbols.c +++ b/Python/optimizer_symbols.c @@ -691,6 +691,13 @@ _Py_uop_abstractcontext_init(JitOptContext *ctx) // Frame setup ctx->curr_frame_depth = 0; + + // Ctx signals. + // Note: this must happen before frame_new, as it might override + // the result should frame_new set things to bottom. + ctx->done = false; + ctx->out_of_space = false; + ctx->contradiction = false; } int _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
