From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Thu, 14 Aug 2025 08:51:33 +0000 (+0200) Subject: [3.14] GH-137573: mark _PyOptimizer_Optimize as no inline (GH-137731) (#137751) X-Git-Tag: v3.14.0rc2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7c0e6378c185313c7377e7e62658f85d0907c94f;p=thirdparty%2FPython%2Fcpython.git [3.14] GH-137573: mark _PyOptimizer_Optimize as no inline (GH-137731) (#137751) Co-authored-by: Sachin Shah <39803835+inventshah@users.noreply.github.com> 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 dde3dd8ebe74..e2b6adfab595 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)