Dota-2 icon indicating copy to clipboard operation
Dota-2 copied to clipboard

last update: dota2 new runtime misses libraries then segfaults

Open sylware opened this issue 2 years ago • 67 comments

last update dota2 is not starting anymore, seems to reall happen in libtier0:

[29163.326708] dota2[3465]: segfault at 0 ip 00007faf5d6d3606 sp 00007ffe46399d00 error 6 in libtier0.so[7faf5d61f000+2e5000] likely on CPU 1 (core 1, socket 0) [29163.326719] Code: 2d 3c 24 24 00 31 db 0f 1f 44 00 00 49 8b 74 dc 08 48 85 f6 74 0a 4c 89 ef 31 c0 e8 14 17 f5 ff 48 83 c3 01 41 39 1c 24 7f e2 04 25 00 00 00 00 00 00 00 00 0f 0b c7 04 25 00 00 00 00 00 00

sylware avatar Jul 11 '23 19:07 sylware

The segfault happens always at 2e5000 in libtiers0.so.

sylware avatar Jul 11 '23 20:07 sylware

I missed them in the log, but he runtime update misses libs: Loaded libpangoft2-1.0.so, got (nil) failed to dlopen "libpangoft2-1.0.so" error=libpangoft2-1.0.so: cannot open shared object file: No such file or directory Loaded /mnt/128/home/user/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libpanorama_text_pango.so, got (nil) failed to dlopen "/mnt/128/home/user/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libpanorama_text_pango.so" error=libharfbuzz.so.0: cannot open shared object file: No such file or directory

sylware avatar Jul 12 '23 00:07 sylware

It misses many more libs: I tried to fix the new dota2 runtime while pulling libs from the heavy steamruntime from the beta steam client: "libpangoft2-1.0.so" is wrong is in the new runtime it is "libpangoft2-1.0.so.0", it misses libharbuzz, libfribid, libthai, etc.

sylware avatar Jul 12 '23 01:07 sylware

Same here on Arch Linux:

Jul 12 17:13:32 ryzen crash_20230712171332_2.dmp[69933]: Uploading dump (out-of-process)
                                                         /tmp/dumps/crash_20230712171332_2.dmp
Jul 12 17:13:32 ryzen kernel: dota2[69890]: segfault at 0 ip 00007f1ad456f606 sp 00007fff93edb110 error 6 in libtier0.so[7f1ad44bb000+2e5000] likely on CPU 5 (core 2, socket 0)
Jul 12 17:13:32 ryzen kernel: Code: 2d 3c 24 24 00 31 db 0f 1f 44 00 00 49 8b 74 dc 08 48 85 f6 74 0a 4c 89 ef 31 c0 e8 14 17 f5 ff 48 83 c3 01 41 39 1c 24 7f e2 <c7> 04 25 00 00 00 00 00 00 00 00 0f 0b c7 04 25 00 00 00 00 00 00
Jul 12 17:13:32 ryzen systemd[1]: Started Process Core Dump (PID 69934/UID 0).
Jul 12 17:13:33 ryzen systemd-coredump[69936]: [🡕] Process 69890 (dota2) of user 1000 dumped core.
                                               
                                               Stack trace of thread 69890:
                                               #0  0x00007f1ad456f606 n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libtier0.so + 0x16f606)
                                               #1  0x00007f1ad4570673 n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libtier0.so + 0x170673)
                                               #2  0x00007f1ad4570ac0 n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libtier0.so + 0x170ac0)
                                               #3  0x00007f1ad3005b0d n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so + 0x405b0d)
                                               #4  0x00007f1ad3006a33 n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so + 0x406a33)
                                               #5  0x00007f1a5113381b n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libmaterialsystem2.so + 0x6f81b)
                                               #6  0x00007f1ad300586a n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so + 0x40586a)
                                               #7  0x00007f1ad3006e71 n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so + 0x406e71)
                                               #8  0x00007f1ad2e3eeb6 n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so + 0x23eeb6)
                                               #9  0x00007f1ad2d75577 n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so + 0x175577)
                                               #10 0x00007f1ad2d75a0f n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so + 0x175a0f)
                                               #11 0x000055bdb1ea6a20 n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/dota2 + 0x3a20)
                                               #12 0x000055bdb1ea681f n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/dota2 + 0x381f)
                                               #13 0x00007f1ad6360850 n/a (libc.so.6 + 0x23850)
                                               #14 0x00007f1ad636090a __libc_start_main (libc.so.6 + 0x2390a)
                                               #15 0x000055bdb1ea693a n/a (/home/are/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/dota2 + 0x393a)
                                               ELF object binary architecture: AMD x86-64

