When shadersymbols are requested, cooking shaders writes the symbol files into
{Project}/Saved/ShaderSymbols/<PlatformName>.
These symbols are written by the function FShaderSymbolExport::WriteSymbolData.
During Multiprocess cook, the same shader might be compiled by two cookworkers at the same time. If that happens, they will both try to open the shaderr symbol file in that directory for the given shadermap and one will win and the other will fail to write and will log an error.
This problem is avoided if zip files are requested, because each CookWorker writes their own zip file for all shaders, and the director reads all the workers' zip files and creates a union zip file.
We need to modify the non-zip case to have each CookWorker write their shader files into a unique directory that no other worker uses, and have the director move the files afterwards into the single output directory.
In summary, turn on shader symbols, turn off using zip, and cook for a platform that writes separate files for shader symbols. Cook with cold ddc so that shaders are compiled every time the test is run.
Set ini:
D:\root1\Engine\Config\BaseEngine.ini
[ShaderCompiler] r.Shaders.Symbols=1 r.Shaders.WriteSymbols.Zip=0
Run cooker:
UnrealEditor.exe Lyra -run=cook -targetplatform=<PlatformName> -cookprocesscount=10 -DDC-All-MissTypes=MaterialShaderMap
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-359262 in the post.
| 0 |
| Component | UE - Foundation - Data Pipeline - Cooker |
|---|---|
| Affects Versions | 5.6 |
| Created | Jan 4, 2026 |
|---|---|
| Updated | Jan 6, 2026 |