diff --git a/Misc/NEWS.d/next/C_API/2025-08-13-13-41-04.gh-issue-137573.r6uwRf.rst b/Misc/NEWS.d/next/C_API/2025-08-13-13-41-04.gh-issue-137573.r6uwRf.rst new file mode 100644 index 00000000000000..dcf0e643dc1ed3 --- /dev/null +++ b/Misc/NEWS.d/next/C_API/2025-08-13-13-41-04.gh-issue-137573.r6uwRf.rst @@ -0,0 +1,2 @@ +Mark ``_PyOptimizer_Optimize`` as :c:macro:`Py_NO_INLINE` to +prevent stack overflow crashes on macOS. diff --git a/Python/optimizer.c b/Python/optimizer.c index f06df9644a1614..1d899ee8971368 100644 --- a/Python/optimizer.c +++ b/Python/optimizer.c @@ -109,7 +109,8 @@ uop_optimize(_PyInterpreterFrame *frame, _Py_CODEUNIT *instr, /* Returns 1 if optimized, 0 if not optimized, and -1 for an error. * If optimized, *executor_ptr contains a new reference to the executor */ -int +// gh-137573: inlining this function causes stack overflows +Py_NO_INLINE int _PyOptimizer_Optimize( _PyInterpreterFrame *frame, _Py_CODEUNIT *start, _PyExecutorObject **executor_ptr, int chain_depth)