cpython/Objects
Miss Islington (bot) d0176ed911
[3.12] gh-105699: Fix an Interned Strings Crasher (gh-106930) (#106963)
gh-105699: Fix an Interned Strings Crasher (gh-106930)

A static (process-global) str object must only have its "interned" state cleared when no longer interned in any interpreters.  They are the only ones that can be shared by interpreters so we don't have to worry about any other str objects.

We trigger clearing the state with the main interpreter, since no other interpreters may exist at that point and _PyUnicode_ClearInterned() is only called during interpreter finalization.

We do not address here the fact that a string will only be interned in the first interpreter that interns it.  In any subsequent interpreters str.state.interned is already set so _PyUnicode_InternInPlace() will skip it.  That needs to be addressed separately from fixing the crasher.
(cherry picked from commit 87e7cb09e4)

Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
2023-07-21 22:28:22 +02:00
..
clinic gh-103763: Implement PEP 695 (#103764) 2023-05-15 20:36:23 -07:00
stringlib
abstract.c
boolobject.c GH-103906: Remove immortal refcounting in the interpreter (GH-103909) 2023-05-16 14:36:02 -07:00
bytearrayobject.c gh-104223: Fix issues with inheriting from buffer classes (#104227) 2023-05-08 09:52:41 -07:00
bytes_methods.c gh-84436: Implement Immortal Objects (gh-19474) 2023-04-22 13:39:37 -06:00
bytesobject.c [3.12] gh-105235: Prevent reading outside buffer during mmap.find() (GH-105252) (#106708) 2023-07-14 22:15:14 -04:00
call.c GH-103899: Provide a hint when accidentally calling a module (GH-103900) 2023-05-04 15:07:42 -07:00
capsule.c
cellobject.c
classobject.c gh-94673: Ensure Builtin Static Types are Readied Properly (gh-103940) 2023-04-27 16:19:43 -06:00
codeobject.c [3.12] Fix possible refleak in CodeType.replace() (GH-106243) (GH-106244) 2023-06-29 21:41:01 +03:00
complexobject.c
descrobject.c [3.12] gh-98963: Restore the ability to have a dict-less property. (GH-105262) (#105297) 2023-06-05 03:45:12 +00:00
dictnotes.txt
dictobject.c gh-104717: Add comment about manual loop unrolling (gh-104718) 2023-05-21 21:08:28 +09:00
enumobject.c
exception_handling_notes.txt
exceptions.c [3.12] gh-106033: Get rid of new occurrences of PyDict_GetItem and Py… (#106041) 2023-06-24 16:36:34 -07:00
fileobject.c
floatobject.c gh-104263: Rely on Py_NAN and introduce Py_INFINITY (GH-104202) 2023-05-10 17:44:52 +01:00
frame_layout.md
frameobject.c [3.12] gh-105340: include hidden fast-locals in locals() (GH-105715) (#106470) 2023-07-05 23:31:37 +00:00
funcobject.c [3.12] gh-106033: Get rid of PyDict_GetItem in _PyFunction_FromConstructor (GH-106044) (GH-106228) 2023-06-29 13:45:39 +03:00
genericaliasobject.c [3.12] gh-105486: Change the repr of ParamSpec list of args in GenericAlias (GH-105488) (#106297) 2023-07-01 00:32:44 +00:00
genobject.c [3.12] GH-105162: Account for INSTRUMENTED_RESUME in gen.close/throw. (GH-105187) (#105378) 2023-06-06 14:06:44 +00:00
interpreteridobject.c
iterobject.c
listobject.c
listsort.txt
lnotab_notes.txt
locations.md
longobject.c GH-101291: Add low level, unstable API for pylong (GH-101685) 2023-05-21 14:45:48 +01:00
memoryobject.c gh-104223: Fix issues with inheriting from buffer classes (#104227) 2023-05-08 09:52:41 -07:00
methodobject.c
moduleobject.c [3.12] gh-106719: Fix __annotations__ getter and setter in the type and module types (GH-106720) (GH-106848) 2023-07-18 10:01:22 +03:00
namespaceobject.c
object.c [3.12] gh-105340: include hidden fast-locals in locals() (GH-105715) (#106470) 2023-07-05 23:31:37 +00:00
object_layout.md
object_layout_312.gv
object_layout_312.png
object_layout_full_312.gv
object_layout_full_312.png
obmalloc.c [3.12] gh-100227: Lock Around Modification of the Global Allocators State (gh-105516) (gh-105532) 2023-06-08 22:35:53 +00:00
odictobject.c
picklebufobject.c
rangeobject.c
README
setobject.c gh-84436: Implement Immortal Objects (gh-19474) 2023-04-22 13:39:37 -06:00
sliceobject.c gh-84436: Implement Immortal Objects (gh-19474) 2023-04-22 13:39:37 -06:00
structseq.c gh-94673: More Per-Interpreter Fields for Builtin Static Types (gh-103912) 2023-05-02 21:30:03 -06:00
tupleobject.c gh-94673: Ensure Builtin Static Types are Readied Properly (gh-103940) 2023-04-27 16:19:43 -06:00
typeobject.c [3.12] gh-106719: Fix __annotations__ getter and setter in the type and module types (GH-106720) (GH-106848) 2023-07-18 10:01:22 +03:00
typeslots.inc
typeslots.py
typevarobject.c [3.12] gh-106403: Restore weakref support for TypeVar and friends (GH-106418) (#106635) 2023-07-11 16:15:30 +00:00
unicodectype.c
unicodeobject.c [3.12] gh-105699: Fix an Interned Strings Crasher (gh-106930) (#106963) 2023-07-21 22:28:22 +02:00
unicodetype_db.h
unionobject.c gh-104549: Set __module__ on TypeAliasType (#104550) 2023-05-18 15:56:15 -07:00
weakrefobject.c gh-94673: Properly Initialize and Finalize Static Builtin Types for Each Interpreter (gh-104072) 2023-05-01 19:36:00 -06:00

Source files for various builtin objects