Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

VirtualGL and the Steam overlay #535

Closed
akien-mga opened this Issue Feb 8, 2014 · 5 comments

Comments

Projects
None yet
4 participants

Hi,

I maintain the bumblebee and primus packages for Mageia (currently in the development release, but soon to be backported to Mageia 3 and 4, the latest stable releases).

As many people I can start Steam games with primusrun %command
(or optirun -b primus %command%), but using optirun %command% fails: the game launches and then crashes after 100 ms or so. Linux is about choice, so I'd like people to be able to use both primus and VirtualGL to run their steam games.

I searched a bit and read that the issue would be Steam overwriting LD_PRELOAD, and that VirtualGL doesn't handle it well. VirtualGL works fine if the Steam overlay is disabled. There is some talk about it here: #280 (comment)

It seems to be a Steam issue, but is there any hope that it could be worked around in bumblebee and/or in VirtualGL? For the latter, would there be a compilation flag or patch to do so, or should I see with upstream?

Thanks in advance!

Contributor

amonakov commented Feb 8, 2014

I believe Steam does not overwrite LD_PRELOAD anymore; if that was the case, VirtualGL would not be loaded at all.

It would be easier to help you if you provided details about the crash (such as a backtrace).

Are you testing with the latest release of VirtualGL? I believe it received some Steam-related fixes.

If the problem is what I guess it is: steam overlay and virtualgl stepping on each other's toes with dlopen/dlsym interposition, look into loading VirtualGL via a libGL.so.1->librrfaker.so symlink in LD_LIBRARY_PATH

I tried to get some info about the crashes, but I can't figure out how to obtain a proper backtrace from games which are run through the Steam GUI.
At least I can give the output relative to the game when Steam is ran through a terminal:

All games that I tested crash in the same manner with VirtualGL, when launched from the Steam GUI. The games run fine if I use "optirun path/to/game/dir/game_script.sh".
I can provide more information if you can tell me how to make a proper backtrace using Steam.

I'm using the latest stable release of VirtualGL (2.3.3) on x86_64. I also installed the VirtualGL library for i586.

I tried putting some libGL.so.1 symlinks in /usr/local/lib and /usr/local/lib64 pointing respectively to /usr/lib/librrfaker.so and /usr/lib64/librrfaker.so, but that didn't solve it. I'm not sure that's precisely what you meant, or if I misunderstood.

I'll look more into it in the coming days.

于 2014年02月09日 04:58, Alexander Monakov 写道:

I believe Steam does not overwrite LD_PRELOAD anymore; if that was the
case, VirtualGL would not be loaded at all.

It would be easier to help you if you provided details about the crash
(such as a backtrace).

Are you testing with the latest release of VirtualGL? I believe it
received some Steam-related fixes.

If the problem is what I guess it is: steam overlay and virtualgl
stepping on each other's toes with dlopen/dlsym interposition, look
into loading VirtualGL via a libGL.so.1->librrfaker.so symlink in
LD_LIBRARY_PATH


Reply to this email directly or view it on GitHub
#535 (comment).

also at fedora 20 ,
rpm -ql VirtualGL
/usr/bin/.vglrun.vars64
/usr/bin/cpustat
/usr/bin/glreadtest
/usr/bin/glxspheres64
/usr/bin/nettest
/usr/bin/tcbench
/usr/bin/vglclient
/usr/bin/vglconfig
/usr/bin/vglconnect
/usr/bin/vglgenkey
/usr/bin/vgllogin
/usr/bin/vglrun
/usr/bin/vglserver_config
/usr/lib64/VirtualGL
/usr/lib64/VirtualGL/libdlfaker.so
/usr/lib64/VirtualGL/libgefaker.so
/usr/lib64/VirtualGL/librrfaker.so
/usr/lib64/fakelib
/usr/lib64/fakelib/libGL.so
/usr/share/doc/VirtualGL
/usr/share/doc/VirtualGL/411.gif
/usr/share/doc/VirtualGL/422.gif
/usr/share/doc/VirtualGL/444.gif
/usr/share/doc/VirtualGL/ChangeLog.txt
/usr/share/doc/VirtualGL/LGPL.txt
/usr/share/doc/VirtualGL/LICENSE.txt
/usr/share/doc/VirtualGL/chromium-displaywall.png
/usr/share/doc/VirtualGL/chromium-sortfirst.png
/usr/share/doc/VirtualGL/chromium-sortlast.png
/usr/share/doc/VirtualGL/configdialog.gif
/usr/share/doc/VirtualGL/exceed1.png
/usr/share/doc/VirtualGL/exceed2.png
/usr/share/doc/VirtualGL/exceed3.png
/usr/share/doc/VirtualGL/exceed6.png
/usr/share/doc/VirtualGL/index.html
/usr/share/doc/VirtualGL/somerights20.png
/usr/share/doc/VirtualGL/sshtunnel.png
/usr/share/doc/VirtualGL/vgltransport.png
/usr/share/doc/VirtualGL/vgltransportservernetwork.png
/usr/share/doc/VirtualGL/virtualgl.css
/usr/share/doc/VirtualGL/x11transport.png
/usr/bin/.vglrun.vars32
/usr/bin/cpustat
/usr/bin/glreadtest
/usr/bin/glxspheres
/usr/bin/nettest
/usr/bin/tcbench
/usr/bin/vglclient
/usr/bin/vglconfig
/usr/bin/vglconnect
/usr/bin/vglgenkey
/usr/bin/vgllogin
/usr/bin/vglrun
/usr/bin/vglserver_config
/usr/lib/VirtualGL
/usr/lib/VirtualGL/libdlfaker.so
/usr/lib/VirtualGL/libgefaker.so
/usr/lib/VirtualGL/librrfaker.so
/usr/lib/fakelib
/usr/lib/fakelib/libGL.so
/usr/share/doc/VirtualGL
/usr/share/doc/VirtualGL/411.gif
/usr/share/doc/VirtualGL/422.gif
/usr/share/doc/VirtualGL/444.gif
/usr/share/doc/VirtualGL/ChangeLog.txt
/usr/share/doc/VirtualGL/LGPL.txt
/usr/share/doc/VirtualGL/LICENSE.txt
/usr/share/doc/VirtualGL/chromium-displaywall.png
/usr/share/doc/VirtualGL/chromium-sortfirst.png
/usr/share/doc/VirtualGL/chromium-sortlast.png
/usr/share/doc/VirtualGL/configdialog.gif
/usr/share/doc/VirtualGL/exceed1.png
/usr/share/doc/VirtualGL/exceed2.png
/usr/share/doc/VirtualGL/exceed3.png
/usr/share/doc/VirtualGL/exceed6.png
/usr/share/doc/VirtualGL/index.html
/usr/share/doc/VirtualGL/somerights20.png
/usr/share/doc/VirtualGL/sshtunnel.png
/usr/share/doc/VirtualGL/vgltransport.png
/usr/share/doc/VirtualGL/vgltransportservernetwork.png
/usr/share/doc/VirtualGL/virtualgl.css
/usr/share/doc/VirtualGL/x11transport.png

install from fedora updates repo
I try chmod u+x /usr/lib64/VirtualGL/libdlfaker.so like this
but also can not load libdlfaker librrfaker

I just tried with the latest nightly build of VirtualGL 2.3.4 (http://virtualgl.sourceforge.net/vgl.nightly/), but the issue is still there.

Contributor

amonakov commented Feb 9, 2014

To capture a backtrace, run GAME_DEBUGGER=gdb steam, it will give you a gdb prompt when starting HL2. Issue b exit and then c to start the game and bt when it received the GLX error.

Report the problem upstream.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment