-
-
Notifications
You must be signed in to change notification settings - Fork 32k
bpo-34410: itertools.tee not thread-safe; can segfault interpreter wh… #9075
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
Conversation
…en wrapped iterator releases GIL
Can the tests attached at https://bugs.python.org/msg323817 by @zhangyangyu be added as part of test suite? I checked out the branch locally and the script segfaults or prints Fatal Python error.
bpo34410.py
Thanks |
@tirkarthi thanks for testing. I only lock when it runs |
Thanks. I checked out your latest commit. It seems there are some more cases to handle. It now hangs instead of segfault that I need to do
Also I think this will also help in a NEWS entry since it's a segfault also affecting other versions but I will let it for the reviewers to decide though. Thanks |
You need In addition, what should I do in NEWS. This is my first rp in this repo. |
Thanks. You can find more about the NEWS entry here : https://devguide.python.org/committing/#what-s-new-and-news-entries . It's a short piece explaining the changes made. You can use the blurb tool generate one. I don't know if it's a requirement and I will resort to the reviewers but adding one will always be helpful. There seems to be some test failure related
Thanks |
Thanks for reminding. |
After several revisions, I am finally satisfied. Locking is only done when |
I am not sure lock is a good resolution here(of course it's a resolution) because itertools is a highly optimized module. That's why I don't propose a patch using lock at first. Since @serhiy-storchaka say he takes on this, I'd like to wait and see if he has any other approaches to solve this problem. |
Thanks for reply.I take some optimizations to improve single-threaded performance. In a single-threaded case, the lock is only locked once during the entire iteration. |
…en wrapped iterator releases GIL
https://bugs.python.org/issue34410
https://bugs.python.org/issue34410