Uh oh!
There was an error while loading. Please reload this page.
gh-112075: Make instance attributes stored in inline "dict" thread safe - #114742
Conversation
75c4227 to
4ac4f8bCompareUh oh!
There was an error while loading. Please reload this page.
57327a2 to
0b7b010Comparemarkshannon
commented
Feb 6, 2024
This looks inefficient, we really don't want locks in the fast path for attribute lookup. Rather than putting locks around things, maybe we can revisit the way we handle objects with managed dictionaries to consider free-threading? |
DinoV
commented
Feb 6, 2024
I assume you're referring to the latest unfinished version (as previous one only added a lock for dematerialization which as @colesbury pointed out isn't correct)? If so there aren't actually any locking for lookups in the fast path... There is an read w/ acquire semantics, but on strongly-ordered systems like x64 that's no different than a normal read anyway. It does introduce an incref/decref when reading from the dictionary. Also FWIW I think I don't need the spinning in I think we could get rid of the incref though if we disabled dematerialization in free-threading, but there's still going to be some ref count checks to see if the object is local, and if not to mark it as shared so that we'll free the values via QSBR. I'm not sure that can be avoided. |
DinoV
commented
Feb 6, 2024
I've run into an existing complication with the existing solution I've been trying. The limitation in the byte code generator " Until the last It also occurred to me that we're not just racing with de-materialization of the dict, but we're also racing with someone assigning to So an alternate plan might be:
|
markshannon
commented
Feb 7, 2024
eadcc3e to
3c3537eCompareUh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
f896695 to
b5a3231Comparebedevere-bot
commented
Apr 19, 2024
🤖 New build scheduled with the buildbot fleet by @colesbury for commit fc7d1a4 🤖 If you want to schedule another build, you need to add the 🔨 test-with-refleak-buildbots label again. |
fc7d1a4 to
4b85255Comparebedevere-bot
commented
Apr 19, 2024
bedevere-bot
commented
Apr 19, 2024
Fix issue where critical section isn't released Make _PyObject_TryGetInstanceAttribute return a bool
…issue w/ deleted dict
…y materialized dict Fix duplicate incref Fix comment Remove redundant if check on detach
bedevere-bot
commented
Apr 19, 2024
fac83b7 to
ac503e8Compare
Adds some locking around when we de-materialize a dictionary.
Also adds a comment where we'll need qsbr support for materialization.
dictobjects thread-safe in--disable-gilbuilds #112075