-
-
Notifications
You must be signed in to change notification settings - Fork 33.6k
Closed
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancementA feature request or enhancement
Description
Feature or enhancement
Proposal:
#130708 introduces stackrefs whose lifetime must be shorter than the lifetime of another stackref. We should verify this property in the debug build of stackrefs: warn anytime a stackref with outstanding borrowed references is closed.
Here is a sketch of a possible implementation:
- Add a counter,
borrows, to each stackref that records the number of borrows. - Add a
borrowed_fromfield to each stackref that records the index of the stackref it was borrowed from, if any. This field is preserved byPyStackRef_DUP. PyStackRef_Borrow(from)sets the theborrowed_fromfield on the returned stackref and increments theborrowsfield onfrom. We should follow chains of borrows until we reach the unborrowed reference at the head.PyStackRef_CLOSEon a borrowed stackref decrements theborrowsfield on the borrowed-from stackref.PyStackRef_CLOSEwarns ifborrowsis non-zero.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
efimov-mikhail
Metadata
Metadata
Assignees
Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancementA feature request or enhancement