crash_20230712171332_2.dmp.gz

manticore-projects avatar Jul 12 '23 10:07 manticore-projects

@manticore-projects if you look carefully at the steam client output, you should see there are missing libraries in the new linuxruntime for doat2 they did deploy yesterday.

sylware avatar Jul 12 '23 11:07 sylware

Ok, I did workaround the broken new dota2 linux runtime (missing libs, symbolic links, symbols, and lucky enough not symbol version issue), how to do it: download in the steam client the "Steam Linux Runtime - Sniper". Then go into the your dota2 folder (adapt the path to your system): "/home/user/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64"

Then create the following symbolic links, adapting the paths to your system:

libdatrie.so.1 -> /home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/sniper_platform_0.20230509.49493/files/lib/x86_64-linux-gnu/libdatrie.so.1.4.0

libfribidi.so.0 -> /home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/sniper_platform_0.20230509.49493/files/lib/x86_64-linux-gnu/libfribidi.so.0.4.0

libffi.so.7 -> /home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/sniper_platform_0.20230509.49493/files/lib/x86_64-linux-gnu/libffi.so.7.1.0

libglib-2.0.so.0 -> /home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/sniper_platform_0.20230509.49493/files/lib/x86_64-linux-gnu/libglib-2.0.so.0.6600.8

libgobject-2.0.so.0 -> /home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/sniper_platform_0.20230509.49493/files/lib/x86_64-linux-gnu/libgobject-2.0.so.0.6600.8

libgraphite2.so.3 -> /home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/sniper_platform_0.20230509.49493/files/lib/x86_64-linux-gnu/libgraphite2.so.3.2.1

libharfbuzz.so.0 -> /home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/sniper_platform_0.20230509.49493/files/lib/x86_64-linux-gnu/libharfbuzz.so.0.20704.0

libpangoft2-1.0.so -> libpangoft2-1.0.so.0

libthai.so.0 -> /home/user/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/sniper_platform_0.20230509.49493/files/lib/x86_64-linux-gnu/libthai.so.0.3.1

Depending on how bloated/"old" is your distro, you may need more, or less.

sylware avatar Jul 12 '23 13:07 sylware

The first time I tried to launch Dota 2 after updating to the new version, it tried to launch in the older soldier + scout runtime, which is not expected to work. The new version of Dota 2 is designed to launch in the new sniper runtime, which works.

Workaround: after letting Steam update Dota 2, completely exit from Steam, then run Steam again. When I did that, Steam's idea of which game should use which runtime caught up with the new situation, and Dota 2 correctly launched in the sniper runtime.

If Steam output is going to a terminal, log file or the systemd journal, when you launch Dota 2, the good result is that it should log a command-line something like this. It'll all be on one long line, I broke it up into shorter lines here for better readability. The important part is that it mentions sniper:

.../reaper SteamLaunch AppId=570 --
.../steam-launch-wrapper --
.../SteamLinuxRuntime_sniper/_v2-entry-point --verb=waitforexitandrun --
.../dota 2 beta/game/dota.sh +engine_experimental_drop_frame_ticks 1 +@panorama_min_comp_layer_dimension 0 -prewarm_parorama\0

The bad result is that it still tries to use the old runtime, which will not work any more for the new version of Dota 2 (notice that it mentions soldier and scout):

