-
-
Notifications
You must be signed in to change notification settings - Fork 30.9k
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
[Free Threading] test_opcache: test_binary_subscr_list_int(): list_get_item_ref: Assertion `cap != -1 && cap >= size' failed #127521
Labels
3.13
bugs and security fixes
3.14
new features, bugs and security fixes
interpreter-core
(Objects, Python, Grammar, and Parser dirs)
topic-free-threading
type-crash
A hard crash of the interpreter, possibly with a core dump
Comments
According to git bisect, the regression was introduced by commit e271340.
|
I think I understand the issue. It's a preexisting bug in the free threading listobject.c implementation. We need to be setting the |
colesbury
added a commit
to colesbury/cpython
that referenced
this issue
Dec 2, 2024
In the free threading build, f a non-owning thread resizes a list, it must use QSBR to free the old list array because there may be a concurrent access (without a lock) from the owning thread. To match the pattern in dictobject.c, we just mark the list as "shared" before resizing if it's from a non-owning thread and not already marked as shared.
colesbury
added a commit
that referenced
this issue
Dec 2, 2024
In the free threading build, if a non-owning thread resizes a list, it must use QSBR to free the old list array because there may be a concurrent access (without a lock) from the owning thread. To match the pattern in dictobject.c, we just mark the list as "shared" before resizing if it's from a non-owning thread and not already marked as shared.
miss-islington
pushed a commit
to miss-islington/cpython
that referenced
this issue
Dec 2, 2024
…ythonGH-127524) In the free threading build, if a non-owning thread resizes a list, it must use QSBR to free the old list array because there may be a concurrent access (without a lock) from the owning thread. To match the pattern in dictobject.c, we just mark the list as "shared" before resizing if it's from a non-owning thread and not already marked as shared. (cherry picked from commit c7dec02) Co-authored-by: Sam Gross <colesbury@gmail.com>
picnixz
added
type-crash
A hard crash of the interpreter, possibly with a core dump
interpreter-core
(Objects, Python, Grammar, and Parser dirs)
3.13
bugs and security fixes
3.14
new features, bugs and security fixes
labels
Dec 2, 2024
colesbury
added a commit
that referenced
this issue
Dec 3, 2024
…H-127524) (GH-127533) In the free threading build, if a non-owning thread resizes a list, it must use QSBR to free the old list array because there may be a concurrent access (without a lock) from the owning thread. To match the pattern in dictobject.c, we just mark the list as "shared" before resizing if it's from a non-owning thread and not already marked as shared. (cherry picked from commit c7dec02) Co-authored-by: Sam Gross <colesbury@gmail.com>
srinivasreddy
pushed a commit
to srinivasreddy/cpython
that referenced
this issue
Jan 8, 2025
…ython#127524) In the free threading build, if a non-owning thread resizes a list, it must use QSBR to free the old list array because there may be a concurrent access (without a lock) from the owning thread. To match the pattern in dictobject.c, we just mark the list as "shared" before resizing if it's from a non-owning thread and not already marked as shared.
ebonnal
pushed a commit
to ebonnal/cpython
that referenced
this issue
Jan 12, 2025
…ython#127524) In the free threading build, if a non-owning thread resizes a list, it must use QSBR to free the old list array because there may be a concurrent access (without a lock) from the owning thread. To match the pattern in dictobject.c, we just mark the list as "shared" before resizing if it's from a non-owning thread and not already marked as shared.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
3.13
bugs and security fixes
3.14
new features, bugs and security fixes
interpreter-core
(Objects, Python, Grammar, and Parser dirs)
topic-free-threading
type-crash
A hard crash of the interpreter, possibly with a core dump
test_binary_subscr_list_int() does crash randomly with an assertion error if Python is built with
--disable-gil
:Bug seen on macOS CI, and reproduced on Linux.
Linked PRs
The text was updated successfully, but these errors were encountered: