Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork8.1k
Fix a race condition in TexManager.make_dvi.#30426
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
Uh oh!
There was an error while loading.Please reload this page.
tacaswell left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I think there is an unused local, but otherwise good to merge.
anntzer commentedAug 14, 2025
It's still used by the TemporaryDirectory call. |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Previously, a race condition could occur if, while a process had calledmake_tex (generating the tex file in the global cache) and was going tocall the latex subprocess (to generate the dvi file), another processalso called make_tex for the same tex string and started rewriting thetex source. In that case, the latex subprocess could see a partiallywritten (invalid) tex source.Fix that by generating the tex source in a process-private temporarydirectory, where the latex process is already going to run anyways.(This is cheap compared to the latex subprocess invocation.)Apply a similar strategy for make_png as well.
anntzer commentedAug 14, 2025
I chose to also fix make_png here as well. |
be68dfe intomatplotlib:mainUh oh!
There was an error while loading.Please reload this page.
…_dvi & make_png.Includes an extra fix from PRmatplotlib#30431: Don't drop dpi in png filenamegeneration.
Backport PR#30426: Fix a race condition in TexManager.make_dvi & make_png.
Uh oh!
There was an error while loading.Please reload this page.
Previously, a race condition could occur if, while a process had called make_tex (generating the tex file in the global cache) and was going to call the latex subprocess (to generate the dvi file), another process also called make_tex for the same tex string and started rewriting the tex source. In that case, the latex subprocess could see a partially written (invalid) tex source.
Fix that by generating the tex source in a process-private temporary directory, where the latex process is already going to run anyways. (This is cheap compared to the latex subprocess invocation.)
See#30420 (comment) (point (2)).
Edit: did the same to make_png.
PR summary
PR checklist