Masked-clear pipeline creation admits failed resources and caches null results #1787

Closed
opened 2026-11-10 16:41:45 +00:00 by Arkex-ai · 0 comments
Arkex-ai commented 2026-11-10 16:41:45 +00:00 (Migrated from github.com)

Masked color clears can retain failed Vulkan resource creation outputs or permanently cache a null pipeline. This is a source-derived failure-path defect reproduced with game-free fault injection, not a report of native OOM or an observed player crash.

In clear_pipeline on main 2877284, layout and shader-module creation results are ignored, and clear_pipes[key] = pl admits a failed/null graphics pipeline. Undefined layout/module error outputs can reach subsequent API calls. A transient failure can suppress that clear indefinitely instead of retrying on a later present.

Proposed scope: validate each stage, publish only valid resources, clean up partial ownership, bound failed-key attempts within a present and retry later. Preserve successful clear variants and the existing caller's null-pipeline guard. No rendering interface or shader change.

Priority: S2 (3) x reach 1.0 x confidence 0.4 = 1.2. Reach describes the shared Vulkan path conditional on creation failure; actual incidence is unknown. Confidence is limited because native failure was not reproduced. This does not outrank demonstrated higher-priority player failures.

Claim: issai on Discord / Arkex-ai on GitHub; #dev-work record. The investigation predates the new claim workflow. I can test Windows / RTX 5070 Ti / driver 621.01 / Ryzen 9800X3D / 32 GB RAM, plus Linux CPU fixtures.

Evidence: 31 production-code fixture cases pass on Windows LLVM and Linux GCC/ASan/UBSan. Four negative baseline controls expose ignored stage failures and null-cache poisoning; 16 behavioral mutations test the safeguards. Historical healthy native serial/parallel checkpoint runs on candidate 457ab35 exited cleanly with resize and decoded 3440x1440 captures. Those runs do not prove native OOM recovery, every masked-clear variant, or the new main's runtime. New-base validation is in progress.

Overlap: #1772 changes the graphics creation call to cached_graphics; it does not implement this admission/ownership policy. If it lands first, this fix must check that wrapper's returned result and retain the same failure tests. No duplicate open masked-clear issue was found in the title/body search.

No game data or generated files are attached.

Masked color clears can retain failed Vulkan resource creation outputs or permanently cache a null pipeline. This is a source-derived failure-path defect reproduced with game-free fault injection, not a report of native OOM or an observed player crash. In `clear_pipeline` on main `2877284`, layout and shader-module creation results are ignored, and `clear_pipes[key] = pl` admits a failed/null graphics pipeline. Undefined layout/module error outputs can reach subsequent API calls. A transient failure can suppress that clear indefinitely instead of retrying on a later present. Proposed scope: validate each stage, publish only valid resources, clean up partial ownership, bound failed-key attempts within a present and retry later. Preserve successful clear variants and the existing caller's null-pipeline guard. No rendering interface or shader change. Priority: **S2 (3) x reach 1.0 x confidence 0.4 = 1.2**. Reach describes the shared Vulkan path conditional on creation failure; actual incidence is unknown. Confidence is limited because native failure was not reproduced. This does not outrank demonstrated higher-priority player failures. Claim: issai on Discord / Arkex-ai on GitHub; [#dev-work record](https://discord.com/channels/1568810484818378804/1569019786766188665/1569751848121008260). The investigation predates the new claim workflow. I can test Windows / RTX 5070 Ti / driver 621.01 / Ryzen 9800X3D / 32 GB RAM, plus Linux CPU fixtures. Evidence: 31 production-code fixture cases pass on Windows LLVM and Linux GCC/ASan/UBSan. Four negative baseline controls expose ignored stage failures and null-cache poisoning; 16 behavioral mutations test the safeguards. Historical healthy native serial/parallel checkpoint runs on candidate `457ab35` exited cleanly with resize and decoded 3440x1440 captures. Those runs do not prove native OOM recovery, every masked-clear variant, or the new main's runtime. New-base validation is in progress. Overlap: #1772 changes the graphics creation call to `cached_graphics`; it does not implement this admission/ownership policy. If it lands first, this fix must check that wrapper's returned result and retain the same failure tests. No duplicate open masked-clear issue was found in the title/body search. No game data or generated files are attached.
Commenting is not possible because the repository is archived.
No milestone
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Hookshot#1787
No description provided.