(MacOS) 5.4.1 - tick <substrate> invoke shader compile, and it always crashes.

From 5.3 to 5.4.1, I remember I haven’t been successful with this option ON.
I am learning UE5 for personal fun, nothing else.
I may live without this option, but it would be fun to play with this option ON.
Can anyone shed a light?

  • It works good without [substrate] option.
    [M3pro MBP, 18GB unified memory, MacOS Sonoma 14.4.1, UE5 installed in main SSD]

below is crash log:

spvtools::opt::AggressiveDCEPass::AddToWorklist(spvtools::opt::Instruction*) Address = 0x3c39c5ac0 (filename not found) [in libdxcompiler.dylib]

std::__1::__function::__func<spvtools::opt::Instruction::ForEachInId(std::__1::function<void (unsigned int const*)> const&) const::‘lambda’(unsigned int const*), std::__1::allocator<spvtools::opt::Instruction::ForEachInId(std::__1::function<void (unsigned int const*)> const&) const::‘lambda’(unsigned int const*)>, bool (unsigned int const*)>::operator()(unsigned int const*&&) Address = 0x3c39ca8c4 (filename not found) [in libdxcompiler.dylib]

spvtools::opt::AggressiveDCEPass::AddOperandsToWorkList(spvtools::opt::Instruction const*) Address = 0x3c39c53dc (filename not found) [in libdxcompiler.dylib]

spvtools::opt::AggressiveDCEPass::ProcessWorkList(spvtools::opt::Function*) Address = 0x3c39c4ba0 (filename not found) [in libdxcompiler.dylib]

spvtools::opt::AggressiveDCEPass::AggressiveDCE(spvtools::opt::Function*) Address = 0x3c39c4870 (filename not found) [in libdxcompiler.dylib]

spvtools::opt::AggressiveDCEPass::ProcessImpl() Address = 0x3c39c6988 (filename not found) [in libdxcompiler.dylib]

spvtools::opt::Pass::Run(spvtools::opt::IRContext*) Address = 0x3c3af1268 (filename not found) [in libdxcompiler.dylib]

spvtools::opt::PassManager::Run(spvtools::opt::IRContext*) Address = 0x3c3af1fb4 (filename not found) [in libdxcompiler.dylib]

spvtools::Optimizer::Run(unsigned int const*, unsigned long, std::__1::vector<unsigned int, std::__1::allocator>, spv_optimizer_options_t) const Address = 0x3c3aef8a4 (filename not found) [in libdxcompiler.dylib]

clang::spirv::SpirvEmitter::spirvToolsLegalize(std::__1::vector<unsigned int, std::__1::allocator>, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator>, std::__1::vector<spvtools::opt::DescriptorSetAndBinding, std::__1::allocatorspvtools::opt::DescriptorSetAndBinding> const*) Address = 0x3c390611c (filename not found) [in libdxcompiler.dylib]

clang::spirv::SpirvEmitter::HandleTranslationUnit(clang::ASTContext&) Address = 0x3c39051ec (filename not found) [in libdxcompiler.dylib]

clang::ParseAST(clang::Sema&, bool, bool) Address = 0x3c394a960 (filename not found) [in libdxcompiler.dylib]

clang::FrontendAction::Execute() Address = 0x3c32e2cc8 (filename not found) [in libdxcompiler.dylib]

DxcCompiler::Compile(DxcBuffer const*, wchar_t const**, unsigned int, IDxcIncludeHandler*, GUID const&, void**) Address = 0x3c2c44f28 (filename not found) [in libdxcompiler.dylib]

hlsl::DxcCompilerAdapter::WrapCompile(bool, IDxcBlob*, wchar_t const*, wchar_t const*, wchar_t const*, wchar_t const**, unsigned int, DxcDefine const*, unsigned int, IDxcIncludeHandler*, IDxcOperationResult**, wchar_t**, IDxcBlob**) Address = 0x3c2c40dbc (filename not found) [in libdxcompiler.dylib]

hlsl::DxcCompilerAdapter::CompileWithDebug(IDxcBlob*, wchar_t const*, wchar_t const*, wchar_t const*, wchar_t const**, unsigned int, DxcDefine const*, unsigned int, IDxcIncludeHandler*, IDxcOperationResult**, wchar_t**, IDxcBlob**) Address = 0x3c2c41c88 (filename not found) [in libdxcompiler.dylib]

