New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ephemerons do not correctly handle Infix_tag #7810
Comments
Comment author: bobot Why in |
Comment author: bobot For multicore, I remember that infix_tag handling could have changed? Is it true? |
Comment author: @damiendoligez In |
Comment author: @kayceesrk
|
This issue has been open one year with no activity. Consequently, it is being marked with the "stale" label. What this means is that the issue will be automatically closed in 30 days unless more comments are added or the "stale" label is removed. Comments that provide new information on the issue are especially welcome: is it still reproducible? did it appear in other contexts? how critical is it? etc. |
Fixed by #9742 |
Original bug ID: 7810
Reporter: @stedolan
Status: new
Resolution: open
Priority: normal
Severity: minor
Category: runtime system and C interface
Bug description
This function creates an ephemeron, fills it in, causes a GC and finally inspects the ephemeron. The ephemeron should not be cleared because the key is still live, since it is part of the return value.
The second component of this pair should never be None, e.g.:
However, it is None if the argument has Infix_tag (i.e. is a member of a set of mutually recursive functions other than the first):
The bug is this check in minor_gc.c (which appears a couple of times):
If *key has Infix_tag, Hd_val (*key) can be nonzero even though it is copied to the major heap.
The text was updated successfully, but these errors were encountered: