[SOLVED] valve games (dota2) not working in latest -current
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
valve games (dota2) not working in latest -current
Posting in the hopes of helping others avoid or fix this issue. If you are running -current, and you suddenly find that dota2 and other valve games no longer run, you will need to downgrade your libdrm back to the earlier 2.4.54.
You can do this by getting the source from here: http://dri.freedesktop.org/libdrm/
and using the slack script from the source directory for this package under x.
Here's hoping it helps avoid dota2 withdraw and merry Christmas to all.
Posting in the hopes of helping others avoid or fix this issue. If you are running -current, and you suddenly find that dota2 and other valve games no longer run, you will need to downgrade your libdrm back to the earlier 2.4.54.
You can do this by getting the source from here: http://dri.freedesktop.org/libdrm/
and using the slack script from the source directory for this package under x.
Here's hoping it helps avoid dota2 withdraw and merry Christmas to all.
Yes I am on a multilib system and yes I upgraded the compat32 package for libdrm, mesa, etc. For a hat trick, I am also on an optimus system which may be the final piece to make it break.
My error was as stated in that bug and the solution is workable... downgrade libdrm for now. Based on some chatter on the steam forum this seemed tho not limited to optimus enabled systems, but I am looking through the code to see if there is something in primus or bumblebee that may need fixed or that may fix this. If not, I would expect valve to patch their code at some point.
First, if you already had libvdpau installed from a 3rd party repository don't forget to replace it with the new libvdpau package in slackware-current.
Half-Life works OK after the upgrade, but Half-Life 2: Lost Cost crashes when loading the level. Dmesg shows:
Code:
hl2_linux[2722]: segfault at 0 ip (null) sp 00000000ffbeb21c error 14 in hl2_linux[8048000+1000]
Haven't tried DOTA2 yet (did not have that installed yet) but since it also uses the Source engine like HL2, I suppose it will crash the same way.
I do not have Optimus, just a regular GeForce GT 240 card.
I made sure to remove libvdpau from building in Nick's repo with my build script (crazybee.sh). Nick has subsequently removed that folder and sent it to pasture with the 14.1 branch.
I found that downgrading to libdrm 2.4.56 (2.4.57 would not build) is working with Dota 2 and Half Life 2. FYI, I'm on multilib/64-current/bumblebee/primus.
If someone has some time to play with this stuff and wants to (try to) figure out where it broke:
Code:
git clone git://anongit.freedesktop.org/git/mesa/drm
git bisect start
git checkout libdrm-2.4.56
git bisect good
git checkout libdrm-2.4.58
git bisect bad
At that point, you'll get a different commit to build and test.
What I usually do is something like this:
Code:
./autogen.sh
./configure (options from build script)
make
make install DESTDIR=/tmp/testing
*open a new root terminal window*
cd /tmp/testing
chown -R root:root .
rm -rf ./usr/man ./usr/doc ./usr/share/doc
makepkg -c n -l y /tmp/libdrm-testing1-$arch-1.tgz
Upgrade to that package, test it (no reboot needed - just a kill/restart of X, I would think), and then go back into the libdrm git directory. If all is well with that package, then do this:
Code:
git bisect good
If not, then do this:
Code:
git bisect bad
Either way, you'll get a new revision to test. You'll need to clean out the leftovers from the prior build first though:
Code:
make clean
git clean
Now repeat the build/install process and loop until you find the bad commit.
My first guess is that this is the culprit: http://cgit.freedesktop.org/mesa/drm...6ba1b79ccdcf2e (configure: Support symbol visibility when available).
The opensource drivers have been updated to support this symbol visibility feature but probably this causes issues with the binary blobs.
Other commits between 2.4.56 and 2.4.58 don't appear to be relevant to the issue.
If someone has some time to play with this stuff and wants to (try to) figure out where it broke:
The first two bisects were good, I'll try to finish up the testing but need to do some X-Mas eve stuff for now. Thanks for the detailed instructions, I had never used git bisect before, seems very useful. ;-)
Hopefully I am doing the right thing in building these as compat32, I have not touched the 64-bit package as I do not believe Steam relies on it anyways.
Last edited by ryanpcmcquen; 12-24-2014 at 01:49 PM.
Reason: remove needless word
The first two bisects were good, I'll try to finish up the testing but need to do some X-Mas eve stuff for now. Thanks for the detailed instructions, I had never used git bisect before, seems very useful. ;-)
FYI, hopefully I am doing the right thing in building these as compat32, I have not touched the 64-bit package as I do not believe Steam relies on it anyways.
Yep, but probably alienBOB is correct. Either way, the exercise is useful. :-)
I tried disabling setting the visibility to "hidden" of the dsrm library's internal symbols, something which had been added between 2.4.56 and 2.4.58, but I could not see a difference. I installed the 64-bit modified package as well as the compat32 package (steam is 32-bit).
$ cat libdrm-2.4.58_visibility.patch
Code:
--- libdrm-2.4.58/configure.orig 2014-09-28 20:55:06.000000000 +0200
+++ libdrm-2.4.58/configure 2014-12-26 00:18:51.724704379 +0100
@@ -13220,7 +13220,7 @@
-if test "x$GCC" = xyes; then
+if test "x$GCC" = foo; then
# Enable -fvisibility=hidden if using a gcc that supports it
save_CFLAGS="$CFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fvisibility=hidden" >&5
Perhaps my crude lobotomy was insufficient, or perhaps there is another issue which eludes me.
Game that does not run (as stated before) even with the modified libdrm package is Half-life 2: Lost Coast. It crashes during loading of the game. The games that do work (with the original Slackware libdrm as well as with my modified version) are Half-life, Half-life 2 and DOTA2. Did not try others.
I have bumblebee too and until now this games are working:
War Thunder
And this are not working:
Team Fortress 2
Left 4 Dead 2
I am on Slackware64 multilib current and with WhiteWolf's bumblebee git, all updated.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.