Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork34k
[3.10] gh-98552: Fix preloading '__main__' with forkserver being broken#98924
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
…n for along time (9 years).We do this by using spawn.get_preparation_data() and then using thevalues in that dictionary appropriately. This lets us also fix thesetting of sys.path (which never worked) and other minor properties ofthe forkserver process.While updating the test to verify these fixes, we also discovered thatforkserver was not flushing stdout/stderr before it forked to create anew process. This caused the updated test to fail because unflushedoutput in the forkserver would then be printed by the forked process aswell. This is now fixed too.
ghost commentedOct 31, 2022 • edited by ghost
Loading Uh oh!
There was an error while loading.Please reload this page.
edited by ghost
Uh oh!
There was an error while loading.Please reload this page.
ambv commentedNov 11, 2022
Hey@aggieNick02, thanks for this fix. It looks promising. However, the change should go against the I realize we weren't sufficiently explicit about this in the past so I updated the devguide to explain what's up: |
aggieNick02 commentedNov 11, 2022
Ah, ok. Thanks for updating the instructions to make it clear. I wanted to do whatever gave it the best chance at making it into 3.10 (to be part of Ubuntu 22.04 LTS). I'll make a new PR against |
aggieNick02 commentedNov 15, 2022
Alright, I put this against main. In the process realized I wasn't passing down the |
aggieNick02 commentedNov 15, 2022
Closing since obsoleted by new PR against correct branch. |
Uh oh!
There was an error while loading.Please reload this page.
This has been broken for a long time (9 years).
We do this by using spawn.get_preparation_data() and then using the values in that dictionary appropriately. This lets us also fix the setting of sys.path (which never worked) and other minor properties of the forkserver process.
While updating the test to verify these fixes, we also discovered that forkserver was not flushing stdout/stderr before it forked to create a new process. This caused the updated test to fail because unflushed output in the forkserver would then be printed by the forked process as well. This is now fixed too.