This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author tim.peters
Recipients Mark.Shannon, christian.heimes, jdemeyer, lukasz.langa, methane, miss-islington, nascheme, pablogsal, petr.viktorin, pitrou, tim.peters, vstinner
Date 2019-09-30.03:56:41
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1569815801.29.0.0327594027181.issue38006@roundup.psfhosted.org>
In-reply-to
Content
> I see that handle_weakrefs() calls _PyWeakref_ClearRef() and that
> will clear the weakref even if it doesn't have callback.  So, I
> think that takes care for the hole I was worried about.  I.e. a
> __del__ method could have a weakref to an non-valid object.
> However, because handle_weakrefs() will find that weakref, it will
> have been cleared when the __del__ method executes.

There's no problem with objects we _know_ are trash.  Their finalizers are all force-run before delete_garbage starts.

It's "surprise" finalizers, triggered by refcounts falling to 0 while delete_garbage is running.  They're invisible to handle_weakrefs.

However, to the extent that delete_garage is effective in deallocating objects soon after clearing them, to that extent also will invalidated objects clear weak references to them as a matter of course.












'
History
Date User Action Args
2019-09-30 03:56:41tim.peterssetrecipients: + tim.peters, nascheme, pitrou, vstinner, christian.heimes, petr.viktorin, methane, lukasz.langa, Mark.Shannon, jdemeyer, pablogsal, miss-islington
2019-09-30 03:56:41tim.peterssetmessageid: <1569815801.29.0.0327594027181.issue38006@roundup.psfhosted.org>
2019-09-30 03:56:41tim.peterslinkissue38006 messages
2019-09-30 03:56:41tim.peterscreate