]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.14] gh-144446: Fix some frame object thread-safety issues (gh-144479) (#144546)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 6 Feb 2026 15:25:36 +0000 (16:25 +0100)
committerGitHub <noreply@github.com>
Fri, 6 Feb 2026 15:25:36 +0000 (15:25 +0000)
commit600600589347677c6cfb50daf201fd2d3d68c01f
tree9e676ab0aca8b87c260f6e08ac1c25b7dfdaba5e
parent3fe97357ce5508f903a9022d7f0392d159a0ee77
[3.14] gh-144446: Fix some frame object thread-safety issues (gh-144479) (#144546)

Fix thread-safety issues when accessing frame attributes while another
thread is executing the frame:

- Add critical section to frame_repr() to prevent races when accessing
  the frame's code object and line number

- Add _Py_NO_SANITIZE_THREAD to PyUnstable_InterpreterFrame_GetLasti()
  to allow intentional racy reads of instr_ptr.

- Fix take_ownership() to not write to the original frame's f_executable
(cherry picked from commit 5bb3bbb9c6a7c9043a04d0cc2e82c83747040788)

Co-authored-by: Sam Gross <colesbury@gmail.com>
Lib/test/support/threading_helper.py
Lib/test/test_free_threading/test_frame.py [new file with mode: 0644]
Misc/NEWS.d/next/Core_and_Builtins/2026-02-03-17-08-13.gh-issue-144446.db5619.rst [new file with mode: 0644]
Objects/frameobject.c
Python/frame.c