ValveSoftware / Dota-2

Tracker for issues specific to Linux and Mac in the Reborn client. If you have a general issue or non-system-specific feature request please go to dev.dota2.com
470 stars 38 forks source link

[Linux] Dota 2 doesn't start (possibly allocation problem) #2365

Open Flowneee opened 1 year ago

Flowneee commented 1 year ago

Your system information

Please describe your issue in as much detail as possible:

For a few days Dota 2 is just refuses to work on my machine. At the beginning it just frequently hanged when game found or while in match. I tried to update my systemd and now it just refuses to load, being stuck on Dota 2 logo screen. If I move window to another desktop, even logo disappear and I just see desktop background. However it still consume CPU (5 cores exactly each restart). Rarely it goes past logo, but immediately stuck on main menu (switching desktops breaks it the same way). One time it hang my system so hard, I wasn't been able to kill process or even check it with htop or ps. Output of the ps didn't go beyond this, it just stuck on this line:

flowneee    4053    4029  0  7501  7360   8 22:04 ?        00:00:00 /bin/bash /home/flowneee/.local/share/Steam/steamapps/common/dota 2 beta/game/dota.sh +engine_experimental_drop_fr
c^C

Only threads consuming CPU are GlobPool/x. One thing I noticed multiple times are similar messages in stdout/stderr of Steam (not each time though):

tcmalloc: large alloc 14051129470963671040 bytes == (nil) @

I'm not sure but that is a lot :)

After a few attempts I was able to load into game, and when it froze I still hear sounds.

I don't see anything suspicious in dmesg (except x86/split lock detection from Steam), nor in logs.

Steps for reproducing this issue:

On my machine:

  1. Run Dota2 (that's it)
kisak-valve commented 1 year ago

Hello @Flowneee, please copy the contents of Steam Runtime Diagnostics from Steam (Steam -> Help -> Steam Runtime Diagnostics) and put it in a gist, then include a link to the gist in this issue report.

Blind guess, but does completely closing Steam, then running Steam from a terminal have an effect or give any hints in the terminal spew when you tell Steam to run Dota 2?

Flowneee commented 1 year ago

Blind guess, but does completely closing Steam, then running Steam from a terminal have an effect or give any hints in the terminal spew when you tell Steam to run Dota 2?

Nope, nothing. I mentioned the only suspicious line from terminal

tcmalloc: large alloc 14051129470963671040 bytes == (nil) @

gist I didn't know about it. I looked through it and 2 things caught my attention

  1. "Unable to find the library: libcrypt.so.1: cannot open shared object file: No such file or directory"
  2. "soldier runtime container" is not installed. (I am surely have soldier runtime installed, I even verified files).

Probably I need to solve 1. first and then check again

kisak-valve commented 1 year ago

Thanks, since you're using an Optimus laptop, it might be interesting to test setting the game's launch options to __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command% and see if that has an effect.

Flowneee commented 1 year ago

Thanks, since you're using an Optimus laptop, it might be interesting to test setting the game's launch options to __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command% and see if that has an effect.

I was able to go to main menu with prime-run (which also set __VK_LAYER_NV_optimus=NVIDIA_only), but when I loaded to the game it crashed after about 1 min. And immediately tcmalloc messages in steam output.

Flowneee commented 1 year ago

Okay, I installed libcrypto.so.1, didn't help. Strange, but diagnostic nos shows

        "libcrypt.so.1" : {
          "soname" : null,
          "path" : "/usr/lib32/libcrypt.so.1"
        },
        "libcrypto.so.1.0.0" : {
          "soname" : null,
          "path" : "/home/flowneee/.local/share/Steam/ubuntu12_32/steam-runtime/lib/i386-linux-gnu/libcrypto.so.1.0.0"
        },
Flowneee commented 1 year ago

So I tried to rollback to older Nvidia driver 525 (and kernel 6.2, because modules from older drivers doesn't compile with recent 6.3 kernel and vice versa), and I was able to play a game without any issues. It seems to me like Nvidia or kernel problem (most likely Nvidia though since sound was working even when image is stuck).