From moskewcz@gmail.com Thu May 11 21:15:13 2017 Received: (at 1094) by bugs.x2go.org; 11 May 2017 19:15:14 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on ymir.das-netzwerkteam.de X-Spam-Level: * X-Spam-Status: No, score=1.2 required=3.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RCVD_IN_SORBS_SPAM autolearn=no autolearn_force=no version=3.4.1 Received: from localhost (localhost [127.0.0.1]) by ymir.das-netzwerkteam.de (Postfix) with ESMTP id DF53A5DAD2 for <1094@bugs.x2go.org>; Thu, 11 May 2017 21:15:12 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de Received: from ymir.das-netzwerkteam.de ([127.0.0.1]) by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id REUNPkrQF3td for <1094@bugs.x2go.org>; Thu, 11 May 2017 21:15:06 +0200 (CEST) Received: from mail-it0-f44.google.com (mail-it0-f44.google.com [209.85.214.44]) by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id 839E45DA4D for <1094@bugs.x2go.org>; Thu, 11 May 2017 21:15:05 +0200 (CEST) Received: by mail-it0-f44.google.com with SMTP id e65so25691661ita.1 for <1094@bugs.x2go.org>; Thu, 11 May 2017 12:15:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=vW/b3z0nEec+3BCij4cBE9pw9uKvNL8IxkMgfZykk0c=; b=nNgc3Rxdg8YD4xBi/+so+XHddYudWEz7OFYswrGoOYEo80B8X5WSizMKfwbK5Rri2p nMdeh9BcmiSvHt9bRfK3LcyG1v6bMuC9Bhmiq5iTm/Xc8bmY9y7w5fNfGilyyuJKnBJw DbxIbG+436yFeYP+A3B9st7m3W0tttKffy/uXQCA3g37zjYqr5I/sGmMaQgCvpXJP2es 0KPW1sSswwFBnawnT+TPiOBuiMPnT8JIuIxAjPH8r0u1F0/sDbaMgF0m0pv3TxH/D7/U qYAOgA8TESzP+3h9zEKR/cMMoVcIkVG5h3eg4T1PYUXUFkJIgM4QHvf2lTqQfHC+I9we R4SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=vW/b3z0nEec+3BCij4cBE9pw9uKvNL8IxkMgfZykk0c=; b=I+Wut6B8oQFFt7AJk0lnCtkNfPcNqRYWGbmr2toXHCH1O9rOEYSTZ4EqJy2mlLX2Ez BIj4tvhYqqO/sarBWtsLfdPBaBMoviqvwE6rOXLNo0SSCjz5WFRQPAmuIppM2w8CGckJ 3Olk+MbVu97S1L0Llt5bgDXDqtCIaDzA4O8PU0ZXfe8Y6864LNpA5QuTM651eoo7/ctR iFMTrRYrfQEr3kh/NjtkLosLbAF3Dvc5uCBMyLyTkE7ec7cNseAWt/f2auyVLtmoZ5Qb G/VFTu8fpmtiHM9gMFzSbyGYKenPboiZ2U3LE7kHbCwwqYHddQTNJVW5L+oxXv14xQNU xTug== X-Gm-Message-State: AODbwcAyzQI2ZZEOm37Z0CGsZFepAWNMQ+af415Wh9S9kKpGxMLQ7QWp HJpbj3aj5IiJSvR+AiPymo/t1/2nVBNS X-Received: by 10.36.26.20 with SMTP id 20mr415532iti.39.1494530104034; Thu, 11 May 2017 12:15:04 -0700 (PDT) MIME-Version: 1.0 Received: by 10.50.92.70 with HTTP; Thu, 11 May 2017 12:15:03 -0700 (PDT) From: Matthew Moskewicz Date: Thu, 11 May 2017 12:15:03 -0700 Message-ID: Subject: When connected to a x2go server that has nVidia's binary drivers most software will segfault. To: 1094@bugs.x2go.org Content-Type: multipart/alternative; boundary="001a11446798f5481a054f4467f5" --001a11446798f5481a054f4467f5 Content-Type: text/plain; charset="UTF-8" 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. 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: https://github.com/NVIDIA/libglvnd 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: moskewcz@mari:/etc/ld.so.conf.d$ ldd /usr/bin/glxinfo linux-vdso.so.1 => (0x00007ffe4779c000) libGL.so.1 => /usr/lib/nvidia-375/libGL.so.1 (0x00007fcd87f35000) libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fcd87bfb000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcd87831000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fcd8762d000) libGLX.so.0 => /usr/lib/nvidia-375/libGLX.so.0 (0x00007fcd873fd000) ... the paths are set here: moskewcz@mari:/etc/ld.so.conf.d$ cat /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf /usr/lib/nvidia-375 /usr/lib32/nvidia-375 using strace, we can see the difference that setting LD_LIBRARY_PATH makes: # working case, opens the correct lib: moskewcz@mari:/etc/ld.so.conf.d$ LD_LIBRARY_PATH=/usr/lib/nvidia-375 strace glxinfo 2>&1 | grep GLX_ind open("/usr/lib/nvidia-375/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/nvidia-375/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = 4 # non-working case, fails to open libGLX_indirect.so: moskewcz@mari:/etc/ld.so.conf.d$ strace glxinfo 2>&1 | grep GLX_ind open("/lib/x86_64-linux-gnu/tls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/lib/x86_64-linux-gnu/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) 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) open("/usr/lib/x86_64-linux-gnu/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64-linux-gnu/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/lib/tls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/lib/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/lib/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/lib/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) [...snip many more repeats of failed-to-load libGLX_indirect...] 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. mwm --001a11446798f5481a054f4467f5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

i ran into th= is issue on ubuntu 16.04 (64 bit), and i can confirm that both workarounds = (using Nouveau and setting LD_LIBRARY_PATH=3D/usr/lib/nvidia-375 ) fix the = issue.

to add a bit more info, it seems that in the failing ca= se, glxinfo (or presumably the other apps), can't find the GLX_indirect= library that it trys to load dynamically, which has something to glvnd: https://github.com/NVIDIA/= libglvnd

looking at ldd, you can see that glxinfo is findi= ng the GL libraries fine, using the system-set ld.so.conf settings that the= nvidia driver sets up:
moskewcz@mari:/etc/ld.so.conf.d$ ldd /usr/bin/gl= xinfo
=C2=A0=C2=A0=C2=A0 linux-vdso.so.1 =3D>=C2=A0 (0x00007ffe4779c0= 00)
=C2=A0=C2=A0=C2=A0 libGL.so.1 =3D> /usr/lib/nvidia-375/libGL.so.1= (0x00007fcd87f35000)
=C2=A0=C2=A0=C2=A0 libX11.so.6 =3D> /usr/lib/x8= 6_64-linux-gnu/libX11.so.6 (0x00007fcd87bfb000)
=C2=A0=C2=A0=C2=A0 libc.= so.6 =3D> /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcd87831000)
=C2=A0= =C2=A0=C2=A0 libdl.so.2 =3D> /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc= d8762d000)
=C2=A0=C2=A0=C2=A0 libGLX.so.0 =3D> /usr/lib/nvidia-375/li= bGLX.so.0 (0x00007fcd873fd000)
...

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
/usr/lib/nvidia-375
/usr/lib32/nvidia-375

usin= g strace, we can see the difference that setting LD_LIBRARY_PATH makes:
=
# working case, opens the correct lib:
moskewc= z@mari:/etc/ld.so.conf.d$ LD_LIBRARY_PATH=3D/usr/lib/nvidia-375 strace glxi= nfo 2>&1 | grep GLX_ind
open("/usr/lib/nvidia-375/tls/libGLX= _indirect.so.0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or di= rectory)
open("/usr/lib/nvidia-375/libGLX_indirect.so.0", O_RD= ONLY|O_CLOEXEC) =3D 4

# non-working case, fails to open l= ibGLX_indirect.so:
moskewcz@mari:/etc/ld.so.conf.d$ strace gl= xinfo 2>&1 | grep GLX_ind
open("/lib/x86_64-linux-gnu/tls/x8= 6_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such= file or directory)
open("/lib/x86_64-linux-gnu/tls/libGLX_indirect= .so.0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)<= br>open("/lib/x86_64-linux-gnu/x86_64/libGLX_indirect.so.0", O_RD= ONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)
open("/li= b/x86_64-linux-gnu/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) =3D -1 E= NOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/t= ls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No= such file or directory)
open("/usr/lib/x86_64-linux-gnu/tls/libGLX= _indirect.so.0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or di= rectory)
open("/usr/lib/x86_64-linux-gnu/x86_64/libGLX_indirect.so.= 0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)
o= pen("/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0", O_RDONLY|O_= CLOEXEC) =3D -1 ENOENT (No such file or directory)
open("/lib/tls/x= 86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No suc= h file or directory)
open("/lib/tls/libGLX_indirect.so.0", O_R= DONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)
open("/l= ib/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No= such file or directory)
open("/lib/libGLX_indirect.so.0", O_R= DONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)
open("/u= sr/lib/tls/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXEC) =3D -1 EN= OENT (No such file or directory)
open("/usr/lib/tls/libGLX_indirect= .so.0", O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)<= br>open("/usr/lib/x86_64/libGLX_indirect.so.0", O_RDONLY|O_CLOEXE= C) =3D -1 ENOENT (No such file or directory)
[...snip many mo= re repeats of failed-to-load libGLX_indirect...]


however, it's not clear why, under x2go, the nvidia code isn't se= arching 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.

m= wm
--001a11446798f5481a054f4467f5--