From: Sachin Shah <39803835+inventshah@users.noreply.github.com> Date: Thu, 14 Aug 2025 08:00:00 +0000 (-0500) Subject: GH-137573: mark _PyOptimizer_Optimize as no inline (GH-137731) X-Git-Tag: v3.15.0a1~694 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c9d70651889afa89a033e8daedcb1cd60c59653a;p=thirdparty%2FPython%2Fcpython.git GH-137573: mark _PyOptimizer_Optimize as no inline (GH-137731) Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Petr Viktorin --- 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 000000000000..dcf0e643dc1e --- /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 f06df9644a16..1d899ee89713 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)