.../reaper SteamLaunch AppId=570 --
.../steam-launch-wrapper --
.../SteamLinuxRuntime_soldier/_v2-entry-point --verb=waitforexitandrun --
.../SteamLinuxRuntime/scout-on-soldier-entry-point-v2 --
.../dota 2 beta/game/dota.sh +engine_experimental_drop_frame_ticks 1 +@panorama_min_comp_layer_dimension 0 -prewarm_parorama\0

I tried to fix the new dota2 runtime while pulling libs from the heavy steamruntime from the beta steam client

Copying libraries out of the heavy runtime is not a correct solution and it is not surprising for it not to work.

download in the steam client the "Steam Linux Runtime - Sniper"

The Steam client is meant to do this automatically, because the new version of Dota 2 depends on it. If it does not download it automatically, that's a Steam client bug which should be investigated by client developers.

create the following symbolic links

That should not be necessary. In general, modifying Dota 2 is not meant to be necessary.

Again, the workaround for this is to let Steam update Dota 2, then completely exit from Steam, and run Steam again.

smcv avatar Jul 12 '23 14:07 smcv

It might also be helpful to use the beta Steam client instead of the normal branch. There have been some recent fixes for games that change between different runtimes which have not all made it into the normal branch yet.

However, I was able to reproduce the problem described in my previous comment with the beta client, so not everything is fixed in the beta yet either.

smcv avatar Jul 12 '23 14:07 smcv

The first time I tried to launch Dota 2 after updating to the new version, it tried to launch in the older soldier + scout runtime, which is not expected to work

I think this is a Steam client bug, reported as https://github.com/ValveSoftware/steam-for-linux/issues/9835

smcv avatar Jul 12 '23 15:07 smcv

I hear you: the steam client switching of the steam runtimes is not working.

That would explain many of the issues I have been having lately with recent demos and games.

sylware avatar Jul 12 '23 16:07 sylware

libthai from the "sniper" libthai will segfault if you go in some options in dota2.

Are you sure dota2 is now using the "sniper" steam runtime?

sylware avatar Jul 12 '23 20:07 sylware

It is worse, "sniper" steam runtime libthai will 100% and randomly segfault during draft phase.

sylware avatar Jul 12 '23 20:07 sylware

Okay, found out the issue, since the "sniper" steam-runtime is not setup at all, some libs may miss some critical information... which is the case for libthai looking for its dictionary. Did setup the right env variable, everything seems to work now.

sylware avatar Jul 12 '23 21:07 sylware

I don't know what's going on, but dota2 is never run into those sniper/scout runtimes, I cannot get any log of anything from that, then since there is very little missing to make dota2 run in the client steamruntime, we can expect dota2 devs and steam client devs to fix all this weirdness.

I did post a temporary "fix" here:

https://steamcommunity.com/app/570/discussions/0/3811784078994041979/?tscn=1689188704

sylware avatar Jul 13 '23 00:07 sylware

Can Dota 2 not be ran with system libraries anymore? I was just running Dota 2 for over a week with steamcmd and Goldberg after that context menu mess made Steam unusable, and all I needed was a symlink for libbz2.so.1.0 to run Dota 2 directly.

Now I get this:

[espionage724@Spinesnap ~]$ cd ~/'Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64' && SDL_AUDIODRIVER='pipewire' SDL_VIDEODRIVER='x11' ~/'Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/dota2'
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so, got 0x55d6d8fcbfe0
Using breakpad crash handler
[S_API] SteamAPI_Init(): SteamAPI_IsSteamRunning() did not locate a running instance of Steam.
[S_API] SteamAPI_Init(): Loaded '/home/espionage724/.steam/sdk64/steamclient.so' OK.
Setting breakpad minidump AppID = 570
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  76561199874894657 [API loaded yes]
SteamInternal_SetMinidumpSteamID:  Setting Steam ID:  76561199874894657
Setting breakpad minidump AppID = 373300
Loaded libSDL2-2.0.so.0, got 0x55d6d904c590
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libtier0.so, got 0x55d6d8f3a0a0
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libfilesystem_stdio.so, got 0x55d6d909c630
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libinputsystem.so, got 0x55d6d95ce4d0
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/liblocalize.so, got 0x55d6d9910a60
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/librendersystemvulkan.so, got 0x55d6d9906630
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libresourcesystem.so, got 0x55d6d98ed180
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libschemasystem.so, got 0x55d6d9909120
ATTENTION: default value of option mesa_glthread overridden by environment.
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libmaterialsystem2.so, got 0x55d6dbd7b900
Loaded libpangoft2-1.0.so, got (nil)
 failed to dlopen "libpangoft2-1.0.so" error=libpangoft2-1.0.so: cannot open shared object file: No such file or directory
