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
472 stars 38 forks source link

[Linux] No text in the UI #1195

Open Enygma2002 opened 7 years ago

Enygma2002 commented 7 years ago

Since about a month ago, Dota2 started not displaying text in the UI: Main Menu: dota2 - no text - main screen Settings: dota2 - no text - settings

I've googled the issue many times but never found the exact symptoms I'm experiencing.

I am not experiencing this problem in other games, such as CSGO.

I have also done a distribution update recently to Fedora 25, so it might be related to that as well, not sure.

I've read in some issue about making sure to install the ttf-liberation (Ubuntu) fonts, so I made sure that I installed the Fedora equivalents, but that does not help either:

$ dnf list *liberation*
Last metadata expiration check: 17 days, 3:35:36 ago on Tue Feb 21 21:21:38 2017.
Installed Packages
liberation-fonts.noarch                                                                                                1:1.07.4-7.fc24                                                                                          @fedora      
liberation-fonts-common.noarch                                                                                         1:1.07.4-7.fc24                                                                                          @@commandline
liberation-mono-fonts.noarch                                                                                           1:1.07.4-7.fc24                                                                                          @@commandline
liberation-narrow-fonts.noarch                                                                                         1:1.07.4-7.fc24                                                                                          @@commandline
liberation-sans-fonts.noarch                                                                                           1:1.07.4-7.fc24                                                                                          @@commandline
liberation-serif-fonts.noarch

While running steam in the console and starting the game, I have a lot of such error messages:

(process:3975): GLib-GObject-WARNING **: plugin pointer (0x56470d990010) for type 'BasicEngineFc' is invalid

(process:3975): GLib-GObject-WARNING **: plugin '(unknown)' failed to register type '(null)'

(process:3975): GLib-GObject-WARNING **: plugin pointer (0x56470d990010) for type 'BasicEngineFc' is invalid

(process:3975): GLib-GObject-WARNING **: plugin '(unknown)' failed to register type '(null)'

(process:3975): GLib-GObject-WARNING **: plugin pointer (0x56470d990010) for type 'BasicEngineFc' is invalid

(process:3975): GLib-GObject-WARNING **: plugin '(unknown)' failed to register type '(null)'

(process:3975): Pango-CRITICAL **: pango_ft2_render_transformed: assertion 'PANGO_FT2_IS_FONT (font)' failed

(process:3975): Pango-CRITICAL **: pango_ft2_render_transformed: assertion 'PANGO_FT2_IS_FONT (font)' failed

(process:3975): Pango-CRITICAL **: pango_ft2_render_transformed: assertion 'PANGO_FT2_IS_FONT (font)' failed

Steam System Information:

Computer Information:
    Manufacturer:  Unknown
    Model:  Unknown
    Form Factor: Laptop
    No Touch Input Detected

Processor Information:
    CPU Vendor:  GenuineIntel
    CPU Brand:  Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz
    CPU Family:  0x6
    CPU Model:  0x3c
    CPU Stepping:  0x3
    CPU Type:  0x0
    Speed:  3600 Mhz
    8 logical processors
    4 physical processors
    HyperThreading:  Supported
    FCMOV:  Supported
    SSE2:  Supported
    SSE3:  Supported
    SSSE3:  Supported
    SSE4a:  Unsupported
    SSE41:  Supported
    SSE42:  Supported
    AES:  Supported
    AVX:  Supported
    CMPXCHG16B:  Supported
    LAHF/SAHF:  Supported
    PrefetchW:  Unsupported

Network Information:
    Network Speed:  

Operating System Version:
    "Fedora release 25 (Twenty Five)" (64 bit)
    Kernel Name:  Linux
    Kernel Version:  4.9.13-200.fc25.x86_64
    X Server Vendor:  Fedora Project
    X Server Release:  11901000
    X Window Manager:  KWin
    Steam Runtime Version:  steam-runtime-beta-release_2016-12-05

