Repository navigation
Conversation
Symptom: after a major macOS update (26.6.2 to 27.2.1, M1 Pro), every start logged one "pipeline archive file ... not usable (deployment target ... is not compatible with current OS)" line per old file and no "pipeline prebuild:" line, and scenes stalled for one to several seconds on bases they had before, on every start. Cause: pso4_init skipped a file Metal could not open but left it on disk. The prebuild's files went with it, prebuilt.tsv still matched (it does not hold the system version), so the prebuild was skipped as done and its bases were left to the draws (about 0.3 s each on the submit thread). Fix: remove a refused file and its index, as old indexes already are; a refused prebuild file also removes prebuilt.tsv. Measured on Ocarina of Time, on a copy of the archive after the update: 57 refused files (1.68 GB of 3.1 GB, 7 of them prebuild files) were removed and the prebuild ran again. With an empty archive on main the whole prebuild took 13.4 min for 34,649 pairs (10 workers) plus 2.7 min for the prewarm lists, once. The session before had 53 stalls of 100 ms or more on new pipelines (39 s). t_pso_archive: new test_unusable_file_removed fails without the fix; the 8 tests pass with it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JkGASzyCKNRT9hFiZr9PnN
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
After updating my Mac from macOS 26.6.2 to 27.2.1, Ocarina of Time started freezing for one to several seconds in places it had been smooth (talking to the Goron boss, bombs going off), and it kept happening on later starts.
The log explains it: every start prints one
[RED] pipeline archive file … not usable (deployment target … is not compatible with current OS …): its bases are built againline per file written on 26 (57 of them here), and there's nopipeline prebuild:line at all. Metal only opens an archive on the major OS version it was made for (same thing as #673, but for the files the host writes itself). The start skipped those files but left them on disk, and sinceprebuilt.tsvwas still there and still matched, the prebuild was treated as done. So every base that lived in the old prebuild files went to the draws, roughly 0.3 s each on the submit thread, on every start.The change: a file Metal refuses gets removed together with its index (same as old indexes already are), and if it was a prebuild file,
prebuilt.tsvgoes too, so the next start runs the prebuild again. Reference entry added under Pipelines and caches indocs/reference/shaders.md.Checked
t_pso_archivewith a new case for this (a prebuild file Metal won't open, plus its index and the stamp): fails without the change, all 8 pass with it.docs_symptoms.py --checkandtest_docs.pypass.[RED]lines per startThe 24-minute session that showed it (before the change) had 53 stalls of 100 ms or more on new pipelines, 39 s in total.
Docs
docs/reference/<subsystem>.mdentry, andpython3 dm/tools/docs_symptoms.pywas run🤖 Generated with Claude Code
https://claude.ai/code/session_01JkGASzyCKNRT9hFiZr9PnN