Latest Comments by Grogan
Steam not working right on Arch Linux? It's an issue with FreeType and there's a fix
5 Sep 2021 at 9:54 pm UTC Likes: 2
5 Sep 2021 at 9:54 pm UTC Likes: 2
The "regression" is all Steam, not Arch. It's not even freetype that was (still is, on non-beta) the problem, it was their own stupidly bundled libharfbuzz in steam-runtime-heavy and linux runtime soldier. See, the new freetype is no longer compatible with the old harfbuzz API. This is Valve's mistake... what do they think is going to happen? System freetype, old bundled harfbuzz. That's even a circular dependency, freetype linked against harfbuzz, harfbuzz linked against freetype.
The clue was this:
steamwebhelper: symbol lookup error: /usr/lib/libfreetype.so.6: undefined symbol: hb_ot_tags_from_script_and_language
That's a harfbuzz symbol. Note that with later beta clients updates, it didn't print this error anywhere on console, so I was lucky to get this clue when the problem first surfaced.
I had upgraded to freetype 2.11 long before Arch did. I keep my systems binary compatible because I compile some things to run on all my systems, so when my other systems (LFS, Slackware) get an upgrade for something like that, all do.
I tried forcing Steam to load my libharfbuzz with LD_PRELOAD and it worked for the UI and the client worked correctly, but bombed out on Proton because it was being overridden in the runtime soldier bwrap container.
So what I ended up doing was dropping in the previous libfreetype.so.6 from my freetype 2.10.4 package and setting LD_LIBRARY_PATH. That worked until Valve finally fixed it with a somewhat newer libharfbuzz (from Dec. 2019 lol... they are still trying to support old Ubuntu) and probably a recompile of the embedded Chrome.
Also note, it was only the 64 bit parts of Steam that had this problem. I used lsof to help me solve this problem and Steam was correctly hooking both lib32-freetype and lib32-harfbuzz from /usr/lib32 and the Steam client does not bundle them.
I think that everyone using Steam on Linux should be using the beta client (to ensure the latest proton bits etc.) but anyone not, that wants to fix this, instead of downgrading freetype, could simply stick their previous libfreetype.so.6 (copy the real library and rename or symlink) to a directory that doesn't have any other libraries and start Steam with "LD_LIBRARY_PATH=/path/to/directory steam" or better yet, to the wrapper script used to start it (e.g. /usr/bin/steam), "export LD_LIBRARY_PATH=/path/to/directory" which is how I did it.
The clue was this:
steamwebhelper: symbol lookup error: /usr/lib/libfreetype.so.6: undefined symbol: hb_ot_tags_from_script_and_language
That's a harfbuzz symbol. Note that with later beta clients updates, it didn't print this error anywhere on console, so I was lucky to get this clue when the problem first surfaced.
I had upgraded to freetype 2.11 long before Arch did. I keep my systems binary compatible because I compile some things to run on all my systems, so when my other systems (LFS, Slackware) get an upgrade for something like that, all do.
I tried forcing Steam to load my libharfbuzz with LD_PRELOAD and it worked for the UI and the client worked correctly, but bombed out on Proton because it was being overridden in the runtime soldier bwrap container.
So what I ended up doing was dropping in the previous libfreetype.so.6 from my freetype 2.10.4 package and setting LD_LIBRARY_PATH. That worked until Valve finally fixed it with a somewhat newer libharfbuzz (from Dec. 2019 lol... they are still trying to support old Ubuntu) and probably a recompile of the embedded Chrome.
Also note, it was only the 64 bit parts of Steam that had this problem. I used lsof to help me solve this problem and Steam was correctly hooking both lib32-freetype and lib32-harfbuzz from /usr/lib32 and the Steam client does not bundle them.
I think that everyone using Steam on Linux should be using the beta client (to ensure the latest proton bits etc.) but anyone not, that wants to fix this, instead of downgrading freetype, could simply stick their previous libfreetype.so.6 (copy the real library and rename or symlink) to a directory that doesn't have any other libraries and start Steam with "LD_LIBRARY_PATH=/path/to/directory steam" or better yet, to the wrapper script used to start it (e.g. /usr/bin/steam), "export LD_LIBRARY_PATH=/path/to/directory" which is how I did it.
- Oh dear - ARC Raiders was logging your private Discord chats [updated]
- Many more US states are planning or already have operating system age verification laws
- Xbox "Project Helix" confirmed to run Xbox and PC games - competition for the Steam Machine
- Transport Fever 3 confirmed for Linux and macOS support
- Slay the Spire 2 is out now in Early Access with online co-op
- > See more over 30 days here
Recently Updated
- Do you miss LaunchBox/Playnite on Linux?
- Dark574 - Recommendations for portable monitor for Steam Deck?
- childermass - Shop Crush - Psychological Horror Thrift Sim with Literal Illusio…
- hollowlimb - Introduce Yourself!
- hollowlimb - Proton/Wine Games Locking Up
- Caldathras - See more posts
How to setup OpenMW for modern Morrowind on Linux / SteamOS and Steam Deck
How to install Hollow Knight: Silksong mods on Linux, SteamOS and Steam Deck