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 <moskewcz@gmail.com>
Date: Thu, 11 May 2017 12:15:03 -0700
Message-ID: <CAP_1Qv=DQmr_=XtwVa1LymXMsm4Twm231hXv0rY-FkKhwRRsxA@mail.gmail.com>
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

<div dir=3D"ltr"><div><div><div><div><div><div><div><br></div>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.<br><br></div>to add a bit more info, it seems that in the failing ca=
se, glxinfo (or presumably the other apps), can&#39;t find the GLX_indirect=
 library that it trys to load dynamically, which has something to glvnd: <b=
r><a href=3D"https://github.com/NVIDIA/libglvnd">https://github.com/NVIDIA/=
libglvnd</a><br><br></div>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:<br>moskewcz@mari:/etc/ld.so.conf.d$ ldd /usr/bin/gl=
xinfo<br>=C2=A0=C2=A0=C2=A0 linux-vdso.so.1 =3D&gt;=C2=A0 (0x00007ffe4779c0=
00)<br>=C2=A0=C2=A0=C2=A0 libGL.so.1 =3D&gt; /usr/lib/nvidia-375/libGL.so.1=
 (0x00007fcd87f35000)<br>=C2=A0=C2=A0=C2=A0 libX11.so.6 =3D&gt; /usr/lib/x8=
6_64-linux-gnu/libX11.so.6 (0x00007fcd87bfb000)<br>=C2=A0=C2=A0=C2=A0 libc.=
so.6 =3D&gt; /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcd87831000)<br>=C2=A0=
=C2=A0=C2=A0 libdl.so.2 =3D&gt; /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc=
d8762d000)<br>=C2=A0=C2=A0=C2=A0 libGLX.so.0 =3D&gt; /usr/lib/nvidia-375/li=
bGLX.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>usin=
g 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>moskewc=
z@mari:/etc/ld.so.conf.d$ LD_LIBRARY_PATH=3D/usr/lib/nvidia-375 strace glxi=
nfo 2&gt;&amp;1 | grep GLX_ind<br>open(&quot;/usr/lib/nvidia-375/tls/libGLX=
_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or di=
rectory)<br>open(&quot;/usr/lib/nvidia-375/libGLX_indirect.so.0&quot;, O_RD=
ONLY|O_CLOEXEC) =3D 4<br><br></div><div># non-working case, fails to open l=
ibGLX_indirect.so:<br></div><div>moskewcz@mari:/etc/ld.so.conf.d$ strace gl=
xinfo 2&gt;&amp;1 | grep GLX_ind<br>open(&quot;/lib/x86_64-linux-gnu/tls/x8=
6_64/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such=
 file or directory)<br>open(&quot;/lib/x86_64-linux-gnu/tls/libGLX_indirect=
.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)<=
br>open(&quot;/lib/x86_64-linux-gnu/x86_64/libGLX_indirect.so.0&quot;, O_RD=
ONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)<br>open(&quot;/li=
b/x86_64-linux-gnu/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 E=
NOENT (No such file or directory)<br>open(&quot;/usr/lib/x86_64-linux-gnu/t=
ls/x86_64/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No=
 such file or directory)<br>open(&quot;/usr/lib/x86_64-linux-gnu/tls/libGLX=
_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or di=
rectory)<br>open(&quot;/usr/lib/x86_64-linux-gnu/x86_64/libGLX_indirect.so.=
0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)<br>o=
pen(&quot;/usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0&quot;, O_RDONLY|O_=
CLOEXEC) =3D -1 ENOENT (No such file or directory)<br>open(&quot;/lib/tls/x=
86_64/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No suc=
h file or directory)<br>open(&quot;/lib/tls/libGLX_indirect.so.0&quot;, O_R=
DONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)<br>open(&quot;/l=
ib/x86_64/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No=
 such file or directory)<br>open(&quot;/lib/libGLX_indirect.so.0&quot;, O_R=
DONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)<br>open(&quot;/u=
sr/lib/tls/x86_64/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 EN=
OENT (No such file or directory)<br>open(&quot;/usr/lib/tls/libGLX_indirect=
.so.0&quot;, O_RDONLY|O_CLOEXEC) =3D -1 ENOENT (No such file or directory)<=
br>open(&quot;/usr/lib/x86_64/libGLX_indirect.so.0&quot;, O_RDONLY|O_CLOEXE=
C) =3D -1 ENOENT (No such file or directory)<br></div><div>[...snip many mo=
re repeats of failed-to-load libGLX_indirect...]<br></div><div><br><br></di=
v>however, it&#39;s not clear why, under x2go, the nvidia code isn&#39;t se=
arching in /usr/lib/nvidia-375 -- but it&#39;s not clear what code it uses =
for the DL loading, maybe it is somewhere in the glvnd code.<br><br></div>m=
wm<br></div>

--001a11446798f5481a054f4467f5--

