Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
timhoffm merged 1 commit into matplotlib:main from anntzer:mdr
Aug 14, 2025
Merged

Conversation

Copy link
Contributor

@anntzer anntzer commented Aug 14, 2025
edited
Loading

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

Copy link
Member

@tacaswell tacaswell left a 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.

@tacaswell tacaswell added this to the v3.10.6 milestone Aug 14, 2025
Copy link
Contributor Author

anntzer commented Aug 14, 2025

It's still used by the TemporaryDirectory call.
(By the way, would you agree with the more general patch at #30420 (comment)?)

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.)
Apply a similar strategy for make_png as well.
Copy link
Contributor Author

anntzer commented Aug 14, 2025

I chose to also fix make_png here as well.

timhoffm reacted with thumbs up emoji

@timhoffm timhoffm merged commit be68dfe into matplotlib:main Aug 14, 2025
34 of 37 checks passed
meeseeksmachine pushed a commit to meeseeksmachine/matplotlib that referenced this pull request Aug 14, 2025
@anntzer anntzer deleted the mdr branch August 14, 2025 21:11
@anntzer anntzer mentioned this pull request Aug 15, 2025
5 tasks
anntzer added a commit to anntzer/matplotlib that referenced this pull request Aug 16, 2025
..._dvi & make_png.
Includes an extra fix from PR matplotlib#30431: Don't drop dpi in png filename
generation.
QuLogic added a commit that referenced this pull request Aug 18, 2025
Backport PR #30426: Fix a race condition in TexManager.make_dvi & make_png.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Reviewers

@tacaswell tacaswell tacaswell approved these changes

@timhoffm timhoffm timhoffm approved these changes

Assignees
No one assigned
Projects
None yet
Milestone
v3.10.6
Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /