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
Foundhere, but this crash is unrelated, so opening a new issue.
The following could be simplified, but it crashes because PyDict_Next creates borrowed references.
importpicklefromrandomimportgetrandbitsclassBad:def__eq__(self,other):ifnotENABLED:returnFalsebreak_things()returngetrandbits(4)==0def__hash__(self):returngetrandbits(1)def__reduce__(self):break_things()return (Bad, (), ())def__setstate__(self,*args):break_things()def__del__(self):break_things()def__getattr__(self):break_things()defbreak_things():ifgetrandbits(6)==0:collection.clear()TRIALS=10_000SIZE=50foriinrange(TRIALS):try:ENABLED=Falsecollection= {Bad():Bad()for_inrange(SIZE)}forbadincollection:bad.bad=badbad.collection=collectionENABLED=Truepickle.loads(pickle.dumps(collection))exceptRuntimeErrorase:assert"changed size during iteration"instr(e)print("ok")
Metadata
Metadata
Assignees
Projects
Status
Done