Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Bug report
Bug description:
Modification of type slots is protected by the global type lock, however, type slots are read non-atomically without holding the type lock. For example, inPyObject_SetItem:
Lines 231 to 235 in5bb059f
| if (m&&m->mp_ass_subscript) { | |
| intres=m->mp_ass_subscript(o,key,value); | |
| assert(_Py_CheckSlotResult(o,"__setitem__",res >=0)); | |
| returnres; | |
| } |
It's not clear how we want to address this. From@colesbury in#127169 (comment):
I'd lean towards doing a stop-the-world pause when modifying the slot so that we don't need to change every read. I expect that to be a bit tricky since class definitions look like they're mutating the class.CPython versions tested on:
3.13, 3.14, CPython main branch
Operating systems tested on:
Linux