protonscr

Aspyr ports Fahrenheit & Borderlands 2 segfaulting due to libopenal

steamopen 3rd party game
ValveSoftware/steam-for-linux#6056 · opened 2019-01-25 by tgurr · updated 2019-01-26 · 6 comments · github
Ttgurr 2019-01-25 github

Your system information

  • Steam client version (build number or date): 2019/01/21 - 1548107472
  • Distribution (e.g. Ubuntu): Exherbo
  • Opted into Steam client beta?: Yes
  • Have you checked for system updates?: Yes

Please describe your issue in as much detail as possible:

Fahrenheit segfault:

~/steam/steamapps/common/Kelvin $ gdb ./Fahrenheit

Thread 1 "Fahrenheit" received signal SIGSEGV, Segmentation fault.
0xf7ad6388 in pthread_cond_wait () from /usr/i686-pc-linux-gnu/lib/libpthread.so.0
(gdb) bt
#0  0xf7ad6388 in pthread_cond_wait () from /usr/i686-pc-linux-gnu/lib/libpthread.so.0
#1  0xf19edc49 in pa_cond_wait () from /usr/i686-pc-linux-gnu/lib/pulseaudio/libpulsecommon-12.2.so
#2  0xf1a5df6a in pa_threaded_mainloop_wait () from /usr/i686-pc-linux-gnu/lib/libpulse.so.0
#3  0xf72efda2 in connect_context () from /usr/i686-pc-linux-gnu/lib/libopenal.so.1
#4  0xf72eff2d in pulse_open () from /usr/i686-pc-linux-gnu/lib/libopenal.so.1
#5  0xf72f043e in ALCpulsePlayback_ALCbackend_open () from /usr/i686-pc-linux-gnu/lib/libopenal.so.1
#6  0xf72c201d in alcOpenDevice () from /usr/i686-pc-linux-gnu/lib/libopenal.so.1
#7  0x084cc0d4 in ?? ()
#8  0x084cb642 in ?? ()
#9  0x085e057e in ?? ()
[#10](/issue/ValveSoftware/steam-for-linux/10) 0x085e0b07 in ?? ()
[#11](/issue/ValveSoftware/steam-for-linux/11) 0x082943e9 in ?? ()
[#12](/issue/ValveSoftware/steam-for-linux/12) 0x080d38d0 in ?? ()
[#13](/issue/ValveSoftware/steam-for-linux/13) 0x0821602d in ?? ()
[#14](/issue/ValveSoftware/steam-for-linux/14) 0x0832201e in ?? ()
[#15](/issue/ValveSoftware/steam-for-linux/15) 0x0831da50 in ?? ()
[#16](/issue/ValveSoftware/steam-for-linux/16) 0x080966c8 in ?? ()
[#17](/issue/ValveSoftware/steam-for-linux/17) 0x080965f0 in ?? ()
[#18](/issue/ValveSoftware/steam-for-linux/18) 0x08219c84 in ?? ()
[#19](/issue/ValveSoftware/steam-for-linux/19) 0x0809460c in ?? ()
[#20](/issue/ValveSoftware/steam-for-linux/20) 0x08094a71 in ?? ()
[#21](/issue/ValveSoftware/steam-for-linux/21) 0x083e3080 in ?? ()
[#22](/issue/ValveSoftware/steam-for-linux/22) 0x080923ff in ?? ()
[#23](/issue/ValveSoftware/steam-for-linux/23) 0xf75bec39 in __libc_start_main () from /usr/i686-pc-linux-gnu/lib/libc.so.6
[#24](/issue/ValveSoftware/steam-for-linux/24) 0x08092ac5 in ?? ()
(gdb) q

Steps for reproducing this issue:

Now it gets complicated...

  1. Segfaults when run from within Steam
  2. Segfaults when run from outside Steam via ./Fahrenheit if the system installed libopenal is build with pulseaudio support
  3. Does not segfault and works (-sound in game) when run from outside Steam via ./Fahrenheit if the system installed 32bit libopenal is build without pulseaudio support
  4. Does not segfault and works (-sound in game) when run from within Steam and first having deleted ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/{libopenal.so.1{.16.0} and having a system installed 32bit libopenal version build without pulseaudio support
    4.1 Same does apply to Borderlands 2, however for some reason I don't understand the sound in game works here after the steps done explained in 4.

Just a very blind guess, I suspect some fishy connection in having OpenSSL 1.1.1 on my system and pulseaudio compiled against it.

Kkisak-valve maintainer 2019-01-26 github

Hello @tgurr, this sounds like the crash documented at https://wiki.archlinux.org/index.php/Steam/Game-specific_troubleshooting#Borderlands_2 and should be brought to the attention of an Aspyr dev.

Ttgurr 2019-01-26 github

@kisak-valve thanks, I'm not entirely sure if the explanations regarding the libopenal version differences mentioned there are right, I'll try to elaborate.

I only installed the 32bit libopenal today for testing purposes to be able to run Fahrenheit on commandline outside of steam. Until now I relied on the libopenal that comes with the steam-runtime and didn't have any issues running those games and didn't have any 32bit libopenal installed on my system at all. It only started lately after the upgrade to openssl-1.1.1 on my machine as far as I can tell and as far as I can isolate the timeframe.

Wheat does work though for Borderlands 2 is the -nostartupmovies linked in the wiki you've posted and the sound in Borderlands works then as well so it more or less explains why I got sound when I tinkered around with my system installed libopenal explained above in 4 and 4.1.

Sadly that switch doesn't work for Fahrenheit and Fahrenheit seems to make use of libopenal also in the game itself which results in not having any sound then (if it wouldn't crash that is).

I'm with you that Aspyr should take a look at this and hopefully they do like Feral did with their games and the breakage happening lately. I'm surprised that they don't follow this bugtracker keeping track of issues with their products.

So it's indeed an issue with libopenal, probably something down the route libopenal -> pulseaudio -> ?. My guess is still it's related to openssl, but I can't do a downgrade on my system so easily to test and confirm that.

I'll update as soon as I hit another game broken in the same way that is not an Aspyr port.

Kkisak-valve maintainer 2019-01-26 github

Blind guess, does adding OPENSSL_CONF=/dev/null %command% to the game's launch options have an effect?

Ttgurr 2019-01-26 github

I'm afraid sadly not, neither for Borderlands nor for Fahrenheit. But huge thanks for all your help so far and even more so for the nearly instant reply and telling me about the -nostartupmovies flag for Borderlands so I can at least enjoy that game with the workaround. Thank you! If I'll find out something new I'll report back.

Ttgurr 2019-01-26 github

I've downgraded openssl back to 1.0.2q for my 32bit environment and recompiled the 32bit dependencies so I start to believe that openssl contrary to what I initially thought doesn't seem to be involved. What I also found out is that the 32bit libopenal only allows Fahrenheit to be run without segfaulting when compiled without any sound backend, since I also get the segfault when I compile libopenal with just the alsa backend instead of pulseaudio. I also downgraded to version 1.17.2 just in case the arch wiki tells the truth about newer version being broken. But same result.

But like I said I didn't have any 32bit libopenal around until now, now I question myself, was the 32bit libopenal shipped with the steam runtime updated/exchanged recently? I've already tried opting out from the steam beta but same problem. Is there any changelog for the steam runtime and its shipped libraries? Might be worth a try to test if an older libopenal shipped with the runtimes works. Apart from that I'm getting out of ideas what I could still try to isolate what changed on my system and what's causing the problem.

Kkisak-valve maintainer 2019-01-26 github

There's a history of steam runtime changes at https://github.com/ValveSoftware/steam-runtime/commits/master, which crudely aligns to what is provided in steam.

By default, Steam prefers host libraries over the steam runtime libraries if they are newer than the runtime variants. You can add symlinks to <steam dir>/ubuntu12_32/steam-runtime/pinned_libs_* to make it use whatever you want. If something goes horribly wrong, you can delete the pinned_libs_* folders and steam will regenerate them on next start.

In general, the order of resolved libraries is game bundled libraries, then pinned libraries, system libraries, steam-runtime, and finally ldconfig.

Launch lines