Loaded /home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libpanorama_text_pango.so, got (nil)
 failed to dlopen "/home/espionage724/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libpanorama_text_pango.so" error=libbz2.so.1.0: cannot open shared object file: No such file or directory
Segmentation fault (core dumped)

Which doesn't make sense to me since libbz2.so.1.0 is still in the folder, still symlinked, and it was just working fine this morning before I decided to do an app "update" on 570.

Espionage724 avatar Jul 13 '23 02:07 Espionage724

Can Dota 2 not be ran with system libraries anymore?

Running Dota 2 without using the Steam Runtime was never a supported thing to do. It might have accidentally worked on some machines, depending on your host operating system and the exact list of libraries you have installed.

The recent change is that recent versions of Dota 2 have are designed to run in a newer, container-based version of the Steam Runtime, and have correspondingly higher library requirements.

cd ~/'Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64' && ... .../game/bin/linuxsteamrt64/dota2

This was not the correct way to start Dota 2, even as an unsupported workaround. When Dota 2 is started by Steam, it is started with current working directory dota 2 beta and started by running the script game/dota.sh. If you launch the executable directly, then library paths are not set up correctly and it is normal that it will fail to start.

smcv avatar Jul 13 '23 10:07 smcv

libthai from the "sniper" libthai will segfault if you go in some options in dota2.

Are you sure dota2 is now using the "sniper" steam runtime?

The only supported way to use the sniper runtime is for Steam to run the game with sniper as a container. It is meant to do that automatically, but there is a Steam client bug (possibly more than one) that makes this not completely reliable at the moment.

Creating arbitrary symlinks and setting arbitrary environment variables is not a supported way to use any library from sniper, and is not expected to work reliably. The libraries in sniper expect to be used as a container, which will put them in the container's /usr, making it unnecessary to set LD_LIBRARY_PATH or any other special environment variable.

smcv avatar Jul 13 '23 10:07 smcv

Wait, I don't understand, don't you tell me you did manage to make the "sniper" steamruntime have more complex and expensive requirements than STEAM_RUNTIME=0 ???

Why would we not need LD_LIBRARY_PATH?? This is the only user way to override the library search paths (with LD_PRELOAD). You start to be really scary now.

I repeat the steam client [beta] does not even try to run dota2 in the "sniper" steam-runtime.

sylware avatar Jul 13 '23 12:07 sylware

Running Dota 2 without using the Steam Runtime was never a supported thing to do.

dota.sh has notes about USE_STEAM_RUNTIME=0 implying it was supported in some manner.

Espionage724 avatar Jul 13 '23 16:07 Espionage724

@espionage724, USE_STEAM_RUNTIME is for the SDK, STEAM_RUNTIME is to enable or disable the use of the steamruntime, never heard or seen what you said and I went in dota.sh several times, I even made a SH port (to remove the toxic bash dep).

sylware avatar Jul 13 '23 18:07 sylware

I repeat the steam client [beta] does not even try to run dota2 in the "sniper" steam-runtime

That appears to be a Steam client bug, now described on https://github.com/ValveSoftware/steam-for-linux/issues/9835. I hope that a Steam client developer will be able to solve it. (I am not a Steam client developer and cannot fix this myself.)

dota.sh has notes about USE_STEAM_RUNTIME=0 implying it was supported in some manner.

Something being technically possible doesn't mean that it's supported, even if there is code that specifically checks for it: there is often special-case code to do something unsupportable during development or debugging. dota.sh also has special code for running Dota 2 under a debugger like gdb, but that isn't a supported way to play the game either (I'm reasonably sure!)

