Dota-2
Dota-2 copied to clipboard
[Linux] Cannot launch Dota. Unable to load libpangoft2-1.0.so
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:
- run dota from steam client
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!
I have been waiting for the "runtime information tool" report but it takes a very long time and nothing is displayed.
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.
i also have this issue.
https://gist.github.com/gemakochi/20e9403cd35ec4774d3c3a3776f740ea console.txt crash.zip
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.
with that command game launched and crushed after logo, no error message displayed other then console. console.txt
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?
it's same, game crashes after logo. no visible error message. how can i gather logs?
https://youtu.be/DFGyMZyH4dk
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.
i used same command from shortcut and it failed again but it's working without %U parameter. what "%U" does?

For reference, the attached minidump is a SIGSEGV in libtier0.so coming from libclient.so (part of Dota 2).
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
it's working with that command. ~~i'm not sure if i change that shortcut.~~ it's debian specific. console.txt
Do you mean Dota 2 is working, e.g. problem fixed?
yes thank you, it's looks like i don't have a problem at all.
@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.
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.
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.
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 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.
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/linuxsteamrt64to your host version of the libraries. Note the host libraries arelibpango-1.0.so.1and the Dota 2 version needs to belibpango-1.0.so. -
Check that Dota 2 works (please report whether this works or not, with distro info and updated logs)
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).
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.
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.
(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).
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 Hi, can you please give more info about the container runtime configuration? (docker?) Thanks
@qt1 set Dota 2 to use the 'Steam Linux Runtime' compatibility tool, like so: https://gyazo.com/a44a42c28df8eae9112a0128af9681bb
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
