10557 Commits
Author SHA1 Message Date
Victor Stinner b62f612a26 [3.15] gh-159603: Use pthread_attr_get_np() on FreeBSD (#159604) (#159928)
gh-159603: Use pthread_attr_get_np() on FreeBSD (#159604)

Use pthread_attr_get_np() on FreeBSD to get the stack size (and guard
size) of the current thread.

Check if pthread_attr_get_np() function and <pthread_np.h> header are
available in configure.

Update test_json.test_recursion. On FreeBSD 16 with a default stack size of
512 MB, the json C implementation no longer raises RecursionError in
test_highly_nested_objects_encoding(). Reduce also max_depth from 5,000 to
2,000 so test_highly_nested_objects_encoding() of the Python implementation
only takes 1.6 seconds, instead of 12 seconds.

(cherry picked from commit 71ba39dc05)
2026-10-20 14:49:48 -05:00
c75c72b64a [3.15] gh-159739: Avoid leaking references during free-threaded GC enumeration (GH-159781) (#159907)
(cherry picked from commit 7652a6dacc)

Co-authored-by: Jelle Zijlstra <jelle@openai.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2026-10-20 18:37:02 +00:00
73358fca05 [3.15] gh-159739: Bound encoding-name lookahead in surrogatepass (GH-159785) (#159911)
(cherry picked from commit 905aab60f7)

Co-authored-by: Jelle Zijlstra <jelle@openai.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2026-10-20 18:25:38 +00:00
Miss Islington (bot)andJelle Zijlstra 83fc8e8d48 [3.15] gh-159739: Handle interpreter configuration encoding errors (GH-159747) (#159843)
Propagate UTF-8 conversion errors before copying a string configuration
value.
(cherry picked from commit 626394e0a3)

Co-authored-by: Jelle Zijlstra <jelle@openai.com>
2026-10-20 11:12:17 -07:00
9f13436ef0 [3.15] gh-159739: Release replaced PyInitConfig strings (GH-159769) (#159809)
gh-159739: Release replaced PyInitConfig strings (GH-159769)

* gh-159739: Release replaced PyInitConfig strings

Backport to 3.15 and 3.14.

---------
(cherry picked from commit 395d766d4f)

Co-authored-by: Jelle Zijlstra <jelle@openai.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2026-10-20 00:18:08 +00:00
Neil SchemenauerandNathan Goldbaum 81fe70e966 [3.15] gh-158973: Reset the warnings lock after fork in the child (gh-158974) (gh-159614)
Co-authored-by: Nathan Goldbaum <nathan.goldbaum@gmail.com>
2026-10-19 14:54:15 -07:00
Miss Islington (bot)andlimadog9 64e7708753 [3.15] gh-158121: Preserve instruction events when line monitoring is disabled (GH-158456) (#159733)
gh-158121: Preserve instruction events when line monitoring is disabled (GH-158456)
(cherry picked from commit f0f76de0c8)

Co-authored-by: limadog9 <jakewallin42@gmail.com>
2026-10-19 19:47:56 +00:00
Miss Islington (bot)andHan 7d95f0d09c [3.15] gh-130279: Fix missing exception handlers for jumps in loops (GH-159460) (#159698)
gh-130279: Fix missing exception handlers for jumps in loops (GH-159460)
(cherry picked from commit 036d309cf5)

Co-authored-by: Han <180024497+LH-and-FPGA@users.noreply.github.com>
2026-10-19 08:43:26 +00:00
Miss Islington (bot)andNathan Goldbaum faf16ef256 [3.15] gh-159041: Fix use-after-free in asyncio task tracking during thread state cleanup (GH-159073) (#159694)
gh-159041: Fix use-after-free in asyncio task tracking during thread state cleanup (GH-159073)
(cherry picked from commit 999855b07f)

Co-authored-by: Nathan Goldbaum <nathan.goldbaum@gmail.com>
2026-10-19 11:35:08 +05:30
Miss Islington (bot)andPengyu Lee a73827e5bc [3.15] gh-157906: fix an incorrect architecture macro check in free-threaded GC (gh-157907) (gh-159427)
Fix typo in free-threaded GC prefetch check for 32-bit x86 MSVC.
(cherry picked from commit 1b015e66f0)

Co-authored-by: Pengyu Lee <lipengyu@kylinos.cn>
2026-10-16 20:09:46 -07:00
b6d63f1877 [3.15] gh-159320: Enable stack size detection on Android (GH-159321) (#159409)
gh-159320: Enable stack size detection on Android (GH-159321)

Extend the use of pthread_getattr_np in stack size detection from any glibc linux to any glibc *or* android linux. Update tests for android's new recursion limit.
(cherry picked from commit 8ff41c2ae7)

Co-authored-by: T. Wouters <thomas@python.org>
Co-authored-by: Malcolm Smith <smith@chaquo.com>
2026-10-14 12:44:05 +00:00
Miss Islington (bot)andItamar Oren 33a05de00a [3.15] gh-157384: Set package context in PyImport_CreateModuleFromInitfunc() (GH-157387) (GH-159316)
A single-phase init function that creates its module using only the
last component of a dotted name (as pybind11 does for submodules) got
a module whose __name__ was the short name.  Set the package context
while calling the init function, as the dynamic loader does, so the
module gets the full name from the spec.
(cherry picked from commit 04862280a2)

Co-authored-by: Itamar Oren <itamarost@gmail.com>
2026-10-14 13:49:31 +02:00
Neil Schemenauer ef498e0336 [3.15] Fix _PyThreadState_ResumeDetached() assertion with attach waiters (GH-159372)
Make _PyThreadState_ResumeDetached() waiter-aware and use it from
start_the_world(), matching main branch.  Remove tstate_resume().
2026-10-13 12:43:19 -07:00
Trent Nelson ed4f3bccbd [3.15] gh-151518: Avoid STW starvation of attaching threads (GH-152826) (GH-158186)
Preserve active attach waiters across successive stop-the-world pauses
so a tight collection loop cannot keep them from making progress.

Keep the waiter-aware resume operation local to pystate.c because this
branch does not have the newer BRC suspend and resume helpers.

(cherry picked from commit f156510960)
2026-10-13 17:44:50 +02:00
Irit Katriel 8870e26718 [3.15] gh-143493: fix cleanup on errors in codegen_comprehension (GH-156374) (GH-156962) 2026-10-13 11:51:33 +02:00
Miss Islington (bot)andAn Long 6a67945f32 [3.15] gh-155823: Fix stale stack on _SEND_VIRTUAL_TIER_TWO exhausted exit (GH-155844) (GH-158559)
(cherry picked from commit 1071f7400e)

Co-authored-by: An Long <aisk@users.noreply.github.com>
2026-10-13 11:20:24 +02:00
Victor StinnerandNathan Goldbaum 18e0bcb85f [3.15] gh-157415: Fix data race in pthread wrapper (#157430) (#159277)
gh-157415: Fix data race in pthread wrapper (#157430)

Use free() instead of PyMem_RawFree() in pythread_wrapper() to avoid
a data race if another thread calls PyMem_SetAllocator() in parallel.

Reenable @nomemtest tests on TSAN.


(cherry picked from commit d1878ccb44)

Co-authored-by: Nathan Goldbaum <nathan.goldbaum@gmail.com>
2026-10-12 23:32:24 +00:00
Irit Katriel 689c420973 [3.15] gh-156466: fix cleanup on error in codegen_leave_annotations_scope (#156520) 2026-10-12 15:54:04 -07:00
John 4df287d276 [3.15] gh-157468: Validate correct builtins used under JIT (GH-157766) (GH-159048)
* Expose two possible builtin JIT gaps

* Add trace and runtime guard for builtin dict

* Check _GUARD_BUILTINS_IS_CANONICAL once per frame

* Add check and fix for globals being folded
(cherry picked from commit 0906d2ab93)
2026-10-12 16:31:15 +02:00
Miss Islington (bot)andLukas Geiger 9de85b0d10 [3.15] gh-158072: Fix JIT crash with omitted default arguments (GH-158128) (GH-158543)
(cherry picked from commit 83de667b25)

Co-authored-by: Lukas Geiger <lukas.geiger94@gmail.com>
2026-10-12 16:07:29 +02:00
e96bd136eb [3.15] gh-149816: #96 Fix a race condition in invoke_gc_callback with free threading (GH-150029) (GH-156119)
(cherry picked from commit 91d71dd670)

Co-authored-by: dzaramelcone <134235821+dzaramelcone@users.noreply.github.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
2026-10-12 14:51:04 +02:00
Irit Katriel 2cab3197a5 [3.15] gh-156466: fix cleanup on error in codegen_setup_annotations_scope (#156473) (GH-156498)
(cherry picked from commit 24e5a55ccb)
2026-10-12 14:21:42 +02:00
Bartosz Sławecki ad0a18a17d [3.15] gh-156909: Fix AST.__repr__ call getting the _fields attribute (GH-157490) (GH-157596)
(cherry picked from commit 1bfcc3cc87)
2026-10-12 14:08:25 +02:00
Gregory P. Smith 8c7ac5733f [3.15] gh-159184: Do not compare set elements when marshalling a set (GH-159196) (#159205)
Set elements are written in the order of their dumps.  They were sorted
as (dump, element) pairs, so elements with the same dump were compared.
That failed for a set of several complex NaNs, which the compiler can
produce by constant folding, making the module impossible to marshal.
On this branch the failure was reported as MemoryError.

Sort (dump, index, element) tuples, in which the indexes are all
different.  Elements with the same dump stay in the order of the set,
as float NaNs did before.

(cherry picked from commit 1967a87ad3)
2026-10-11 23:27:49 +00:00
Gregory P. Smith 4c2433f310 [3.15] gh-159185: Fix marshalling of a set modified while its elements are marshalled (GH-159195) (#159199)
Marshalling a set element can run Python code (__buffer__, an audit
hook) which changes the set.  The number of elements was read before
the loop, so a set which grew was written past the end of the list and
one which shrank left NULL items in the list which was then sorted.
Raise RuntimeError("set changed size during iteration") instead.

(cherry picked from commit cd71799c47)
2026-10-11 21:55:14 +00:00
+2 4ceb3faf2c [3.15] Restore deferred backports for 3.15.1, including GH-158874 (#158882)
* [3.15] gh-153364: Make frame, coroutine, and task-waiter chain walks iterative and bounded (GH-153365) (#158813)

gh-153364: Make frame, coroutine, and task-waiter chain walks iterative and bounded (GH-153365)

* let me declare single limit

* use our new limit in process_frame_chain()

* add it in parse_async_frame_chain()

* parse_coro_chain()

* NEWS

* async in the message?

* test

* no race

* process_task_awaited_by

* process_task_awaited_by limit test

* NEWS

* MAX_TASK_WAITER_CHAIN_DEPTH

* TASK_WAITER_CHAIN_DEPTH in test

* TASK_WAITER_CHAIN_DEPTH 256

* prevent the drift with the comment

* better naming, better style

* MAX_TASK_WAITER_CHAIN_DEPTH comment

* task-waiter iterative bfs walk

* iterative coro-walk

* nicer news

* 1 << 14

* comment

* unused read_Py_ssize_t

* fix tombstones

* simplify

* correct msg

* better test

* news for tombstones

* left-over from when testing buggy version

* redundant new line
(cherry picked from commit e0861c6ae7)

Co-authored-by: Maurycy Pawłowski-Wieroński <maurycy@maurycy.com>
(cherry picked from commit 9e401cf7f5)

* [3.15] gh-155811: Add a seqcount to `gc_stats` to prevent torn reads (GH-155828) (#158829)

* update_seq

* no need for XCHGL, MOVL is enough?

* gh-155811: Retry an inconsistent GC snapshot once

---------
(cherry picked from commit 5fecd448bb)

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 028124039c)

* [3.15] gh-151292: `_remote_debugging`: Do not corrupt the binary file when hitting `OverflowError` (GH-152892) (#158830)

gh-151292: `_remote_debugging`: Do not corrupt the binary file when hitting `OverflowError` (GH-152892)

* the kolektor

* test

* better test

* news

* =Q, move const to the base, not self.running

* gh-151292: Track binary writer finalization state

---------
(cherry picked from commit f839c061d3)

Co-authored-by: Maurycy Pawłowski-Wieroński <maurycy@maurycy.com>
Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
(cherry picked from commit 8a7c23f316)

* [3.15] gh-158583: Fix uninitialized memory read in bytes.fromhex() (GH-158584) (#158691)

gh-158583: Fix uninitialized memory read in bytes.fromhex() (GH-158584)
(cherry picked from commit 9d22a5334b)

Co-authored-by: Victor Stinner <vstinner@python.org>
(cherry picked from commit 4f7af46e25)

* [3.15] gh-154194: Degrade frames in Tachyon instead of failing the sample (GH-154195) (#158831)

* gh-154194: Degrade frames in Tachyon instead of failing the sample (#154195)

* degrade gracefully

* news

* better NEWS wording

* do not raise on MAX_REMOTE_STR_READ

* bye MAX_REMOTE_STR_READ

* fix -m asyncio ps|pstree

* test truncation and linetable sentinel

* simpler

* simpler

* redundant now

* respect #157790 in the news

---------

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
(cherry picked from commit 7d25916b41)

* Preserve the stable ABI when creating fallback frame names

---------

Co-authored-by: Maurycy Pawłowski-Wieroński <maurycy@maurycy.com>
(cherry picked from commit c27f494061)

* [3.15] Add MSan to CI (GH-158625) (#158832)

Run a job that the test suite with MSan to the CI (#158625)

* Run the test suite with MSan in CI

* Additional fixes

* Add `_Py_MSAN_UNPOISON_STRING`

* Apply Victor's suggestions

* Apply Victor's suggestions

---------

(cherry picked from commit b93fb19a6e)

Co-authored-by: Stan Ulbrych <stan@python.org>
Co-authored-by: Victor Stinner <victor.stinner@gmail.com>
(cherry picked from commit 1bc78dea18)

* [3.15] gh-156810: Write the profiler's collapsed-stack export as UTF-8 (GH-156811) (#156814)

gh-156810: Write the profiler's collapsed-stack export as UTF-8 (GH-156811)
(cherry picked from commit c3706f4c68)

Co-authored-by: tonghuaroot (童话) <tonghuaroot@gmail.com>
(cherry picked from commit fce28da9b7)

* [3.15] gh-158552: Wait for Windows threads to suspend before blocking sampling (GH-158802) (#158845)

gh-158552: Wait for Windows threads to suspend before blocking sampling (GH-158802)

* gh-158552: Wait for Windows threads to suspend before blocking sampling

* Use a named Windows thread enumeration status constant
(cherry picked from commit 1643525f0f)

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
(cherry picked from commit 31288da21d)

* [3.15] gh-152721: Fix quadratic RLE replay time in the profiling binary reader (GH-152722) (#158850)

Backport of GH-152722.

Co-authored-by: tonghuaroot <tonghuaroot@gmail.com>
(cherry picked from commit ebaca2ac2d)

* [3.15] gh-156545: Fix flamegraph export RecursionError on deeply recursive programs (GH-156546) (#158851)

Backport of GH-156546.

Co-authored-by: tonghuaroot (童话) <tonghuaroot@gmail.com>
(cherry picked from commit 0ac7217040)

* [3.15] gh-158540: Add the profiled script's directory to sys.path (GH-158548) (#158844)

gh-158540: Add the profiled script's directory to sys.path (GH-158548)

* gh-158540: Add the profiled script's directory to sys.path

When a script is profiled with ``python -m profiling.sampling run
script.py`` from another directory, the script cannot import modules
placed next to it, because ``_sync_coordinator._execute_script()``
executes it with the working directory (added by
``_setup_environment()`` for the module case) as ``sys.path[0]``
instead of the script's own directory.

Make the script's directory importable in ``_execute_script()``,
matching the behavior of ``python script.py``.

Add a regression test that runs the coordinator on a script importing
a sibling module.

* Update _sync_coordinator.py Comment simplified

* gh-158540: Resolve symlinks when adding the script directory to sys.path

``python script.py`` resolves symlinks when computing ``sys.path[0]``, so
a script reached through a symlink (``link.py -> sub/where.py``) imports
modules from the real script's directory.  Apply ``os.path.realpath()``
before taking the directory name, and make sure the result is placed at
the front of ``sys.path`` even if it was already listed.

Add a regression test for a symlinked script.

---------
(cherry picked from commit 3f02aab9fa)

Co-authored-by: he_tao <53343436+hetaozdh@users.noreply.github.com>
Co-authored-by: Eduardo Villalpando Mello <eduardo.villalpando.mello@gmail.com>
(cherry picked from commit f52d831397)

* [3.15] gh-153838: Skip non-regular source files in the heatmap exporter (GH-153839) (#158853)

Backport of GH-153839.

Co-authored-by: tonghuaroot <tonghuaroot@gmail.com>
(cherry picked from commit 48998df251)

* [3.15] gh-158539: Fix exception mode missing handlers in generators/coroutines (GH-158581) (#158852)

* [3.15] gh-158539: Fix exception mode missing handlers in generators/coroutines (GH-158581)

Backport of GH-158581.

Co-authored-by: LucasZhou <donghao.zhou@outlook.com>

* [3.15] gh-158539: Use portable static assertion messages

* [3.15] gh-158539: Keep layout assertions with debug-offset validation

* [3.15] gh-158539: Use the platform guard for in-process inspection tests

---------

Co-authored-by: LucasZhou <donghao.zhou@outlook.com>
(cherry picked from commit d625ecbb8d)

* [3.15] gh-158522: Fix truncated stack for a task whose coroutine recurses (GH-158526) (#158870)

Co-authored-by: Timofei Ivankov <128279579+deadlovelll@users.noreply.github.com>
(cherry picked from commit a904b397ed)

* gh-156545, gh-158539: Fix deep flamegraph export on small C stacks and macOS runtime lookup (#158874)

(cherry picked from commit 114de198c0)

Include the C-stack test helper from main, introduced by
ce5ae29ef9, which the regression test
requires but 3.15 does not yet provide.

---------

Co-authored-by: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Co-authored-by: Maurycy Pawłowski-Wieroński <maurycy@maurycy.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Victor Stinner <vstinner@python.org>
Co-authored-by: Stan Ulbrych <stan@python.org>
Co-authored-by: Victor Stinner <victor.stinner@gmail.com>
Co-authored-by: tonghuaroot (童话) <tonghuaroot@gmail.com>
Co-authored-by: he_tao <53343436+hetaozdh@users.noreply.github.com>
Co-authored-by: Eduardo Villalpando Mello <eduardo.villalpando.mello@gmail.com>
Co-authored-by: LucasZhou <donghao.zhou@outlook.com>
Co-authored-by: Timofei Ivankov <128279579+deadlovelll@users.noreply.github.com>
2026-10-11 15:42:59 +01:00
ae21cb7ccf [3.15] gh-156204: Guard recursion in PyErr_GivenExceptionMatches (GH-156205) (GH-158622)
(cherry picked from commit 20d5e67fc5)

Co-authored-by: Bhuvansh <bhuvanshkataria@gmail.com>
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
2026-10-11 07:20:28 +00:00
Victor Stinner c774d1526f [3.15] gh-158893: Make os.strerror() thread-safe (#159120)
* gh-157695: Parse also _Py_HAVE_xxx variables in sysconfig (#158926)

Add parse_config_h() tests to test_sysconfig.

(cherry picked from commit 978a8befa5)

* gh-158893: Make os.strerror() thread-safe (#158927)

Make os.strerror() thread-safe: use the reentrant strerror_r()
function if available.

* The configure script now checks if strerror_r() is supported.
* Add a stress test to test_free_threading.test_os (new module).
* Add a comment on decode_current_locale() assertion which fails if
  the input string is mutated.
* Add an assertion to _Py_DecodeLocale() to detect if the input
  string was mutated during the function call.

* gh-158893: Add internal _Py_strerror() function (#158982)

Add a new internal _Py_strerror() function to Python/fileutils.c. It
uses strerror_r() if available, or use strerror() otherwise.

Replace all strerror(code) calls with _Py_strerror(code).

(cherry picked from commit 15dd7356f3)
2026-10-10 22:08:49 +02:00
Miss Islington (bot)andIrit Katriel f7523edbb1 [3.15] gh-156466: fix cleanup on error after Enter in codegen_enter_scope (GH-156467) (GH-156616)
(cherry picked from commit 41b3f0af26)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
2026-10-10 14:00:18 +03:00
Miss Islington (bot)andIrit Katriel e2d4d04afb [3.15] gh-156466: fix cleanup on error in codegen_function_body (GH-156511) (GH-156578)
(cherry picked from commit d94c4ad1b6)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
2026-10-10 13:59:36 +03:00
Miss Islington (bot)andIrit Katriel 6295a17865 [3.15] gh-156459: Fix cleanup on error in compiler_set_qualname (GH-156462) (GH-156574)
(cherry picked from commit 8b082aa405)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
2026-10-10 13:58:08 +03:00
Miss Islington (bot)andPeter Hawkins 35c77f2c00 [3.15] gh-152075: Avoid lock contention in _Py_Specialize_LoadGlobal under free threading (gh-153720) (#158905)
gh-152075: Avoid lock contention in _Py_Specialize_LoadGlobal under free threading (gh-153720)

Under high thread concurrency in free-threaded builds, `_Py_Specialize_LoadGlobal` suffers from lock contention when acquiring the critical section mutexes for the `globals` and `builtins` dictionaries during bytecode specialization.

This PR skips LOAD_GLOBAL bytecode specialization if acquiring the two object mutexes would block.
(cherry picked from commit ac8ba0ca5a)

Co-authored-by: Peter Hawkins <phawkins@google.com>
2026-10-10 16:03:02 +05:30
Miss Islington (bot)andIrit Katriel 845fb344be [3.15] gh-156091: Fix crash compiling deeply nested inlined comprehensions (GH-156957) (GH-156992)
(cherry picked from commit 14a93f4d91)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
2026-10-10 13:32:32 +03:00
Miss Islington (bot)andIrit Katriel df33d93ef3 [3.15] gh-156466: fix cleanup on error in codegen_class_body (GH-156507) (GH-156535)
(cherry picked from commit 683ef4082d)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
2026-10-10 13:31:49 +03:00
Miss Islington (bot)andIrit Katriel 55f75ea914 [3.15] gh-156466: fix cleanup on error in codegen_function_annotations (GH-156502) (GH-156508)
(cherry picked from commit 0e29768493)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
2026-10-10 13:31:16 +03:00
Miss Islington (bot)andAbdul Mohammad ccbdd1fba6 [3.15] gh-155504: Set the interpreter before fallible thread state initialization (GH-155590) (GH-155884)
(cherry picked from commit 94a75f74a1)

Co-authored-by: Abdul Mohammad <154353563+abdulm5@users.noreply.github.com>
2026-10-10 13:27:53 +03:00
Miss Islington (bot)andtonghuaroot c8288b6b97 [3.15] gh-155315: Fix marshal round-trip of shared frozendict references (GH-155316) (GH-155945)
The TYPE_FROZENDICT reader reserved a reference slot but never filled it with
r_ref_insert, unlike TYPE_FROZENSET, so a frozendict referenced more than once
failed to load with ValueError.
(cherry picked from commit b6c11feb67)

Co-authored-by: tonghuaroot (童话) <tonghuaroot@gmail.com>
2026-10-10 12:52:40 +03:00
Miss Islington (bot)andtonghuaroot 2395a97f01 [3.15] gh-151895: Fix marshal.loads() crash on dict reference-tracking failure (GH-151896) (GH-155902)
Loading a reference-tracked dictionary dereferenced a NULL pointer when
the allocation that registers it for back-references failed under low
memory.  It now raises MemoryError, matching the tuple and list paths.
(cherry picked from commit 5b96d39147)

Co-authored-by: tonghuaroot (童话) <tonghuaroot@gmail.com>
2026-10-10 12:52:14 +03:00
Miss Islington (bot)andSerhiy Storchaka d21c5012fc [3.15] gh-87587: Fix os.device_encoding() for any console on Windows (GH-155410) (GH-156592)
It was hard coded to map file descriptors 0, 1 and 2 to the console code
page, but a console can be opened as any file descriptor, and other
character devices, like NUL, are not consoles.

The file handle is now queried.  The UTF-8 code page is also now reported
as "utf-8" instead of "cp65001".
(cherry picked from commit b4aea41d1c)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2026-10-10 09:44:07 +00:00
Miss Islington (bot)andSerhiy Storchaka 4e62a8af56 [3.15] gh-86427: Use the console code page for the stdio encoding on Windows (GH-155415) (GH-156602)
In the legacy Windows stdio mode PyConfig.stdio_encoding is now initialized
with the console output code page instead of the ANSI code page.

Only one encoding can be specified, so sys.stdin.encoding is still wrong if
the input code page differs from the output one.
(cherry picked from commit 0bb312a4ea)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2026-10-10 12:34:51 +03:00
Miss Islington (bot)andSerhiy Storchaka 3833fa923b [3.15] gh-123011: Fix warn_explicit() with the globals of the __main__ module (GH-155318) (GH-155989)
The __main__ module executed as a script or a command has __spec__ set to
None, so warn_explicit(module_globals=globals()) emitted a spurious
DeprecationWarning.  It also raised ImportError when the loader was unable
to provide the source of the module: when the module was executed with -m
(the loader can only handle its own module name) or as a command (the
built-in importer has no source).
(cherry picked from commit f2eaf174b2)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2026-10-10 12:31:08 +03:00
Miss Islington (bot)andSerhiy Storchaka 2d1161099a [3.15] gh-155319: Fix the source line of a warning issued with module_globals (GH-155320) (GH-155824)
warn_explicit() computed the source line from the loader of the module
whose globals were passed as module_globals, but did not pass it to
WarningMessage.  It also raised IndexError if lineno was out of the range
of the module source.
(cherry picked from commit c92e2fd8f9)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2026-10-10 12:29:21 +03:00
Miss Islington (bot)andBrittany Reynoso f8375c23b9 [3.15] gh-158820: Add null checks to avoid segfaults with lazy imports at shutdown (GH-158821) (#159062)
gh-158820: Add null checks to avoid segfaults with lazy imports at shutdown (GH-158821)

Destructors can run after finalization has cleared the interpreter's
lazy_modules set and lazy_pending_submodules dict. Declaring or
resolving a lazy import from one of them passed NULL to PySet_Add(),
PySet_Discard() or the pending-submodules lookup.

Treat the bookkeeping as a no-op once the state is gone, as the other
readers of this state already do.
(cherry picked from commit a6e636148e)

Co-authored-by: Brittany Reynoso <breynoso@meta.com>
2026-10-09 12:14:23 -07:00
Serhiy Storchaka fbbe36329b [3.15] gh-113318: Fix @getter and @setter in Argument Clinic (GH-155778) (GH-156010)
(cherry picked from commit 915970ce9d)
2026-10-09 20:54:35 +03:00
Miss Islington (bot)andIrit Katriel ba5855b5d6 [3.15] gh-156525: fix a few error path scope management bugs in symtable (GH-156526) (#156532)
gh-156525: fix a few error path scope management bugs in symtable (GH-156526)
(cherry picked from commit 932822cbc9)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
2026-10-09 08:59:38 -07:00
Pablo Galindo Salgado c49b3dc3cd [3.15] Revert backports merged during the 3.15.0 release freeze on 5 October (#158873) 2026-10-05 17:15:41 +00:00
1bc78dea18 [3.15] Add MSan to CI (GH-158625) (#158832)
Run a job that the test suite with MSan to the CI (#158625)

* Run the test suite with MSan in CI

* Additional fixes

* Add `_Py_MSAN_UNPOISON_STRING`

* Apply Victor's suggestions



* Apply Victor's suggestions



---------


(cherry picked from commit b93fb19a6e)

Co-authored-by: Stan Ulbrych <stan@python.org>
Co-authored-by: Victor Stinner <victor.stinner@gmail.com>
2026-10-05 10:28:24 +00:00
Pablo Galindo SalgadoandMaurycy Pawłowski-Wieroński c27f494061 [3.15] gh-154194: Degrade frames in Tachyon instead of failing the sample (GH-154195) (#158831)
* gh-154194: Degrade frames in Tachyon instead of failing the sample (#154195)

* degrade gracefully

* news

* better NEWS wording

* do not raise on MAX_REMOTE_STR_READ

* bye MAX_REMOTE_STR_READ

* fix -m asyncio ps|pstree

* test truncation and linetable sentinel

* simpler

* simpler

* redundant now

* respect #157790 in the news

---------

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
(cherry picked from commit 7d25916b41)

* Preserve the stable ABI when creating fallback frame names

---------

Co-authored-by: Maurycy Pawłowski-Wieroński <maurycy@maurycy.com>
2026-10-05 10:03:58 +00:00
028124039c [3.15] gh-155811: Add a seqcount to gc_stats to prevent torn reads (GH-155828) (#158829)
* update_seq

* no need for XCHGL, MOVL is enough?

* gh-155811: Retry an inconsistent GC snapshot once

---------
(cherry picked from commit 5fecd448bb)

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 10:21:24 +01:00
03bb26f89e [3.15] gh-158140: Resolve lazily imported sibling submodules independently (GH-158521) (#158613)
Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: T. Wouters <thomas@python.org>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2026-10-02 18:48:03 +00:00