Page 1 of 1

Linux Steam version crashes on CPUs without SSE4.1

Posted: Tue Aug 25, 2015 12:03 pm
by jrm
The Linux build currently on Steam uses SSE4.1 instructions, which some CPUs don't support, causing the game to crash during startup on systems with such CPUs.

The Linux build on Humble Bundle doesn't have this problem, so it's probably a problem in the build system for Steam.

Here's the backtrace:

Code: Select all

Program received signal SIGILL, Illegal instruction.
0x080cd012 in RenderState_SetClearColor (a=<optimized out>, b=<optimized out>, g=0, r=<optimized out>)
at ./engine/renderer/opengl/opengl_render_state_inlines.h:78
78 ./engine/renderer/opengl/opengl_render_state_inlines.h: No such file or directory.
(gdb) bt
#0 0x080cd012 in RenderState_SetClearColor (a=<optimized out>, b=<optimized out>, g=0, r=<optimized out>)
at ./engine/renderer/opengl/opengl_render_state_inlines.h:78
#1 Render_DrawInternal (scene=0x83276cc <g_render_globalData+12>, color=0x8327700 <g_render_globalData+64>, blurQuality=BlurQuality_High)
at ../../external/libjpeg-turbo/jpeglib.h:2139
#2 0x080607a4 in Render_DrawEnd (blurQuality=<optimized out>) at ./engine/render.h:423
#3 Game::RenderNormal (this=0x8317c40 <g_game>) at game/Game_loading_logo_inl.h:2455
#4 0x080621c0 in Render (this=<optimized out>) at game/Game_loading_logo_inl.h:1230
#5 LoopFrame (this=<optimized out>) at game/game_controllers_inl.h:353
#6 Loop (this=<optimized out>) at game/Game.h:463
#7 Game_Run (settings=...) at ./engine/shaders/BasicShaders.h:1061
#8 0x08052675 in GameMain (argc=argc@entry=1, argv=argv@entry=0xffcadcd4) at ../gamelib/engine/platform/pc/pc_native.h:542
#9 0x0804c36e in main (argc=1, argv=0xffcadcd4) at ../gamelib/engine/string.h:914
And the offending instruction (insertps is from the SSE4.1 instruction set):

Code: Select all

(gdb) x/i $pc
=> 0x80cd012 <Render_DrawInternal(Render_Scene const*, unsigned int const*, BlurQuality)+306>: insertps $0x10,0x20(%esp),%xmm1
I also posted about this in the stickied thread in the Steam forum, but I figured you're probably watching this forum more closely.

Re: Linux Steam version crashes on CPUs without SSE4.1

Posted: Wed Aug 26, 2015 7:53 pm
by RightClickSaveAs
Hey jrm, normally Matt would have responded to this by now, but I believe this is the week their baby was due, so he may not be around for a little while. I'm sure he'll get to you at some point, he's always been on top of bug squashing!

Re: Linux Steam version crashes on CPUs without SSE4.1

Posted: Thu Aug 27, 2015 4:53 pm
by matt
Holy crap! That is super helpful. Our linux crash logging didn't work, so we were getting crash reports and no callstack. We pushed a new build to Steam with a few new features, but we didn't push it everywhere because of all the linux crash reports we were getting.

The new Steam build probably uses updated versions of 3rd party libraries from our old 1.4 build, so the dependency on SSE4.1 is totally unintentional.

As RightClickSaveAs pointed out, I am indeed off on paternity leave. My wife gave birth to a healthy 7 pound 6 ounce boy on Saturday. It's been quite an adjustment being a new dad, but I've been trying to stay on top of all the stability issues we are having. (Unfortunately, we are having some Android issues as well. :( )

Anyway, thank you so much for providing this info. I've passed it along to Dan who is covering for me, and *hopefully* he can get a new Linux build up by tomorrow morning.

Once we can confirm that it is stable, then we'll update our DRM-Free versions. There isn't a HUGE difference between 2.0 and the current DRM-free builds, so you aren't missing much if you play them. The main new feature is you can load your save at the branching points if you want to get all the ending.

Thanks again! I'll be taking at least a week more off, but I'll try to check in here and there.

*EDIT* This should be fixed in build 2.0.20761 and higher. (You can see the build number in the extras menu) Dan said he posted it to Steam, so this should be resolved. Thank you so much for your help! We never would have figured it out. :)