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

[Linux] Cannot launch Dota. Unable to load libpangoft2-1.0.so

Open mirfan-link opened this issue 5 years ago • 50 comments

Your system information

  • System information from steam (https://gist.github.com/mirfan-link/e60cae03143e0045a09948e51556d84f):
  • Have you checked for system updates?: [Yes]
  • Are you using the latest stable video driver available for your system? [Yes]
  • Have you verified the game files?: [Yes]

Please describe your issue in as much detail as possible:

Game crashes on launch. Get black screen with window "Unable to load libpangoft2-1.0.so, your game install may be corrupted or you may system conflict"

opening dota.sh will shows:

Using breakpad crash handler
[S_API] SteamAPI_Init(): Loaded '/home/mirfan/.steam/debian-installation/linux64/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
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198306013571 [API loaded yes]
Steam_SetMinidumpSteamID:  Setting Steam ID:  76561198306013571
Setting breakpad minidump AppID = 373300
INTEL-MESA: warning: Haswell Vulkan support is incomplete
 failed to dlopen "libpangoft2-1.0.so" error=/mnt/9b197ab5-de68-4179-83c4-e1e2ae7adde7/SteamLibrary/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libpangoft2-1.0.so: symbol png_set_expand_gray_1_2_4_to_8 version PNG12_0 not defined in file libpng12.so.0 with link time reference
 failed to dlopen "libpangoft2-1.0.so" error=/mnt/9b197ab5-de68-4179-83c4-e1e2ae7adde7/SteamLibrary/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/libpangoft2-1.0.so: symbol png_set_expand_gray_1_2_4_to_8 version PNG12_0 not defined in file libpng12.so.0 with link time reference

Steps for reproducing this issue:

  1. run dota from steam client

mirfan-link avatar Jan 31 '20 12:01 mirfan-link

Hello @mirfan-link, please provide the complete system information from the Help > System Information dialog. In particular, please wait for the "Steam Linux Runtime Information" section to be filled up and provide that to us, thank you!

TTimo avatar Feb 03 '20 15:02 TTimo

I have been waiting for the "runtime information tool" report but it takes a very long time and nothing is displayed.

mirfan-link avatar Feb 12 '20 02:02 mirfan-link

Please make sure you are running the latest Steam beta - the issue you are reporting about the srt-info tool being very slow or unresponsive may still happen in the general release, but should not longer be happening in the beta version.

TTimo avatar Feb 12 '20 03:02 TTimo

i also have this issue.

https://gist.github.com/gemakochi/20e9403cd35ec4774d3c3a3776f740ea console.txt crash.zip

gemakochi avatar Mar 15 '20 13:03 gemakochi

Hello @gemakochi, running Dota 2 from outside the Steam runtime is not supported. If you're going to test from outside of Steam, consider using ~/.steam/debian-installation/ubuntu12_32/steam-runtime/run.sh ./dota.sh to give Dota 2 a similar environment as when it's run from Steam.

kisak-valve avatar Mar 15 '20 13:03 kisak-valve

with that command game launched and crushed after logo, no error message displayed other then console. console.txt

gemakochi avatar Mar 15 '20 13:03 gemakochi

Interesting that run.sh doesn't work either, but this is a different error than the pango issue we are tracking: failed to dlopen "libtensorflow.so" error=libtensorflow.so: cannot open shared object file: No such file or directory.

@gemakochi please run Dota 2 from the Steam client instead and see if the same error reproduces?

TTimo avatar Mar 16 '20 15:03 TTimo

it's same, game crashes after logo. no visible error message. how can i gather logs?

https://youtu.be/DFGyMZyH4dk

gemakochi avatar Mar 16 '20 15:03 gemakochi

You can run steam from the command line to capture logs.

We can ignore the libtensorflow.so thing as a red herring - https://github.com/ValveSoftware/Dota-2/issues/1418#issuecomment-373493831

An updated crash dump would be useful. Your latest log https://github.com/ValveSoftware/Dota-2/files/4334289/console.txt doesn't report a libpangoft2 error either so you may be running into something different.

TTimo avatar Mar 16 '20 15:03 TTimo

i used same command from shortcut and it failed again but it's working without %U parameter. what "%U" does?

2020-03-16 18-46-41 ekran görüntüsü

crash_20200316184339_1.zip console.txt

gemakochi avatar Mar 16 '20 15:03 gemakochi

For reference, the attached minidump is a SIGSEGV in libtier0.so coming from libclient.so (part of Dota 2).

kisak-valve avatar Mar 16 '20 15:03 kisak-valve

It looks like your steam launch script is a distribution or user-altered version of the official steam launch script. I can't help with that but maybe you can bypass this cruft and launch directly by running ~/.steam/steam/steam.sh

TTimo avatar Mar 16 '20 16:03 TTimo

it's working with that command. ~~i'm not sure if i change that shortcut.~~ it's debian specific. console.txt

gemakochi avatar Mar 16 '20 16:03 gemakochi

Do you mean Dota 2 is working, e.g. problem fixed?

TTimo avatar Mar 16 '20 16:03 TTimo

yes thank you, it's looks like i don't have a problem at all.

gemakochi avatar Mar 16 '20 16:03 gemakochi

@gemakochi If the Debian /usr/games/steam script does not work, but running ~/.steam/steam/steam.sh directly does work, then please report that to Debian (not here) as a bug in the steam package. Please describe what you do, what you expected to happen, and what actually happens, including any log output that steam or ~/.steam/steam/steam.sh produces when run from a command-line.

The %U syntax in .desktop shortcuts gets replaced by a URL like steam://store, or removed completely if there is no relevant URL. This happens automatically when launching it from a desktop menu. If you are running Steam from a command-line, don't type %U.

smcv avatar Mar 16 '20 16:03 smcv

before your comment i was able to launch game with both /usr/games/steam and ~/.steam/steam/steam.sh. game was crashing with %U added, last crash dump was about that.

then i edit shortcut, removed %U, lauched and joined a ranked game. then i notice key shortcuts was not as i set before. i quit game to change settings. now i can't launch game again. i attached latest crash dump.

console2.txt crash_20200316194207_1.zip

gemakochi avatar Mar 16 '20 16:03 gemakochi

As the original Issue was never solved, here my explanation (which solved the exact same issue for me):

The libpangoft2-1.0.so, which is part of the Dota 2 libraries, looks for symbol png_set_expand_gray_1_2_4_to_8 version PNG12_0 as the error message states.

A quick look into my Ubuntu 18.04 libraries showed, that the required libpng12.so is only a symlink to libpng16.so, which apparently does not have this symbol.

~As libpng12 is not available for Ubuntu 18.04, i downloaded the libpn12 package from Ubuntu 16, and compiled it myself. After adding the correct libpng12.so into the library folder of Dota (game/bin/linuxsteamrt64/), the game started without issues.~ Moderator note: This should not be done, instead, if possible please identify where the ABI incompatible symlink came from, then remove the system-wide symlink.

Edit: This Issue https://github.com/ValveSoftware/Dota-2/issues/1641 mentions the Problem already.

JackTemaki avatar Mar 18 '20 22:03 JackTemaki

Hello @JackTemaki, libpng12.so and libpng16.so are ABI incompatible and should never be symlinked together. Additionally, libpng12.so is provided by the Steam runtime, but if there's a symlink from one to the other, then Steam sees the system variant as newer than the Steam runtime variant, and it gets preferred by default.

If you're able to determine what added the symlink to your system, that would be interesting to know.

kisak-valve avatar Mar 18 '20 22:03 kisak-valve

@kisak-valve I do not remember doing the symlink myself, and the date is 17. March 2019... but i am not completely sure if this was not done by me.

I was not familiar with the runtime folder structure, so I did not see the local file. Of course, when deleting the symlink, Dota 2 starts.

Edit: 17. March was the date updating from 16.04 to 18.04... so either something added the link during the update, or i did it by hand at the same time for whatever reason.

JackTemaki avatar Mar 18 '20 22:03 JackTemaki

Please do not attempt @JackTemaki's workaround - you may get Dota 2 running out of luck, and cause a bunch of other problems in return.

We think the problem is that Dota 2 shouldn't be including these pango libraries in the first place.

Try the following workaround instead:

  • Go to ~/.steam/steam/SteamApps/common/dota 2 beta/game/bin/linuxsteamrt64

  • Rename the libpango* files so they are out of the way:

timo@phoenix ~/.s/s/S/c/d/g/b/linuxsteamrt64> ls -1al libpango*
-rwxr-xr-x 1 timo timo 2832047 Aug 28  2019 libpango-1.0.so.off*
-rwxr-xr-x 1 timo timo 6955707 Aug 28  2019 libpangoft2-1.0.so.off*
  • Run the library pinning again, in case those libraries are not present on your host (but really they should): ~/.steam/steam/ubuntu12_32/steam-runtime/setup.sh --force

  • On Debian and derivatives, create symlinks in ~/.steam/steam/SteamApps/common/dota 2 beta/game/bin/linuxsteamrt64 to your host version of the libraries. Note the host libraries are libpango-1.0.so.1 and the Dota 2 version needs to be libpango-1.0.so.

  • Check that Dota 2 works (please report whether this works or not, with distro info and updated logs)

TTimo avatar Mar 19 '20 16:03 TTimo

no luck for me.

2020-03-19 23-36-07 ekran görüntüsü

console.txt crash_20200319233543_1.zip

gemakochi avatar Mar 19 '20 20:03 gemakochi

Looks like Dota 2 tries to do an explicit load - what happens if you try to symlink the two files from the linuxsteamrt64 to your distribution's version of those files?

I cannot reproduce this on Arch either, the game starts fine without the need for symlinks to the host libraries for me (update: I know why Arch does not require the symlinks, that's because it comes with libpango-1.0.so in system libs in addition to libpango-1.0.so.1 - Debian and co only have the latter).

TTimo avatar Mar 20 '20 16:03 TTimo

at first game didn't launched then i run ~/.steam/steam/ubuntu12_32/steam-runtime/setup.sh --force, it worked for once. i closed game and it's not working again. this is same situation as i thought it was fixed.

console.txt crash_20200320194.zip

gemakochi avatar Mar 20 '20 16:03 gemakochi

Ubuntu 20.04 I'm getting the same thing as gemakochi's youtube video. Game shows the logo, and then quits no explanation. This is a clean install out of the box. Tried tinkering over an hour but I couldn't figure it out what the problem is and I don't know how to analyze dmp files.

I suspect its intermittent, after attempting to launch the game 22 times, it actually loaded twice and crashed 20.

crash.zip

FireCulex avatar Mar 26 '20 17:03 FireCulex

(update: I know why Arch does not require the symlinks, that's because it comes with libpango-1.0.so in system libs in addition to libpango-1.0.so.1 - Debian and co only have the latter).

The version with just .so is the development symlink, intended to be used by developers to link executables with -lpango-1.0. The version with .so.1 is the runtime symlink, intended to be used by programs at runtime. Your Arch system has both because Arch doesn't separate development library packages from runtime library packages. In Debian derivatives the development symlink is in the -dev package, and in Red Hat derivatives it's in the -devel package. Installing the libpango1.0-dev package on a Debian-derived system would make it behave like Arch in this respect.

If Dota wants to load a version of libpango that conforms to ABI version 1, it should be using dlopen ("libpango.so.1"), so that it will not get a really ancient version (ABI version 0) or a hypothetical future version (ABI version 2 or up).

smcv avatar Mar 26 '20 19:03 smcv

The workaround I described still applies.

It will take a little bit as I get setup with the Dota 2 source to get a fixed version pushed through the pipes to fix this.

It's quite possible that there are other crashes beyond the pango problem, which will need to be tracked as separate issues.

As another alternative, Dota 2 works great when executed within the container runtime configuration (without requiring libpango manipulations).

TTimo avatar Mar 26 '20 19:03 TTimo

@TTimo Hi, can you please give more info about the container runtime configuration? (docker?) Thanks

qt1 avatar Apr 08 '21 23:04 qt1

@qt1 set Dota 2 to use the 'Steam Linux Runtime' compatibility tool, like so: https://gyazo.com/a44a42c28df8eae9112a0128af9681bb

TTimo avatar Apr 12 '21 15:04 TTimo

It is starting' king of, then fails.

... RecordSteamInterfaceCreation (PID 185196): STEAMPARENTALSETTINGS_INTERFACE_VERSION001 / RecordSteamInterfaceCreation (PID 185196): SteamInput001 / in\win64\dota2.exe: ../src-wine/dlls/ntdll/unix/virtual.c:1243: create_view: Assertion !((UINT_PTR)base & page_mask)' failed. in\win64\dota2.exe: ../src-wine/dlls/ntdll/unix/virtual.c:1243: create_view: Assertion !((UINT_PTR)base & page_mask)' failed.


Encountered crash. Wrote minidump to dota2_2021_0413_033254_1_crash.mdmp

pid 185136 != 185135, skipping destruction (fork without exec?) Game removed: AppID 570 "", ProcID 185196 Game 570 created interface STEAMAPPLIST_INTERFACE_VERSION001 / ...

and then it gets stuck until killall -9 dota2

qt1 avatar Apr 13 '21 01:04 qt1