Skip to content

Contain pipeline cache save allocation failures - #1046

Merged
hckrman101 merged 2 commits into
NotRexed:mainfrom
monsterlag:fix/pipeline-cache-save-errors
Nov 9, 2026
Merged

hckrman101 merged 2 commits into
NotRexed:mainfrom
monsterlag:fix/pipeline-cache-save-errors

Conversation

@monsterlag

@monsterlag monsterlag commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Pipeline cache saves can throw while allocating their byte buffer or temporary filename. A detached worker then terminates the process; a forced save propagates the exception and can leave the busy flag set.

Contain standard exceptions in the save worker, release the busy flag on every worker exit, and report thread-construction failures. Successful saves, thresholds and the existing forced-save behavior are preserved.

Validation on the refreshed main source:

  • Windows LLVM-MinGW and Linux GCC: all 11 focused tests pass, including actual container/thread-state allocation faults and six original-current-main exception controls.
  • Target-only strict automatic runner: 1 passed, 0 failed, 0 skipped.
  • Fault fixture and assertions are byte-identical to the original PR; the normal merge preserves all upstream registrations/workflows.
  • The production-only patch applies cleanly to official RC2 source c4ea255; that release tree was not edited or built by this refresh.

Refs #1022. These checks use real C++ containers/threads with authored Vulkan/file responses, without a GPU, game or real pipeline cache. The refresh does not add a new renderer/game run or prove an operating-system thread/detach failure. Concurrent forced callers and the cache format retain their existing behavior. Hosted Windows renderer, Builder packaging, Linux AppImage, native F2I, SPIR-V and workflow-lint checks pass. Both source jobs fail solely on the existing answer-domain fixture tracked in #1076; the new cache-save test passes in both. See platform builds, AppImage and source checks.

Keep standard exceptions in the cache export worker and recover its busy flag on every exit. Handle thread-start exceptions without changing cache thresholds, write policy or forced-wait ordering. Add actual-function allocation/thread/file regressions and isolated original-source negatives.

Refs NotRexed#1022; the reported full game crash remains unconfirmed.

Assisted-by: Codex

Co-Authored-By: Codex <noreply@openai.com>
@monsterlag
monsterlag marked this pull request as draft November 9, 2026 09:07
@monsterlag
monsterlag marked this pull request as ready for review November 9, 2026 09:48
Preserve upstream runtime/build changes and automatic strict test runner. Resolve its ARGS conflict by retaining the pipeline-cache fixture plus upstream capture-copy and screensaver registrations. The production exception/busy guard and fault assertions are unchanged.

Assisted-by: OpenAI Codex
Co-Authored-By: OpenAI Codex <noreply@openai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant