<div dir="ltr"><div><div><div><div><div><div><div><br></div>i ran into this issue on ubuntu 16.04 (64 bit), and i can confirm that both workarounds (using Nouveau and setting LD_LIBRARY_PATH=/usr/lib/nvidia-375 ) fix the issue.<br><br></div>to add a bit more info, it seems that in the failing case, glxinfo (or presumably the other apps), can't find the GLX_indirect library that it trys to load dynamically, which has something to glvnd: <br><a href="https://github.com/NVIDIA/libglvnd">https://github.com/NVIDIA/libglvnd</a><br><br></div>looking at ldd, you can see that glxinfo is finding the GL libraries fine, using the system-set ld.so.conf settings that the nvidia driver sets up:<br>moskewcz@mari:/etc/ld.so.conf.d$ ldd /usr/bin/glxinfo<br>    linux-vdso.so.1 =>  (0x00007ffe4779c000)<br>    libGL.so.1 => /usr/lib/nvidia-375/libGL.so.1 (0x00007fcd87f35000)<br>    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fcd87bfb000)<br>    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcd87831000)<br>    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fcd8762d000)<br>    libGLX.so.0 => /usr/lib/nvidia-375/libGLX.so.0 (0x00007fcd873fd000)<br>...<br><br></div>the paths are set here:<br>moskewcz@mari:/etc/ld.so.conf.d$ cat /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf <br>/usr/lib/nvidia-375<br>/usr/lib32/nvidia-375<br><br></div>using strace, we can see the difference that setting LD_LIBRARY_PATH makes:<br><br></div><div># working case, opens the correct lib:<br></div><div>moskewcz@mari:/etc/ld.so.conf.d$ LD_LIBRARY_PATH=/usr/lib/nvidia-375 strace glxinfo 2>&1 | grep GLX_ind<br>open("/usr/lib/nvidia-375/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/usr/lib/nvidia-375/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = 4<br><br></div><div># non-working case, fails to open libGLX_indirect.so:<br></div><div>moskewcz@mari:/etc/ld.so.conf.d$ strace glxinfo 2>&1 | grep GLX_ind<br>open("/lib/x86_64-linux-gnu/tls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/lib/x86_64-linux-gnu/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/lib/x86_64-linux-gnu/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/lib/x86_64-linux-gnu/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/usr/lib/x86_64-linux-gnu/tls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/usr/lib/x86_64-linux-gnu/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/usr/lib/x86_64-linux-gnu/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/lib/tls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/lib/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/lib/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/lib/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/usr/lib/tls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/usr/lib/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br>open("/usr/lib/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)<br></div><div>[...snip many more repeats of failed-to-load libGLX_indirect...]<br></div><div><br><br></div>however, it's not clear why, under x2go, the nvidia code isn't searching in /usr/lib/nvidia-375 -- but it's not clear what code it uses for the DL loading, maybe it is somewhere in the glvnd code.<br><br></div>mwm<br></div>