Why would we not need LD_LIBRARY_PATH?? This is the only user way to override the library search paths (with LD_PRELOAD)

The sniper runtime uses a container. There is a lot of public information available about it: https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/container-runtime.md and https://github.com/ValveSoftware/steam-runtime are good places to start.

I have several years' worth of war stories about why all the simpler options (and especially LD_LIBRARY_PATH) don't work reliably, but they would be off topic here. Solving difficult problems requires complexity, and the number of constraints that apply to the Steam Runtime make it a difficult problem. The short version is that if an easier way was viable, we'd have done that instead.

smcv avatar Jul 13 '23 19:07 smcv

This is so strange: Activating Proton worked for me and Dota is starting now.

image

manticore-projects avatar Jul 13 '23 22:07 manticore-projects

The short version is that if an easier way was viable, we'd have done that instead

I have 2 'easier ways' for you:

  1. if-it-ain't-broke-don't-fix-it.
  2. REVERT

2A4U avatar Jul 13 '23 23:07 2A4U

Don't forget: your infrastructure broke dota2 on distros not using it and where dota2 was running more than fine for more than a decade on different types of distros.

The real culprits are c++ gcc and glibc devs with their manic abuse of symbol versioning and the sourceware binutils devs which force always the last available versions of a symbol/module to be used, namely binaries linked with recent versions won't, very probably, run on older systems (often for no real pertinent reasons).

If fixing has to be done, it is up there which this has to happen. And if you don't want to tackle this issue, the only way is to mandate to link binaries with the oldest set of glibc libs (and you can workaround c++ ABI and libgcc ABI issues with -static-libgcc and -static-libstdc++ compile/link options): which could take the form of ready to use linking environment with a properly configured toolchain to use it, that to ease the work of the "normal" game devs, like a "container".

And now you tell us we must compile in our linux kernel this complex and expansive namespace support which any sane desktop distro could not care less about.

Pretending that "namespace" swapping /usr will magically workaround those issues is very suspicious at best, not to mention it will force distros to follow very probably obscene and rigid specs, and the slight deviation won't be forgiving. In other words, you are yelling at us: use a popular distro or die (exactly what the msft windows toxic troll users say: "use a popular OS").

And I don't know what do you want to achieve here.

Let's take a real life example (I don't recall the name of the game), a game binaries linked with glibc 2.34, which won't run on distros with an "older" glibc (I have 2.33 and the game does not run), now what? You want to completely override the host system libs with namespaces? (including the elf interpreter).

So, you will provide a "container" with a full glibc 2.34 based runtime which will hide perfectly the "older" 2.33 runtime from the host system... and you want that to work for all variants of all distros. Do you realize how obscene and rigid this is? And that down to the formats of the data files.

You will have to load the driver libs from the host with their data files, but how will you let them thru? Some kind of "file system overlay"? How you will know how to do the cherry picking? And you have to pray the "container" has compatible versions of all their system dependencies. The glibc 2.34 would load them, but how you will cherry pick them and sort out them, with their dependencies. For instance, you may have an "older" runtime, but get bleeding-edge drivers with different dependencies, data file formats, layout, etc. How do you want to deal with that with a "containerized" /usr (presuming everything is there, at exactly the right spot, the right format, etc)?

Now, you know how I feel about this "container" workaround of the version issues? And don't forget, dota2 has been working fine for years until now on many different types of distros.

But I stay humble, and listen to you at how you plan to tackle all that.

sylware avatar Jul 14 '23 00:07 sylware

Hello @sylware, you've already excessively expressed your opinions on how the C++ ABI is handled in GLIBC. Take that issue up with those developers. This is not the place to rehash your opinions on that matter.

kisak-valve avatar Jul 14 '23 00:07 kisak-valve

My Dota crashes while starting with sniper. Fedora 38, X11, Steam package from RPM Fusion. Tried with both stable and beta Steam client.

Only way I found to launch Dota so far is by setting the compat to Steam Linux Runtime, which runs it with soldier.