hlsl::DxcCompilerAdapter::Compile(IDxcBlob*, wchar_t const*, wchar_t const*, wchar_t const*, wchar_t const**, unsigned int, DxcDefine const*, unsigned int, IDxcIncludeHandler*, IDxcOperationResult**) Address = 0x3c2c420b8 (filename not found) [in libdxcompiler.dylib]

(anonymous namespace)::CompileToBinary(ShaderConductor::Compiler::SourceDesc const&, ShaderConductor::Compiler::Options const&, ShaderConductor::ShadingLanguage, bool) Address = 0x3bf9c0178 (filename not found) [in libShaderConductor.dylib]

ShaderConductor::Compiler::Compile(ShaderConductor::Compiler::SourceDesc const&, ShaderConductor::Compiler::Options const&, ShaderConductor::Compiler::TargetDesc const*, unsigned int, ShaderConductor::Compiler::ResultDesc*) Address = 0x3bf9be534 (filename not found) [in libShaderConductor.dylib]

ShaderConductor::Compiler::Compile(ShaderConductor::Compiler::SourceDesc const&, ShaderConductor::Compiler::Options const&, ShaderConductor::Compiler::TargetDesc const&) Address = 0x3bf9be2ac (filename not found) [in libShaderConductor.dylib]

CrossCompiler::FShaderConductorContext::CompileHlslToSpirv(CrossCompiler::FShaderConductorOptions const&, TArray<unsigned int, TSizedDefaultAllocator<32>>&) Address = 0x3becc4e14 (filename not found) [in UnrealEditor-ShaderCompilerCommon.dylib]

FMetalCompileShaderSPIRV::DoCompileMetalShader(FShaderCompilerInput const&, FShaderCompilerOutput&, FString const&, FSHAHash, unsigned int, EMetalGPUSemantics, unsigned int, EShaderFrequency, bool, FString const&, FString const&) Address = 0x3bea13098 (filename not found) [in UnrealEditor-MetalShaderFormat.dylib]

CompileMetalShader(FShaderCompilerInput const&, FShaderPreprocessOutput const&, FShaderCompilerOutput&) Address = 0x3bea21574 (filename not found) [in UnrealEditor-MetalShaderFormat.dylib]

FInternalShaderCompilerFunctions::CompileShaderInternal(IShaderFormat const*, FShaderCompileJob&, FString const&, FString&, FString&, int*) Address = 0x101f28f20 (filename not found) [in UnrealEditor-RenderCore.dylib]

CompileShader(TArray<IShaderFormat const*, TSizedDefaultAllocator<32>> const&, FShaderCompileJob&, FString const&, int*) Address = 0x101f28494 (filename not found) [in UnrealEditor-RenderCore.dylib]

FShaderCompileUtilities::ExecuteShaderCompileJob(FShaderCommonCompileJob&) Address = 0x117cb90f8 (filename not found) [in UnrealEditor-Engine.dylib]

FShaderCompileThreadRunnable::CompileDirectlyThroughDll() Address = 0x117cb8ef4 (filename not found) [in UnrealEditor-Engine.dylib]

FShaderCompileThreadRunnable::CompilingLoop() Address = 0x117cb9874 (filename not found) [in UnrealEditor-Engine.dylib]

FShaderCompileThreadRunnableBase::Run() Address = 0x117cb5740 (filename not found) [in UnrealEditor-Engine.dylib]

FRunnableThreadPThread::Run() Address = 0x1042ed57c (filename not found) [in UnrealEditor-Core.dylib]

FRunnableThreadPThread::_ThreadProc(void*) Address = 0x10423f8f4 (filename not found) [in UnrealEditor-Core.dylib]

Unknown() Address = 0x19604af94 (filename not found) [in libsystem_pthread.dylib]

Unknown() Address = 0x196045d34 (filename not found) [in libsystem_pthread.dylib]

Sigh… still no feedback.
Is there anyone who is using ‘substrate’ material feature in macos sonoma + apple silicon?
If yes, then please leave a note so that I can have a hope to dig it further.
My system crashes when compiling shader for ‘substrate’.
Except that, UE5 is working without problem in my macbook pro.
I just wanna know whether this is my system fault or UE5 fault.

1 Like