ShaderCompileWorker error in Linux While Cooking

I’ve been hacking on UE 4.8 to add android targeting for linux. I’ve made a good progress so far and UE4Editor recognizes Android in the settings (though no device manager recognition or anything else). I’m trying to cook for android in command line using this command:

./Engine/Build/BatchFiles/RunUAT.sh BuildCookRun -nocompile -nop4 -project="/home/james/Documents/Unreal Projects/MyProject/MyProject.uproject" -cook -compressed -allmaps -stage -archive -archivedirectory="/home/james/Documents/ue4games" -package -LinuxNoEditor -clientconfig=Development -ue4exe=UE4Editor -clean -pak -targetplatform=Android -utf8output

but I encounter this error:

UE4Editor: [2015.06.09-04.58.58:429][  0]LogInit:  -virtmemkb=NUMBER - sets process virtual memory (address space) limit (overrides VirtualMemoryLimitInKB value from .ini)
UE4Editor: [2015.06.09-04.58.58:429][  0]LogInit: Setting LC_NUMERIC to en_US
UE4Editor: [2015.06.09-04.58.58:429][  0]LogInit:  - Physical RAM available (not considering process quota): 6 GB (5663 MB, 5799856 KB, 5939052544 bytes)
UE4Editor: [2015.06.09-04.58.58:468][  0]LogTextLocalizationManager: The requested culture ('en_US') has no localization data; parent culture's ('en') localization data will be used.
UE4Editor: /home/james/UnrealEngine/Engine/Binaries/Linux/ShaderCompileWorker: symbol lookup error: /home/james/UnrealEngine/Engine/Binaries/Linux/libShaderCompileWorker-ShaderFormatOpenGL.so: undefined symbol: _Z19LocalValueNumberingP9exec_listP22_mesa_glsl_parse_state
UE4Editor: [2015.06.09-04.58.58:195][  0]LogMaterial: Missing cached shader map for material Widget3DPassThrough, compiling. 
UE4Editor: [2015.06.09-04.59.02:416][  0]LogShaderCompilers:Error: ShaderCompileWorker terminated unexpectedly!  Falling back to directly compiling which will be very slow.  Thread 0.
UE4Editor: /home/james/UnrealEngine/Engine/Binaries/Linux/UE4Editor: symbol lookup error: /home/james/UnrealEngine/Engine/Binaries/Linux/libUE4Editor-ShaderFormatOpenGL.so: undefined symbol: _Z19LocalValueNumberingP9exec_listP22_mesa_glsl_parse_state
UE4Editor: /home/james/UnrealEngine/Engine/Binaries/Linux/ShaderCompileWorker: symbol lookup error: /home/james/UnrealEngine/Engine/Binaries/Linux/libShaderCompileWorker-ShaderFormatOpenGL.so: undefined symbol: _Z19LocalValueNumberingP9exec_listP22_mesa_glsl_parse_state
UE4Editor: /home/james/UnrealEngine/Engine/Binaries/Linux/ShaderCompileWorker: symbol lookup error: /home/james/UnrealEngine/Engine/Binaries/Linux/libShaderCompileWorker-ShaderFormatOpenGL.so: undefined symbol: _Z19LocalValueNumberingP9exec_listP22_mesa_glsl_parse_state
UE4Editor: 
CommandUtils.Run: Run: Took 22.270592s to run UE4Editor, ExitCode=127
InternalUtils.SafeCopyFile: SafeCopyFile /home/james/UnrealEngine/Engine/Programs/AutomationTool/Saved/Cook.txt /home/james/Library/Logs/Unreal Engine/LocalBuildLogs/Cook.29.txt
InternalUtils.SafeDeleteFile: SafeDeleteFile /home/james/UnrealEngine/Engine/Programs/AutomationTool/Saved/Cook.txt
Project.Cook: Cook failed. Deleting cooked data.
ErrorReporter.Error: ERROR: AutomationTool error: Cook failed.
BuildCommand.Execute: ERROR: BUILD FAILED
Program.Main: ERROR: AutomationTool terminated with exception:
Program.Main: ERROR: Exception in AutomationTool: BUILD FAILED: Failed while running Cook for /home/james/Documents/Unreal Projects/MyProject/MyProject.uproject; see log /home/james/Library/Logs/Unreal Engine/LocalBuildLogs/Cook.29.txt
Stacktrace:   at AutomationTool.CommandUtils.RunCommandlet (System.String ProjectName, System.String UE4Exe, System.String Commandlet, System.String Parameters) [0x00000] in <filename unknown>:0 
  at AutomationTool.CommandUtils.CookCommandlet (System.String ProjectName, System.String UE4Exe, System.String[] Maps, System.String[] Dirs, System.String InternationalizationPreset, System.String[] Cultures, System.String TargetPlatform, System.String Parameters) [0x00000] in <filename unknown>:0 
  at Project.Cook (AutomationTool.ProjectParams Params) [0x00000] in <filename unknown>:0 
Program.Main: ERROR: BUILD FAILED: Failed while running Cook for /home/james/Documents/Unreal Projects/MyProject/MyProject.uproject; see log /home/james/Library/Logs/Unreal Engine/LocalBuildLogs/Cook.29.txt
Program.Main: AutomationTool exiting with ExitCode=25
Domain_ProcessExit
RunUAT ERROR: AutomationTool was unable to run successfully.

It’s pointing out to “…mesa_glsl_parse_state”. Do you think it’s related to mesa installed on host system? It’s strange because I use nvidia closed-sourced drivers (346.59).

The error is saying it can’t find:

bool LocalValueNumbering(exec_list* Instructions, _mesa_glsl_parse_state* ParseState)

If you an run Linux tho, I’m not sure why Android would be failing. That should be used the same way that Linux parses shaders. I would suggest recompiling hlslcc libraries (not that you should have to tho).

Also, in your command line, remove -LinuxNoEditor, and change -targetplatform=android to -platform=android -cookflavor=ETC1. Let me know if that changes things.

I tried almost the same thing, with almost the same failure :

Engine version: 4.8.0-release

OS : Ubuntu 14.04 (x64)

Files modified :

modified:   Engine/Source/Developer/Android/AndroidDeviceDetection/Private/AndroidDeviceDetectionModule.cpp
	modified:   Engine/Source/Developer/TargetPlatform/TargetPlatform.Build.cs
	modified:   Engine/Source/Editor/UnrealEd/UnrealEd.Build.cs
	modified:   Engine/Source/Programs/UnrealBuildTool/Android/AndroidToolChain.cs
	modified:   Engine/Source/Programs/UnrealBuildTool/Android/UEBuildAndroid.cs
	modified:   Engine/Source/Runtime/Core/Private/Android/AndroidFile.cpp
	modified:   Engine/Source/Runtime/Launch/Private/Android/AndroidJNI.cpp
	modified:   Engine/Source/ThirdParty/Qualcomm/TextureConverter/QualcommTextureConverter.build.cs
	modified:   Engine/Source/ThirdParty/Vorbis/Vorbis.Build.cs

I had to get the libTextureConverter.so from Adreno SDK to fix a dependency issue with the TextureFormatAndroid module.

What works :

0 - UE4Editor now shows Android platform paramaters (SDK & NDK paths seem to be recognized)

1 - Android device detection works. I have my android device listed in the Project Launcher.

2 - My UE projects (and UE4Game) get compiled with the Android toolchain. I get the *-armv7-es2.so lib in my project binaries.

3 - I can deploy my project on an android device. It is launched but crash after a black screen (no content loaded I suppose)

What fails :

[EDIT]
By simply commenting the assertion line, the error is gone. Quick’n’dirty, but it works! You can build and deploy directly from editor to android devices!

ShaderCompilerWorker failed but with a different error (assertion failed). No cooked content.

 LinuxNativeDialogs running on Unity
    Trying to load: libLND-gtk3.so
    LND loaded backend: gtk3
    [2015.06.12-08.32.20:595][  0]LogDesktopPlatform: LinuxNativeDialogs have been successfully initialized.
    [2015.06.12-08.32.20:941][  0]LogHAL: FLinuxPlatformProcess::CreateProc: spawned child 6699
    [2015.06.12-08.32.20:945][  0]LogHAL: Child 6699 is no more running (zombie), Wait()ing immediately.
    [2015.06.12-08.32.21:452][  0]LogHAL: FLinuxPlatformProcess::CreateProc: spawned child 6700
    [2015.06.12-08.32.21:460][  0]LogHAL: Child 6700 is no more running (zombie), Wait()ing immediately.
    [2015.06.12-08.32.21:968][  0]LogHAL: FLinuxPlatformProcess::CreateProc: spawned child 6701
    [2015.06.12-08.32.21:975][  0]LogHAL: Child 6701 is no more running (zombie), Wait()ing immediately.
    [2015.06.12-08.32.22:486][  0]LogHAL: FLinuxPlatformProcess::CreateProc: spawned child 6703
    [2015.06.12-08.32.22:500][  0]LogHAL: Child 6703 is no more running (zombie), Wait()ing immediately.
    [2015.06.12-08.32.27:560][  0]LogObj: 29703 objects as part of root set at end of initial load.
    [2015.06.12-08.32.27:560][  0]LogUObjectAllocator: 6305952 out of 0 bytes used by permanent object pool.
    [2015.06.12-08.32.27:560][  0]LogInit: Executing Class /Script/UnrealEd.CookCommandlet
    [2015.06.12-08.32.29:426][  0]LogCook:Display: Done creating registry. It took  0.32s.
    [2015.06.12-08.32.30:186][  0]LogPackageDependencyInfo:Display: 	Package Info not found for ../../../Project48R/CookedIniVersion!
    ShaderCompileWorker: ../../src/hlslcc_lib/OptValueNumbering.cpp:741: void SCFGCreator::LinkBasicBlocks(TBasicBlockList::iterator &): Assertion `0' failed.
    ShaderCompileWorker: ../../src/hlslcc_lib/OptValueNumbering.cpp:741: void SCFGCreator::LinkBasicBlocks(TBasicBlockList::iterator &): Assertion `0' failed.
    ShaderCompileWorker: ../../src/hlslcc_lib/OptValueNumbering.cpp:741: void SCFGCreator::LinkBasicBlocks(TBasicBlockList::iterator &): Assertion `0' failed.
[2015.06.12-08.32.51:326][  0]LogShaderCompilers:Error: ShaderCompileWorker terminated unexpectedly!  Falling back to directly compiling which will be very slow.  Thread 2.
UE4Editor: ../../src/hlslcc_lib/OptValueNumbering.cpp:741: void SCFGCreator::LinkBasicBlocks(TBasicBlockList::iterator &): Assertion `0' failed.
Aborted (core dumped)

I tried to recompile the hlslcc library, no help.

It’s really frustrating… it’s almost done…