screenshot_2023-07-14_10-07-45

I unfollowed the issue, not interested in some delusional user rants. If devs need more info or help testing please @ me.


Log of the crash with sniper. Seems to be crashing at the same as other user's logs in this thread
GameAction [AppID 570, ActionID 1] : LaunchApp changed task to ProcessingInstallScript with ""
GameAction [AppID 570, ActionID 1] : LaunchApp changed task to SynchronizingCloud with ""
GameAction [AppID 570, ActionID 1] : LaunchApp changed task to SynchronizingControllerConfig with ""
GameAction [AppID 570, ActionID 1] : LaunchApp changed task to SiteLicenseSeatCheckout with ""
GameAction [AppID 570, ActionID 1] : LaunchApp changed task to CreatingProcess with ""
GameAction [AppID 570, ActionID 1] : LaunchApp waiting for user response to CreatingProcess ""
GameAction [AppID 570, ActionID 1] : LaunchApp continues with user response "CreatingProcess"
/bin/sh\0-c\0/home/jn/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=570 -- /home/jn/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jn/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun --  '/home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/dota.sh' +engine_experimental_drop_frame_ticks 1 +@panorama_min_comp_layer_dimension 0 -prewarm_panorama\0
Game process added : AppID 570 "/home/jn/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=570 -- /home/jn/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jn/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun --  '/home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/dota.sh' +engine_experimental_drop_frame_ticks 1 +@panorama_min_comp_layer_dimension 0 -prewarm_panorama", ProcID 180948, IP 0.0.0.0:0
chdir "/home/jn/.local/share/Steam/steamapps/common/dota 2 beta"
ERROR: ld.so: object '/home/jn/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jn/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object '/home/jn/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jn/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jn/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
GameAction [AppID 570, ActionID 1] : LaunchApp changed task to WaitingGameWindow with ""
GameAction [AppID 570, ActionID 1] : LaunchApp changed task to Completed with ""
pid 181075 != 181074, skipping destruction (fork without exec?)
pid 181076 != 181074, skipping destruction (fork without exec?)
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libengine2.so, got 0x5576e0d5a1c0
Using breakpad crash handler
[S_API] SteamAPI_Init(): Loaded '/home/jn/.local/share/Steam/linux64/steamclient.so' OK.
Game process updated : AppID 570 "/home/jn/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=570 -- /home/jn/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jn/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun --  '/home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/dota.sh' +engine_experimental_drop_frame_ticks 1 +@panorama_min_comp_layer_dimension 0 -prewarm_panorama", ProcID 181078, IP 0.0.0.0:0
Setting breakpad minidump AppID = 570
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
07/14 18:33:46 Init: Starting.
07/14 18:33:46 InitHandler
07/14 18:33:46 Init Initializing.
07/14 18:33:46 Init: Installing breakpad exception handler for appid(570)/version(8191169)/tid(181078)
07/14 18:33:46 Init Done.
07/14 18:33:46 SetAppID Setting app ID to 570.
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  76561197995603452 [API loaded yes]
SteamInternal_SetMinidumpSteamID:  Setting Steam ID:  76561197995603452
07/14 18:33:46 Setting Steam ID: 76561197995603452
07/14 18:33:46 Setting SteamUniverse: 1 = Public
Setting breakpad minidump AppID = 373300
07/14 18:33:46 SetAppID Setting app ID to 373300.
Loaded libSDL2-2.0.so.0, got 0x5576e1041a40
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libtier0.so, got 0x5576e0cc8a10
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libfilesystem_stdio.so, got 0x5576e0da9c30
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libinputsystem.so, got 0x5576e15b2000
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/liblocalize.so, got 0x5576e18d8800
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/librendersystemvulkan.so, got 0x5576e18d27d0
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libresourcesystem.so, got 0x5576e18e2320
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libschemasystem.so, got 0x5576e15b5200
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libmaterialsystem2.so, got 0x5576e1899370
Loaded libpangoft2-1.0.so, got (nil)
 failed to dlopen "libpangoft2-1.0.so" error=libpangoft2-1.0.so: cannot open shared object file: No such file or directory