Video Card:
    Driver:  Intel Open Source Technology Center Mesa DRI Intel(R) Haswell Mobile 

    Driver Version:  3.0 Mesa 13.0.4
    OpenGL Version: 3.0
    Desktop Color Depth: 24 bits per pixel
    Monitor Refresh Rate: 60 Hz
    VendorID:  0x8086
    DeviceID:  0x416
    Revision Not Detected
    Number of Monitors:  1
    Number of Logical Video Cards:  1
    Primary Display Resolution:  1920 x 1080
    Desktop Resolution: 1920 x 1080
    Primary Display Size: 13.78" x 7.48"  (15.67" diag)
                                            35.0cm x 19.0cm  (39.8cm diag)
    Primary VRAM Not Detected

Sound card:
    Audio device: Intel Haswell HDMI

Memory:
    RAM:  15959 Mb

Miscellaneous:
    UI Language:  English
    LANG:  en_US.UTF-8
    Microphone:  Not set
    Steam Controller Cable and Base:  Not set
    Total Hard Disk Space Available:  185121 Mb
    Largest Free Hard Disk Block:  36579 Mb
    VR Headset: None detected

Recent Failure Reports:

Note, that steam is started regularly, while Dota2 is started with primusrun, using the Launch Options vblank_mode=0 primusrun %command%

Graphics details: Intel chip:

$ glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 13.0.4
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 13.0.4
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 13.0.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:

NVidia chip (using primus):

$ primusrun glxinfo | grep OpenGL
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 960M/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 375.39
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5.0 NVIDIA 375.39
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:

I'm available to provide any information needed to debug the problem.

Thanks for your help!

gdrewb-valve commented 7 years ago

This is going to be a tough one since it's something specific to your system but there's no clear suggestion of what. Hopefully somebody else will have a similar problem and we can try and see what's common between things.

kisak-valve commented 7 years ago

Hello @Enygma2002, given the timeline you have described my best guess is that the 2017-01-19 steam client update exposed a broken system configuration with the then new default to prefer system libraries. You should be able test this by completely closing steam, then running STEAM_RUNTIME_PREFER_HOST_LIBRARIES=0 steam from a terminal.

If this helps, great, but since this issue does not occur with a fresh install of Fedora 25, the most I can contribute to troubleshooting the actual cause of this issue is to provide a manifest of installed packages on my Fedora 25 test box, that is if you want it.

Enygma2002 commented 7 years ago

Running STEAM_RUNTIME_PREFER_HOST_LIBRARIES=0 steam I get:

/bin/bash: relocation error: /usr/lib64/primus/libGL.so.1: symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

This happens even when I try to run CSGO (which works with steams bundled libs, i.e. without setting that variable).

In terms of installed packages, I have:

$ dnf list installed *primus* *bumblebee* *mesa* *libstdc*
Last metadata expiration check: 17 days, 15:55:10 ago on Tue Feb 21 21:21:38 2017.
Installed Packages
bumblebee.x86_64                                                                                                    3.2.1-13.fc25                                                                                          @@commandline     
bumblebee-nonfree-release.noarch                                                                                    1.2-1                                                                                                  @System           
bumblebee-nvidia.x86_64                                                                                             375.39-2.fc25                                                                                          @bumblebee-nonfree
bumblebee-release.noarch                                                                                            1.2-1                                                                                                  @System           
libstdc++.i686                                                                                                      6.3.1-1.fc25                                                                                           @@commandline     
libstdc++.x86_64                                                                                                    6.3.1-1.fc25                                                                                           @@commandline     
libstdc++-devel.x86_64                                                                                              6.3.1-1.fc25                                                                                           @@commandline     
libstdc++-static.i686                                                                                               6.3.1-1.fc25                                                                                           @updates          
libstdc++-static.x86_64                                                                                             6.3.1-1.fc25                                                                                           @updates          
mesa-dri-drivers.i686                                                                                               13.0.4-1.fc25                                                                                          @updates          
mesa-dri-drivers.x86_64                                                                                             13.0.4-1.fc25                                                                                          @updates          
mesa-filesystem.i686                                                                                                13.0.4-1.fc25                                                                                          @updates          
mesa-filesystem.x86_64                                                                                              13.0.4-1.fc25                                                                                          @updates          
mesa-libEGL.i686                                                                                                    13.0.4-1.fc25                                                                                          @updates          
mesa-libEGL.x86_64                                                                                                  13.0.4-1.fc25                                                                                          @updates          
mesa-libGL.i686                                                                                                     13.0.4-1.fc25                                                                                          @updates          
mesa-libGL.x86_64                                                                                                   13.0.4-1.fc25                                                                                          @updates          
mesa-libGLES.x86_64                                                                                                 13.0.4-1.fc25                                                                                          @updates          
mesa-libGLU.i686                                                                                                    9.0.0-10.fc24                                                                                          @@commandline     
mesa-libGLU.x86_64                                                                                                  9.0.0-10.fc24                                                                                          @@commandline     
mesa-libOSMesa.i686                                                                                                 13.0.4-1.fc25                                                                                          @updates          
mesa-libOSMesa.x86_64                                                                                               13.0.4-1.fc25                                                                                          @updates          
mesa-libgbm.i686                                                                                                    13.0.4-1.fc25                                                                                          @updates          
mesa-libgbm.x86_64                                                                                                  13.0.4-1.fc25                                                                                          @updates          
mesa-libglapi.i686                                                                                                  13.0.4-1.fc25                                                                                          @updates          
mesa-libglapi.x86_64                                                                                                13.0.4-1.fc25                                                                                          @updates          
mesa-libwayland-egl.i686                                                                                            13.0.4-1.fc25                                                                                          @updates          
mesa-libwayland-egl.x86_64                                                                                          13.0.4-1.fc25                                                                                          @updates          
mesa-libxatracker.x86_64                                                                                            13.0.4-1.fc25                                                                                          @updates          
primus.i686                                                                                                         1.1.03282015-4.fc25                                                                                    @@commandline     
primus.x86_64                                                                                                       1.1.03282015-4.fc25                                                                                    @@commandline     

Any help in debugging this issue (even if at a system configuration level) would be highly appreciated both by myself, and by anyone else experiencing this problem.

kisak-valve commented 7 years ago

This error message is telling you that the steam runtime provided libstdc++ is too old to be used with the system built optirun. Something like LD_PRELOAD="libpthread.so.0 libGL.so.1" optirun -b primus %command% may help with that error, otherwise you may need to either LD_PRELOAD libstdc++ or remove it (libstdc++) from the steam runtime so that the system variant is used.

As for the font issue, it's more likely that an incompatible mix of system and steam runtime provided 64 bit pango and related libraries are being used with Dota 2 and I suspect you need to get the related libraries as a set to load up together, either a full set from the system or from the steam runtime.

Enygma2002 commented 7 years ago

@kisak-valve, using LD_PRELOAD="libpthread.so.0 libGL.so.1" optirun -b primus %command% as launch options gets the game started, but it brings me to the same point I was to begin with, the missing fonts problem (and pango error in the logs).

Any suggestion on how I could synchronize the used libraries (system vs steam)? Would a steam full reinstall be an option?

kisak-valve commented 7 years ago

I personally do not much more insight to give on this matter. Hopefully a more experienced Fedora user will have an idea. Here's the manifest: Fedora 25 test box package manifest

Enygma2002 commented 7 years ago

I've tried reinstalling steam completely:

...same result.

I've also looked at the package list you've provided and diffed it with my installed packages, for all packages containing font in their name. Came up with this list of packages missing from my system and installed them:

...no change either. Removed them back.

For reference, here is a list of my installed packages: Fedora_25_my_installed_packages.txt (note that I'm also using KDE, not sure if it matters)

Thanks for your help so far, @kisak-valve.

Enygma2002 commented 7 years ago

Any help on this would be highly appreciated!

Enygma2002 commented 7 years ago

Still unable to enjoy the game :(

Is there anyone that could point me in the right direction?

What about the pango-related error? How could I find out which one is the problematic font? Any debug mode I could activate to get more information?

gdrewb-valve commented 7 years ago

I'd recommend asking in places devoted to Fedora 25. There may be other people having a similar issue there.

Enygma2002 commented 7 years ago

Hello folks,

Finally, (about 2 weeks ago) I have managed to fix my problem and would like to take the time to share with anyone interested the solution that worked for me.

After updating my system's libpango (pango-1.40.5-1.fc25.i686) I have linked the following dota static libraries to my system's:

<home>/.local/share/Steam/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/:
libpango-1.0.so -> /usr/lib64/libpango-1.0.so.0
libpangoft2-1.0.so -> /usr/lib64/libpangoft2-1.0.so.0
librenderdoc.so -> /usr/lib64/librenderdoc.so

Additionally, I also had a warning in the logs about invalid font configuration (saying that the test tag does not accept multiple values): <home>/.local/share/Steam/steamapps/common/dota 2 beta/game/core/panorama/fonts/conf.d/41-repl-os-win.conf So I've fixed the file and left the DejaVu Sans value (from the 2 existing ones). There were about 2 such cases AFAIR.

Finally, I also had an error about not finding librenderdoc so I've installed that (renderdoc-0.33-3.mga6.x86_64) as well to get rid of the message.

Now I can successfully see the fonts in the game as my system's Pango seems to do its job and no longer see the errors in the console.

However, as you can see from the screenshot, my fonts are a bit ugly, probably using the DejaVu Sans from the config file that I've "fixed" as the last step, but I would guess that with my system Pango, this "fix" might not be necessary (and I don't have a copy of the original file to revert my change and test).

20170515015517_1

So my request would be to please review and try to update the statically bundled Pango dependency which might help in fixing this problem.

Thanks.

monotykamary commented 6 years ago

On Fedora 27, symlinking these two files were enough for me:

libpango-1.0.so -> /usr/lib64/libpango-1.0.so.0
libpangoft2-1.0.so -> /usr/lib64/libpangoft2-1.0.so.0

This issue happens on both a bumblebee and PRIME setup. The only alternative workaround that doesn't include messing with game files is running dota2 on Vulkan with the PRIME setup.

Setheck commented 5 years ago

I had this issue today after updating my system, and I can confirm that the linking @monotykamary suggests worked. Here is my sysnfo from neofetch

██████████████████  ████████   seth@home
██████████████████  ████████   ------------ 
██████████████████  ████████   OS: Manjaro Linux x86_64 
██████████████████  ████████   Host: All Series 
████████            ████████   Kernel: 5.0.7-1-MANJARO 
████████  ████████  ████████   Uptime: 1 hour, 45 mins 
████████  ████████  ████████   Packages: 1408 (pacman) 
████████  ████████  ████████   Shell: zsh 5.7.1 
████████  ████████  ████████   Resolution: 1920x1080, 1680x1050 
████████  ████████  ████████   DE: KDE 
████████  ████████  ████████   WM: KWin 
████████  ████████  ████████   Theme: Breeze Dark [KDE], Breath [GTK2/3] 
████████  ████████  ████████   Icons: breeze-dark [KDE], maia [GTK2/3] 
████████  ████████  ████████   Terminal: konsole 
                               Terminal Font: Noto Mono 10 
                               CPU: Intel i7-4790K (8) @ 4.400GHz 
                               GPU: NVIDIA GeForce GTX 970 
                               Memory: 3308MiB / 15982MiB

All I did was

$ cd <Steam Root>/steamapps/common/dota 2 beta/game/bin/linuxsteamrt64/
$ mkdir backup && mv libpango-1.0.so libpangoft2-1.0.so backup/
$ ln -s /usr/lib64/libpango-1.0.so libpango-1.0.so
$ ln -s /usr/lib64/libpangoft2-1.0.so libpangoft2-1.0.so

Make sure you set the steam root appropriately, this is commonly $HOME/.local/share/Steam but different in my case because I keep games on a different mount.

ackFacu commented 5 years ago

Thx everyone. Had the same problem in manjaro and this worked. (applied @Setheck solution) Only thing, I see letters a little different from before. But at least I see some letters jejej. Thx!!

yrrah2 commented 5 years ago

My solution was to install this https://aur.archlinux.org/packages/libselinux/ However it makes the game have a very ugly font