• 0

[Solved By V1.3.0 Patch] [Linux] Game Wont Start, Missing Libraries, Wrong Cpu Instruction Set


I'm not even able to start the game on archlinux64: i noticed some shared libraries aren't found on my system and the CPU instruction set is wrong for my i7 since i've no SSE5/AVX support here: obviously, even after fixing the missing libraries problem, i've the instruction set error that can't be solved on my part.
By running with the command line "LD_LIBRARY_PATH=./ ./DyingLightGame" from the installation directory i got this:
STEAM_RUNTIME is enabled automatically
ExecCommandLine: "/home/manuel/.local/share/Steam/ubuntu12_32/steam steam://run/239140/"
ExecSteamURL: "steam://run/239140/"
Game update: AppID 239140 "Dying Light", ProcID 9486, IP
Installing breakpad exception handler for appid(steam)/version(1422054110)
ERROR: ld.so: object '/home/manuel/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/manuel/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Game removed: AppID 239140 "Dying Light", ProcID 9488 
My ldd output:
$ LD_LIBRARY_PATH=./ ldd DyingLightGame 
linux-vdso.so.1 (0x00007fffbedd4000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fba98be2000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fba989c6000)
libsteam_api.so => ./libsteam_api.so (0x00007fba987b3000)
libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007fba984b0000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00007fba98286000)
libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x00007fba9802c000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007fba97cd4000)
libGLEW.so.1.10 => /usr/lib/libGLEW.so.1.10 (0x00007fba97a4b000)
libvorbisfile.so.3 => /usr/lib/libvorbisfile.so.3 (0x00007fba97842000)
libfmodex64.so => ./libfmodex64.so (0x00007fba97492000)
libopenal.so.1 => /usr/lib/libopenal.so.1 (0x00007fba97221000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fba96f12000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fba96c0d000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fba969f7000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fba96654000)
/lib64/ld-linux-x86-64.so.2 (0x00007fba98de6000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007fba9644c000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007fba96236000)
libnvidia-tls.so.346.35 => /usr/lib/libnvidia-tls.so.346.35 (0x00007fba96033000)
libnvidia-glcore.so.346.35 => /usr/lib/libnvidia-glcore.so.346.35 (0x00007fba9335b000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007fba93019000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00007fba92e07000)
libXmu.so.6 => /usr/lib/libXmu.so.6 (0x00007fba92bec000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00007fba929db000)
libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007fba927ae000)
libogg.so.0 => /usr/lib/libogg.so.0 (0x00007fba925a7000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007fba92385000)
libXt.so.6 => /usr/lib/libXt.so.6 (0x00007fba9211e000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007fba91f1a000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007fba91d14000)
libSM.so.6 => /usr/lib/libSM.so.6 (0x00007fba91b0c000)
libICE.so.6 => /usr/lib/libICE.so.6 (0x00007fba918ef000)
libuuid.so.1 => /usr/lib/libuuid.so.1 (0x00007fba916ea000)
Full strace output on pastebin
So, after inspecting the linux executable, i can see how it has been compiled with the SSE5/XOP/AVX instruction sets enabled, although some of our CPUs can't handle that, leading to a "trap invalid opcode" error:
 110dd3f: 8f c9 46 80 b7 47 bd  vfrczps ymm6,YMMWORD PTR [r15-0x78be42b9]
 1117ae6: 8f 69 1f 80 6b cf     vfrczps ymm13,YMMWORD PTR [rbx-0x31]
 111d7f8: 8f                    vpmacssdql xmm11,xmm2,xmm1,xmm7,(bad)
 116103a: 0f 7a 56 70 3e        phadduwd xmm6,QWORD PTR [rax+0x3e]
 1178a6c: c4                    vfnmsubpd ymm14,ymm1,ymm4,ymm10,(bad)
 11a1d69: c4 c2 35 13 55 8a     vcvtph2ps ymm2,XMMWORD PTR [r13-0x76]
 11c2e89: 8f 89 77 94 22        vpshlb ymm4,[r10],xmm1
 11e8c6f: 8f                    vpmadcswd xmm4,xmm11,xmm2,XMMWORD PTR [rdx-0x7d],(bad)
In my case i've an Intel® Core i7 CPU 920 @ 2.67GHz, it does support SSE up to 4.2, but obviously a "trap invalid opcode" happens whenever the missing opcode is being used, here are my CPU flags:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dtherm tpr_shadow vnmi flexpriority ept vpid

Here's the output at /var/log/messages regarding this:


[ 6914.042253] traps: DyingLightGame[1804] trap invalid opcode ip:110e9a0 sp:7fff8291a4e8 error:0 in DyingLightGame[110b000+1cbb000]
[ 6927.108473] traps: DyingLightGame[1993] trap invalid opcode ip:110e9a0 sp:7fffaf80c998 error:0 in DyingLightGame[110b000+1cbb000]
[ 6958.731969] traps: DyingLightGame[2267] trap invalid opcode ip:110e9a0 sp:7fffbb3f0458 error:0 in DyingLightGame[110b000+1cbb000]
[ 6967.030568] traps: DyingLightGame[2345] trap invalid opcode ip:110e9a0 sp:7fffbe853da8 error:0 in DyingLightGame[110b000+1cbb000]
@Piotrek, i think that recompiling all the object code without "-march=native" or by explicitly choosing a saner instruction set should solve the issue on non-SSE5 equipped CPUs, but proxying the main launcher should be a better way so that CPU support detection can choose which executable to run without penalizing SSE5-ready CPUs.
Edited by dud3z

Share this post

Link to post
Share on other sites

2 answers to this question

Recommended Posts

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now