Loaded /home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libpanorama_text_pango.so, got (nil)
 failed to dlopen "/home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libpanorama_text_pango.so" error=libbz2.so.1.0: cannot open shared object file: No such file or directory
07/14 18:34:36 Breakpad_FilterCallback
07/14 18:34:36 FilterCallback Calling pre minidump callback
/home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/dota.sh: line 117: 181078 Segmentation fault      (core dumped) ${STEAM_RUNTIME_PREFIX} ${GAME_DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"
Game process removed: AppID 570 "/home/jn/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=570 -- /home/jn/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jn/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun --  '/home/jn/.local/share/Steam/steamapps/common/dota 2 beta/game/dota.sh' +engine_experimental_drop_frame_ticks 1 +@panorama_min_comp_layer_dimension 0 -prewarm_panorama", ProcID 181078 

jn64 avatar Jul 14 '23 02:07 jn64

@manticore-projects:

This is so strange: Activating Proton worked for me and Dota is starting now.

Let's take this to ValveSoftware/steam-for-linux#9835 since it seems more like a Steam client bug than a Dota 2 bug, and I want Steam client developers to be able to see all the necessary info in one place.

@jn64: same.

smcv avatar Jul 14 '23 08:07 smcv

@jn64:

Only way I found to launch Dota so far is by setting the compat to Steam Linux Runtime, which runs it with soldier (??)

That's not guaranteed to work, especially in the long term, but if it happens to work on your system then it's OK as a short term workaround. Please remember that you have changed this setting: after the underlying Steam client bug gets fixed, you will probably need to turn off "Force the use of ..." so that the game will run in sniper as it is meant to.

smcv avatar Jul 14 '23 08:07 smcv

@kisak-valve you are wrong, this is not off-topic. The c++ and glibc ABI stuff is the context and start of my post. If you read the rest, it is mostly about how the container is supposed to fix a basic usecase which is based on a real life broken game (and not actually breaking a working game like here). That to evaluate how much more the "container" will need, and how costly for it is to please its requirements, that to be allowed to run dota2 again, the "valve right way", then directly related to the topic of this issue.

sylware avatar Jul 14 '23 14:07 sylware

@sylware, I'll make this abundantly clear once I have no intention of debating this comment or going further off topic. There will not be a two sided argument in response to this comment.

https://github.com/ValveSoftware/Dota-2/issues/2390#issuecomment-1635074211 very much reads as a call for a developer to waste their time long form defending the existence of Pressure Vessel and the Steam Linux Runtime container environment. That's not going to happen and is off-topic. The high level goal is to get the game running for as many people as possible while being maintainable by the cross-platform Dota 2 team.

You, as an individual user, demand more personal attention than some major distributions and regularly withhold details so that you don't need to defend your personal choice to have a distro-of-one-user system. Often, that means you will hit edge cases that the majority of users will never see. If you want to operate outside of a common distro setup, so be it, but that doesn't warrant additional attention for your specific system setup.

Your philosophy on how software should be maintained is tangential to the specific issue you've reported here, which is that Dota 2 is not running in an environment that it's been configured to use by the game dev(s) and as a result, it's not resolving several dependencies. As of this writing, that is the Steam Linux Runtime - Sniper container environment. Last week, that was the Steam Linux Runtime - Soldier environment.

Having written that, as a moderator and not a Valve developer myself, I'm generally indifferent to the feedback you post on Github, because it's more or less civilized.


I suspect that the functional detail as to why Steam is not calling Dota 2 with the Steam Linux Runtime - Sniper entry point is the same as the details to reproduce the issue in #2019. This could be interpreted as the root cause of this issue and since Flatpak 1.14 or newer is generally available in all major distros, from a support perspective it wouldn't be wrong if a Steam dev chose to stronger enforce the use of the Steam Linux Runtime - Sniper environment if the game dev has configured the game to use it.

kisak-valve avatar Jul 14 '23 14:07 kisak-valve