diff --git a/Doc/data/python3.14.abi b/Doc/data/python3.14.abi index f180757e352053..c5630fd8dd1bd8 100644 --- a/Doc/data/python3.14.abi +++ b/Doc/data/python3.14.abi @@ -1565,6 +1565,7 @@ + @@ -1816,7 +1817,7 @@ - + @@ -1903,7 +1904,7 @@ - + @@ -4340,7 +4341,7 @@ - + @@ -4418,12 +4419,12 @@ - + - + @@ -5284,7 +5285,7 @@ - + @@ -5751,7 +5752,7 @@ - + @@ -5767,7 +5768,14 @@ - + + + + + + + + @@ -5817,7 +5825,7 @@ - + @@ -5895,24 +5903,24 @@ - - - + + + - - - + + + - - + + - + @@ -5925,7 +5933,7 @@ - + @@ -5944,7 +5952,7 @@ - + @@ -5962,7 +5970,7 @@ - + @@ -5972,8 +5980,8 @@ - - + + @@ -5981,7 +5989,7 @@ - + @@ -6020,6 +6028,15 @@ + + + + + + + + + @@ -6050,39 +6067,39 @@ - - - + + + - - + + - - + + - - + + - - + + - + - + - + - + @@ -6093,42 +6110,42 @@ - + - - + + - + - + - + - + - + - + - + @@ -6148,7 +6165,7 @@ - + @@ -6159,7 +6176,7 @@ - + @@ -6170,12 +6187,12 @@ - + - + @@ -6184,7 +6201,7 @@ - + @@ -6198,23 +6215,23 @@ - - + + - + - + - - + + - + - - + + @@ -6231,34 +6248,34 @@ - + - + - + - + - - + + - + - + - + - + @@ -6267,47 +6284,47 @@ - + - + - + - + - + - + - - + + - + - + - + - - - - - - - - - + + + + + + + + + - + @@ -6320,25 +6337,25 @@ - + - + - + - + - + - + @@ -6346,7 +6363,7 @@ - + @@ -6365,7 +6382,7 @@ - + @@ -6410,7 +6427,7 @@ - + @@ -6418,7 +6435,7 @@ - + @@ -6442,7 +6459,7 @@ - + @@ -6462,26 +6479,26 @@ - + - + - + - + - + @@ -6502,26 +6519,26 @@ - + - + - + - - + + - - + + @@ -6529,59 +6546,59 @@ - + - - + + - + - + - + - + - - - - + + + + - + - + - + - + @@ -6593,11 +6610,11 @@ - + - - + + @@ -6644,7 +6661,7 @@ - + @@ -6668,16 +6685,16 @@ - + - + - + - + @@ -6689,12 +6706,12 @@ - + - - - + + + @@ -6702,15 +6719,15 @@ - + - - + + - + @@ -6742,9 +6759,9 @@ - - - + + + @@ -6752,19 +6769,19 @@ - + - + - + - + @@ -6777,7 +6794,7 @@ - + @@ -6825,66 +6842,66 @@ - - - + + + - + - + - - - + + + - + - + - - + + - - + + - - - + + + - + - + - - - + + + - + - + - - + + - - - + + + - + @@ -6900,7 +6917,7 @@ - + @@ -6908,7 +6925,7 @@ - + @@ -6926,12 +6943,12 @@ - + - + @@ -6961,7 +6978,7 @@ - + @@ -6998,17 +7015,17 @@ - + - + - + @@ -7027,11 +7044,11 @@ - - - + + + - + @@ -7040,59 +7057,59 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + @@ -7120,7 +7137,7 @@ - + @@ -7145,190 +7162,190 @@ - - + + - - - + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - + + - - - - - - + + + + + + @@ -7344,7 +7361,7 @@ - + @@ -7542,125 +7559,125 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - - - - - + + + + + + + @@ -7811,7 +7828,7 @@ - + @@ -7915,41 +7932,41 @@ - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + @@ -8015,23 +8032,23 @@ - + - + - - + + - + - + @@ -8066,64 +8083,64 @@ - + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -8162,7 +8179,7 @@ - + @@ -8193,7 +8210,7 @@ - + @@ -8228,12 +8245,12 @@ - - + + - - + + @@ -8291,7 +8308,7 @@ - + @@ -8326,7 +8343,7 @@ - + @@ -8389,7 +8406,7 @@ - + @@ -8429,7 +8446,7 @@ - + @@ -8439,7 +8456,7 @@ - + @@ -8503,13 +8520,13 @@ - + - + - + @@ -8524,7 +8541,7 @@ - + @@ -8554,7 +8571,7 @@ - + @@ -8599,14 +8616,14 @@ - + - + @@ -8656,9 +8673,9 @@ - - - + + + @@ -8701,7 +8718,7 @@ - + @@ -8713,24 +8730,24 @@ - + - + - + - + @@ -8957,7 +8974,7 @@ - + @@ -9073,7 +9090,7 @@ - + @@ -9114,10 +9131,10 @@ - + - + @@ -9136,7 +9153,7 @@ - + @@ -9279,8 +9296,8 @@ - - + + @@ -9293,7 +9310,7 @@ - + @@ -9336,7 +9353,13 @@ - + + + + + + + @@ -9344,7 +9367,7 @@ - + @@ -9352,6 +9375,14 @@ + + + + + + + + @@ -9386,18 +9417,18 @@ - + - + - - - - + + + + @@ -9442,8 +9473,8 @@ - - + + @@ -9477,203 +9508,203 @@ - + - - + + - - + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - - + + + + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -9687,13 +9718,13 @@ - + - - + + - + @@ -9727,10 +9758,10 @@ - + - + @@ -9748,10 +9779,10 @@ - + - + @@ -9766,10 +9797,10 @@ - + - + @@ -9812,7 +9843,7 @@ - + @@ -9833,7 +9864,7 @@ - + @@ -9854,7 +9885,7 @@ - + @@ -9863,7 +9894,7 @@ - + @@ -10021,7 +10052,7 @@ - + @@ -10275,7 +10306,7 @@ - + @@ -10299,10 +10330,10 @@ - + - + @@ -10470,7 +10501,7 @@ - + @@ -10502,29 +10533,29 @@ - + - + - + - - - - + + + + - - - + + + @@ -10546,7 +10577,7 @@ - + @@ -10580,7 +10611,7 @@ - + @@ -10593,7 +10624,7 @@ - + @@ -10662,7 +10693,7 @@ - + @@ -10734,23 +10765,23 @@ - - - + + + - - - + + + - - - + + + - - + + @@ -10774,9 +10805,9 @@ - + - + @@ -10798,7 +10829,7 @@ - + @@ -10851,7 +10882,7 @@ - + @@ -10889,47 +10920,47 @@ - + - + - + - + - + - + - + - + - + @@ -10951,7 +10982,7 @@ - + @@ -11038,7 +11069,7 @@ - + @@ -11128,35 +11159,35 @@ - - - + + + - - - + + + - + - - + + - - - - - + + + + + - + @@ -11340,7 +11371,7 @@ - + @@ -11404,7 +11435,7 @@ - + @@ -11430,452 +11461,452 @@ - - + + - - - - - - + + + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - - + + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + - - - - + + + + - - + + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + - - + + - - - + + + - - + + - - + + - + - - + + - - + + @@ -11902,7 +11933,7 @@ - + @@ -11920,7 +11951,7 @@ - + @@ -11961,32 +11992,32 @@ - + - + - + - + - + - + - + - + - + @@ -12009,7 +12040,7 @@ - + @@ -13091,7 +13122,7 @@ - + @@ -14480,55 +14511,55 @@ - + - - + + - + - + - + - - + + - + - + - + - - + + - + - + - + @@ -14559,14 +14590,14 @@ - + - - - + + + @@ -14587,7 +14618,7 @@ - + @@ -14595,21 +14626,21 @@ - + - + - + - + - + @@ -14621,7 +14652,7 @@ - + @@ -14642,7 +14673,7 @@ - + @@ -14672,22 +14703,22 @@ - + - + - + - + @@ -14702,7 +14733,7 @@ - + @@ -14711,7 +14742,7 @@ - + @@ -14734,13 +14765,13 @@ - + - - + + @@ -14773,7 +14804,7 @@ - + @@ -14824,13 +14855,13 @@ - + - - + + @@ -14851,7 +14882,7 @@ - + @@ -14870,7 +14901,7 @@ - + @@ -14878,11 +14909,11 @@ - + - - + + @@ -14929,7 +14960,7 @@ - + @@ -14953,16 +14984,16 @@ - + - + - + - + @@ -14974,7 +15005,7 @@ - + @@ -14983,8 +15014,8 @@ - - + + @@ -14992,7 +15023,7 @@ - + @@ -15000,7 +15031,7 @@ - + @@ -15037,7 +15068,7 @@ - + @@ -15085,10 +15116,10 @@ - + - + @@ -15368,10 +15399,10 @@ - + - + @@ -15380,7 +15411,7 @@ - + @@ -15456,7 +15487,7 @@ - + @@ -15673,10 +15704,10 @@ - + - + @@ -15694,10 +15725,10 @@ - + - + @@ -15727,7 +15758,7 @@ - + @@ -15754,13 +15785,13 @@ - + - + @@ -15785,7 +15816,7 @@ - + @@ -15859,7 +15890,7 @@ - + @@ -15874,7 +15905,7 @@ - + @@ -15943,7 +15974,7 @@ - + @@ -16038,13 +16069,13 @@ - + - + @@ -17405,7 +17436,7 @@ - + @@ -17894,7 +17925,7 @@ - + @@ -18111,10 +18142,10 @@ - + - + @@ -20679,7 +20710,7 @@ - + @@ -20687,7 +20718,7 @@ - + @@ -20919,7 +20950,7 @@ - + @@ -20968,10 +20999,10 @@ - + - + @@ -21130,13 +21161,13 @@ - + - + - + @@ -21218,7 +21249,7 @@ - + @@ -21428,7 +21459,7 @@ - + @@ -21483,7 +21514,7 @@ - + @@ -21515,7 +21546,7 @@ - + @@ -21604,127 +21635,127 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + @@ -21771,13 +21802,13 @@ - + - + - + @@ -21817,7 +21848,7 @@ - + @@ -21881,7 +21912,7 @@ - + @@ -22031,10 +22062,10 @@ - + - + @@ -22048,7 +22079,7 @@ - + @@ -22059,13 +22090,16 @@ - + - + - + + + + @@ -22211,7 +22245,7 @@ - + @@ -22416,21 +22450,21 @@ - + - + - - + + - + - + @@ -22441,16 +22475,16 @@ - + - + - + @@ -22468,16 +22502,16 @@ - + - + - + @@ -22511,10 +22545,10 @@ - + - + @@ -22577,13 +22611,13 @@ - + - + - + @@ -22601,13 +22635,13 @@ - + - + - + @@ -22651,18 +22685,18 @@ - + - + - + - + @@ -22672,16 +22706,16 @@ - + - + - + @@ -22696,7 +22730,7 @@ - + @@ -22750,16 +22784,16 @@ - + - + - + - + @@ -22836,8 +22870,8 @@ - - + + @@ -23138,7 +23172,7 @@ - + @@ -23593,17 +23627,17 @@ - + - + - + - + @@ -23635,22 +23669,22 @@ - + - + - - + + - + - + @@ -23728,7 +23762,7 @@ - + @@ -23775,7 +23809,7 @@ - + @@ -24215,7 +24249,7 @@ - + @@ -24296,7 +24330,7 @@ - + @@ -24494,7 +24528,7 @@ - + @@ -24680,7 +24714,7 @@ - + @@ -24895,7 +24929,7 @@ - + @@ -24948,7 +24982,7 @@ - + @@ -25097,7 +25131,7 @@ - + @@ -25289,7 +25323,7 @@ - + @@ -25297,7 +25331,7 @@ - + @@ -25343,91 +25377,91 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25440,36 +25474,36 @@ - + - - + + - + - + - - - + + + - + @@ -25477,7 +25511,7 @@ - + @@ -25486,7 +25520,7 @@ - + @@ -25625,206 +25659,213 @@ - - - - - - + + + + + + - - + + - - - + + + - - - - + + + + + + + + + + + - - - + + + - - - + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - + - + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - - - - + + + + + - - - + + + - - - - + + + + - - - + + + @@ -26100,7 +26141,7 @@ - + @@ -26118,7 +26159,7 @@ - + @@ -26231,7 +26272,7 @@ - + @@ -26321,7 +26362,7 @@ - + @@ -26548,7 +26589,7 @@ - + @@ -26602,7 +26643,7 @@ - + @@ -26740,7 +26781,7 @@ - + @@ -26772,7 +26813,7 @@ - + @@ -26810,7 +26851,7 @@ - + @@ -26876,7 +26917,7 @@ - + @@ -27582,109 +27623,109 @@ - - - + + + - + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - - - - - + + + + + + - - - - + + + + - - - + + + - + - - - + + + @@ -27927,7 +27968,7 @@ - + @@ -27952,7 +27993,7 @@ - + @@ -28083,34 +28124,34 @@ - + - + - + - + - - - + + + - - + + - - + + - - - + + + @@ -28584,24 +28625,24 @@ - + - + - + - + - + - + - + @@ -28846,173 +28887,173 @@ - - + + - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + - - + + - + - + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - + + + - + - - - + + + @@ -29030,12 +29071,12 @@ - - + + - + @@ -29291,7 +29332,7 @@ - + @@ -29305,13 +29346,13 @@ - + - + @@ -29323,7 +29364,7 @@ - + @@ -29449,11 +29490,11 @@ - + - + @@ -29612,12 +29653,12 @@ - + - + @@ -29632,7 +29673,7 @@ - + @@ -29753,7 +29794,7 @@ - + @@ -30185,7 +30226,7 @@ - + @@ -30430,7 +30471,7 @@ - + @@ -30646,7 +30687,7 @@ - + @@ -30680,7 +30721,7 @@ - + @@ -31292,7 +31333,7 @@ - + @@ -31316,16 +31357,16 @@ - + - + - + - + @@ -31347,26 +31388,26 @@ - + - + - - + + - - + + - - + + @@ -31376,7 +31417,7 @@ - + @@ -31401,7 +31442,7 @@ - + @@ -31617,7 +31658,7 @@ - + @@ -31660,18 +31701,18 @@ - + - + - + diff --git a/Include/internal/pycore_qsbr.h b/Include/internal/pycore_qsbr.h index 1f9b3fcf777493..eeca6fc472be37 100644 --- a/Include/internal/pycore_qsbr.h +++ b/Include/internal/pycore_qsbr.h @@ -83,8 +83,9 @@ struct _qsbr_shared { // Minimum observed read sequence of all QSBR thread states uint64_t rd_seq; - // Array of QSBR thread states. + // Array of QSBR thread states (aligned to 64 bytes). struct _qsbr_pad *array; + void *array_raw; // raw allocation pointer (for free) Py_ssize_t size; // Freelist of unused _qsbr_thread_states (protected by mutex) diff --git a/Include/internal/pycore_tstate.h b/Include/internal/pycore_tstate.h index c3ac52bd76613e..87f59c274ac747 100644 --- a/Include/internal/pycore_tstate.h +++ b/Include/internal/pycore_tstate.h @@ -80,6 +80,11 @@ typedef struct _PyThreadStateImpl { uintptr_t c_stack_init_base; uintptr_t c_stack_init_top; +#ifdef Py_GIL_DISABLED + // gh-144438: Add padding to ensure that the fields above don't share a + // cache line with other allocations. + char __padding[64]; +#endif } _PyThreadStateImpl; #ifdef __cplusplus diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-02-06-21-45-52.gh-issue-144438.GI_uB1LR.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-02-06-21-45-52.gh-issue-144438.GI_uB1LR.rst new file mode 100644 index 00000000000000..3e33e461ae8b5a --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-02-06-21-45-52.gh-issue-144438.GI_uB1LR.rst @@ -0,0 +1,2 @@ +Align the QSBR thread state array to a 64-byte cache line boundary to +avoid false sharing in the :term:`free-threaded build`. diff --git a/Python/qsbr.c b/Python/qsbr.c index c9fad5c05ef108..203daa0d307172 100644 --- a/Python/qsbr.c +++ b/Python/qsbr.c @@ -84,22 +84,29 @@ grow_thread_array(struct _qsbr_shared *shared) new_size = MIN_ARRAY_SIZE; } - struct _qsbr_pad *array = PyMem_RawCalloc(new_size, sizeof(*array)); - if (array == NULL) { + // Overallocate by 63 bytes so we can align to a 64-byte boundary. + // This avoids potential false sharing between the first entry and other + // allocations. + size_t alignment = 64; + size_t alloc_size = (size_t)new_size * sizeof(struct _qsbr_pad) + alignment - 1; + void *raw = PyMem_RawCalloc(1, alloc_size); + if (raw == NULL) { return -1; } + struct _qsbr_pad *array = _Py_ALIGN_UP(raw, alignment); - struct _qsbr_pad *old = shared->array; - if (old != NULL) { + void *old_raw = shared->array_raw; + if (shared->array != NULL) { memcpy(array, shared->array, shared->size * sizeof(*array)); } shared->array = array; + shared->array_raw = raw; shared->size = new_size; shared->freelist = NULL; initialize_new_array(shared); - PyMem_RawFree(old); + PyMem_RawFree(old_raw); return 0; } @@ -256,8 +263,9 @@ void _Py_qsbr_fini(PyInterpreterState *interp) { struct _qsbr_shared *shared = &interp->qsbr; - PyMem_RawFree(shared->array); + PyMem_RawFree(shared->array_raw); shared->array = NULL; + shared->array_raw = NULL; shared->size = 0; shared->freelist = NULL; }