Subject: ThunderBird crashes in PubApp mode on amd64

From: Stefan Baur <[email-masked]>
Date: Fri, 5 May 2017 16:30:41 +0200

package: nx-libs

Hi,

since Debian Jessie (stable) switched from IceDove back to ThunderBird,
TB crashes when the host is an amd64 machine and X2GoClient is running
in PubApp mode. i386 is unaffected.

It happens with X2GoClient on Windows as well as on Linux, so it's not a
matter of VcXsrv being too old/broken/whatever.

It also happens when all X2Go server components are installed from heuler.

It does NOT happen when you build nx-libs from source using the Debian
Experimental repository.

So there's something in the stable nx-libs that's broken on amd64 only,
and got fixed in the nx-libs version that is available via Debian
Experimental.

Core-Devs, please advise how to fix this - should we dare making a new
nx-libs release and declare it stable, based on what is in Debian
Experimental (arguing that everything is better than what we currently
have)?  Or should we try to hunt down the offending code part and only
patch that?  If the latter, who's willing to take a stab at it?  (We
don't have a business case ATM, as all my TB-PubApp-users are still on
i386, so no funding as of now.)

Kind Regards,
Stefan Baur

-- 
BAUR-ITCS UG (haftungsbeschränkt)
Geschäftsführer: Stefan Baur
Eichenäckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364
Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243

---

From: Walid MOGHRABI <[email-masked]>
Date: Fri, 5 May 2017 17:33:42 +0200 (CEST)

I would recommend disabling GLX by uncommenting this line in /etc/x2go/x2goagent.options :

#X2GO_NXAGENT_DEFAULT_OPTIONS+=" -extension GLX"

GLX is unusable with the current NX-Libs (even Arctica ones) but since the extension is enabled, some components still tries to use H/W acceleration for some parts.
I get far better results (especially stability wise) with this option disabled.

I would even consider disabling it "by default" until a proper GLX support is added to nx-libs.

Regards,
Walid Moghrabi

TRAVAUX.COM
BAT I - PARC CEZANNE 2 290 AVENUE GALILEE - CS 80403
13591 AIX EN PROVENCE CEDEX 3

----- Mail original ----- 

De: "Stefan Baur" <[email-masked]> 
À: [email-masked] 
Cc: "Mihai Moldovan" <[email-masked]>, "Mike Gabriel" <[email-masked]> 
Envoyé: Vendredi 5 Mai 2017 16:30:41 
Objet: [X2Go-Dev] Bug#1172: ThunderBird crashes in PubApp mode on amd64 

package: nx-libs 

Hi, 

Kind Regards, 
Stefan Baur 

_______________________________________________ 
x2go-dev mailing list 
[email-masked] 
http://lists.x2go.org/listinfo/x2go-dev
---
DISCLAIMER: This e-mail is private and confidential and may contain proprietary or legally privileged information. It is for the intended recipient only. If you have received this email in error, please notify the author by replying to it and then destroy it. If you are not the intended recipient you must not use, disclose, distribute, copy, print or rely on this e-mail or any attachment. Thank you

---

From: Stefan Baur <[email-masked]>
Date: Fri, 5 May 2017 18:37:02 +0200

> I get far better results (especially stability wise) with this option disabled.

I don't.  Changing that value doesn't help at all - attempting to start
ThunderBird in PubApp mode still crashes the entire X2Go session on amd64.

Tried restarting the service, even rebooting the server, no change.

-Stefan

---

From: Ulrich Sibiller <[email-masked]>
Date: Fri, 5 May 2017 21:41:47 +0200

> I would even consider disabling it "by default" until a proper GLX support is added to nx-libs.

It is not "unusable". But nx offers an old version of GLX only. And
there seem to be some applications that don't care for the version the
X server (nxagent in this case) reports. So what should we do?

It is possible to implement a newer GLX version but that would need
some investing quite some time. Unfortunately the current nx
development staff does not have that time...

Regarding Thunderbird: does it still crash after setting
gfx.xrender.enabled to true in about:config (respectively user.js)?

Uli

---

From: Ulrich Sibiller <[email-masked]>
Date: Fri, 5 May 2017 22:17:06 +0200

Btw: does Thunderbird work with this workaround?

http://wiki.x2go.org/doku.php/wiki:development:glx-xlib-workaround

---

From: Stefan Baur <[email-masked]>
Date: Sun, 7 May 2017 15:03:28 +0200

> gfx.xrender.enabled to true in about:config (respectively user.js)?

It defaults to true; changing it to false doesn't change the behavior,
so, yes, it (still) crashes.

-Stefan

---

From: Stefan Baur <[email-masked]>
Date: Sun, 7 May 2017 15:59:34 +0200

> http://wiki.x2go.org/doku.php/wiki:development:glx-xlib-workaround

This fails at the "scons libgl-xlib" step:

scons: Reading SConscript files ...
Checking for GCC ...  yes
Checking for Clang ...  no
scons: Found LLVM version 3.5.0
Checking for X11 (x11 xext xdamage xfixes)... yes
Checking for XCB (x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8)... yes
Checking for XF86VIDMODE (xxf86vm)... yes
Checking for DRM (libdrm >= 2.4.38)... yes
Checking for UDEV (libudev >= 151)... yes
scons: done reading SConscript files.
scons: Building targets ...
  Linking build/linux-x86_64-debug/mesa/gen_matypes ...
  Generating build/linux-x86_64-debug/glsl/glcpp/glcpp-parse.c ...
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
scons: *** [build/linux-x86_64-debug/mesa/gen_matypes] Error 1
scons: building terminated because of errors.

-Stefan

-- 
BAUR-ITCS UG (haftungsbeschränkt)
Geschäftsführer: Stefan Baur
Eichenäckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364
Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243Ths fails

---

From: Stefan Baur <[email-masked]>
Date: Sun, 7 May 2017 20:58:52 +0200

> scons: building terminated because of errors.

Turns out you need to install zlib1g-dev and libedit-dev as well.
However, this workaround doesn't help, either.

Thunderbird still crashes, as does "XFCE Terminal" and evince.

-Stefan

---

From: Ulrich Sibiller <[email-masked]>
Date: Mon, 8 May 2017 00:07:45 +0200

> i386, so no funding as of now.)

It is working for me with 3.5.99.7. So we already have fix.

The error message you posted is this:
traps: x2goagent [3339] general protection ip:7f02464e2e6d
sp:7ffef6c22150error:0 in libNX_X11.so.6.2[7f0246496000+123000]

So we have a problem in libNX_X11 which - in 3.5.9.77 - is on the
current xorg upstream level 1.6.5. In nx-libs 3.5.0.32 it is rather
old (about 1.3.3). I am curious if it is sufficient to ONLY copy
libNX_X11.so* from 3.5.99.7 to your crashing installation. If that
helps we could release 3.5.0.33 or 34 with that libX11 exchanged. This
should generally be bit much less risky than just marking 3.5.99 as
stable.

On the other hand: we have fixed lots of security and stability bugs
in 3.5.99.x so using those versions is generally advisable (from my
POV).

You could try to install libNX_X11-dbg and attach gdb to x2goagent
(run "gdb -p $(pidof x2goagent)") just before starting thunderbird.
When it crashes you'll get a backtrace. Using that information we can
(hopefully) see if a quick backport could help. That would be the
least invasive solution.

Comments?

Uli

---

From: Stefan Baur <[email-masked]>
Date: Mon, 8 May 2017 01:53:36 +0200

Am 08.05.2017 um 00:07 schrieb Ulrich Sibiller:

[...]

> should generally be bit much less risky than just marking 3.5.99 as

Copying the single file over actually works.  Though I don't know what
other side effects it may have ...

[...]

> (hopefully) see if a quick backport could help. That would be the

I hope I did this right ... the package name was libnx-x11-6-dbg.

GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 6297
Reading symbols from /usr/lib/nx/bin/nxagent...(no debugging symbols
found)...done.
Reading symbols from /usr/lib/x86_64-linux-gnu/libNX_Xext.so.6...Reading
symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xext.so.6.4...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xext.so.6
Reading symbols from /usr/lib/x86_64-linux-gnu/libNX_X11.so.6...Reading
symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_X11.so.6.2...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_X11.so.6
Reading symbols from /lib/x86_64-linux-gnu/libz.so.1...(no debugging
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libz.so.1
Reading symbols from /lib/x86_64-linux-gnu/libm.so.6...Reading symbols
from /usr/lib/debug//lib/x86_64-linux-gnu/libm-2.19.so...done.
done.
Loaded symbols for /lib/x86_64-linux-gnu/libm.so.6
Reading symbols from /usr/lib/x86_64-linux-gnu/libNX_Xpm.so.4...Reading
symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xpm.so.4.11...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xpm.so.4
Reading symbols from /usr/lib/x86_64-linux-gnu/libXcomp.so.3...(no
debugging symbols found)...done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libXcomp.so.3
Reading symbols from /usr/lib/x86_64-linux-gnu/libXcompext.so.3...(no
debugging symbols found)...done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libXcompext.so.3
Reading symbols from /usr/lib/x86_64-linux-gnu/libXcompshad.so.3...(no
debugging symbols found)...done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libXcompshad.so.3
Reading symbols from
/usr/lib/x86_64-linux-gnu/libNX_Xrender.so.1...Reading symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xrender.so.1.2.2...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xrender.so.1
Reading symbols from
/usr/lib/x86_64-linux-gnu/libNX_Xfixes.so.3...Reading symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xfixes.so.3.0...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xfixes.so.3
Reading symbols from /usr/lib/x86_64-linux-gnu/libNX_Xtst.so.6...Reading
symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xtst.so.6.1...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xtst.so.6
Reading symbols from
/usr/lib/x86_64-linux-gnu/libNX_Xdamage.so.1...Reading symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xdamage.so.1.0...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xdamage.so.1
Reading symbols from
/usr/lib/x86_64-linux-gnu/libNX_Xrandr.so.2...Reading symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xrandr.so.2.0...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xrandr.so.2
Reading symbols from
/usr/lib/x86_64-linux-gnu/libNX_Xcomposite.so.1...Reading symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xcomposite.so.1.0...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xcomposite.so.1
Reading symbols from
/usr/lib/x86_64-linux-gnu/libNX_Xinerama.so.1...Reading symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xinerama.so.1.0...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xinerama.so.1
Reading symbols from
/usr/lib/x86_64-linux-gnu/libNX_Xdmcp.so.6...Reading symbols from
/usr/lib/debug//usr/lib/x86_64-linux-gnu/libNX_Xdmcp.so.6.0...done.
done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libNX_Xdmcp.so.6
Reading symbols from /usr/lib/x86_64-linux-gnu/libxml2.so.2...(no
debugging symbols found)...done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libxml2.so.2
Reading symbols from /lib/x86_64-linux-gnu/libc.so.6...Reading symbols
from /usr/lib/debug//lib/x86_64-linux-gnu/libc-2.19.so...done.
done.
Loaded symbols for /lib/x86_64-linux-gnu/libc.so.6
Reading symbols from /lib/x86_64-linux-gnu/libdl.so.2...Reading symbols
from /usr/lib/debug//lib/x86_64-linux-gnu/libdl-2.19.so...done.
done.
Loaded symbols for /lib/x86_64-linux-gnu/libdl.so.2
Reading symbols from /lib/x86_64-linux-gnu/libpng12.so.0...(no debugging
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libpng12.so.0
Reading symbols from /usr/lib/x86_64-linux-gnu/libjpeg.so.62...(no
debugging symbols found)...done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libjpeg.so.62
Reading symbols from /usr/lib/x86_64-linux-gnu/libstdc++.so.6...(no
debugging symbols found)...done.
Loaded symbols for /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Reading symbols from /lib/x86_64-linux-gnu/libgcc_s.so.1...(no debugging
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libgcc_s.so.1
Reading symbols from /lib/x86_64-linux-gnu/liblzma.so.5...(no debugging
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/liblzma.so.5
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from
/usr/lib/debug//lib/x86_64-linux-gnu/ld-2.19.so...done.
done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib/x86_64-linux-gnu/libnss_files.so.2...Reading
symbols from
/usr/lib/debug//lib/x86_64-linux-gnu/libnss_files-2.19.so...done.
done.
Loaded symbols for /lib/x86_64-linux-gnu/libnss_files.so.2
0x00007f664a88b873 in __select_nocancel () at
../sysdeps/unix/syscall-template.S:81
81      ../sysdeps/unix/syscall-template.S: No such file or directory.
(gdb) s
0x00007f664c34d969 in NXTransSelect () from
/usr/lib/x86_64-linux-gnu/libXcomp.so.3
(gdb) s
Single stepping until exit from function NXTransSelect,
which has no line number information.
_XSelect (maxfds=<optimized out>, readfds=0xbbc880,
writefds=0x7ffc44d17650, exceptfds=<optimized out>,
timeout=0x7ffc44d17790) at XlibInt.c:335
335     XlibInt.c: No such file or directory.
(gdb) s
337     in XlibInt.c
(gdb) s
__GI___errno_location () at errno-loc.c:26
26      errno-loc.c: No such file or directory.
(gdb) s
27      in errno-loc.c
(gdb) s
_XSelect (maxfds=<optimized out>, readfds=0xbbc880,
writefds=0x7ffc44d17650, exceptfds=<optimized out>,
timeout=0x7ffc44d17790) at XlibInt.c:339
339     XlibInt.c: No such file or directory.
(gdb) s
350     in XlibInt.c
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
_XData32 (dpy=dpy@entry=0x2539060, data=<optimized out>,
data@entry=0x7f66477bcff4, len=101652, len@entry=109812) at XlibInt.c:3792
3792    in XlibInt.c
(gdb) s

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb) quit

-Stefan

---

From: Ulrich Sibiller <[email-masked]>
Date: Mon, 8 May 2017 07:44:50 +0200

> other side effects it may have ...

Not too much, since there's no change in functionality AFAICS.
Good to know that this helps. So this could serve as a quick workaround.

> I hope I did this right ... the package name was libnx-x11-6-dbg.

Yes, but to get better output please install all other dbg packages
from here, too:

http://packages.x2go.org/debian/pool/main/n/nx-libs/

There a doc regarding automaitc debug package installation here:
https://wiki.debian.org/HowToGetABacktrace#Installing_the_debugging_symbols

> data@entry=0x7f66477bcff4, len=101652, len@entry=109812) at XlibInt.c:3792

At this stage you should run bt (backtrace) so we can see the calls
leading to this. There's no need to do single steps.

To see better output including the line where it crashed you could
also recompile the package as described in
https://wiki.debian.org/HowToGetABacktrace#Rebuilding_the_package_you.2BIBk-re_debugging

Uli

---

From: Stefan Baur <[email-masked]>
Date: Mon, 8 May 2017 19:28:19 +0200

> https://wiki.debian.org/HowToGetABacktrace#Rebuilding_the_package_you.2BIBk-re_debugging

Sorry, but this is way over my head and out of my comfort zone.  Would
it help if I granted you access to a freshly installed test system?

Kind Regards,
Stefan Baur

---

From: Ulrich Sibiller <[email-masked]>
Date: Mon, 8 May 2017 19:32:10 +0200

> it help if I granted you access to a freshly installed test system?

Really? The doc describes every step...

Yes, I can have a look.  ;-)

Uli

---

From: Ulrich Sibiller <[email-masked]>
Date: Tue, 9 May 2017 01:36:45 +0200

I have tried that on my debian jessie machine. Thunderbird indeed
crashed the session. The backtrace is this:

Program received signal SIGSEGV, Segmentation fault.
_XData32 (dpy=dpy@entry=0x19b8680, data=<optimized out>,
data@entry=0x20b26e4, len=93460, len@entry=109812) at XlibInt.c:3792
3792 XlibInt.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt full
#0  _XData32 (dpy=dpy@entry=0x19b8680, data=<optimized out>,
data@entry=0x20b26e4, len=93460, len@entry=109812) at XlibInt.c:3792
        buf = <optimized out>
        i = <optimized out>
#1  0x00007ff7d90c6ce1 in XChangeProperty (dpy=0x19b8680, w=<optimized
out>, property=<optimized out>, type=6, format=<optimized out>,
    mode=<optimized out>, data=0x20b26e4 "", nelements=27453) at ChProp.c:85
        req = 0x19c6548
        len = 109812
#2  0x00000000004b20b7 in nxagentExportProperty (pWin=0x20,
property=27453, type=34285284, format=0, mode=0, nUnits=27453,
value=0x2072700)
    at Rootless.c:763
        n = 27453
        propertyX = 4
        typeX = 34285284
        propHints = {flags = 0, input = 32, initialState = 33142432,
iconPixmap = 4333663, iconWindow = 6, iconX = 140702462200332,
          iconY = 18014767901107996, iconMask = 4927218, windowGroup = 0}
        export = 4088
        freeMem = 33142432
#3  0x000000000042238a in ProcChangeProperty (client=0xff7) at
X/NXproperty.c:331
        pWin = 0x1f9b6a0
        len = 92982
        totalSize = 4088
        err = 4088
        stuff = 0x1fbcd24
#4  0x000000000042f002 in Dispatch () at X/NXdispatch.c:748
        clientReady = 0x7ffe2b5ee710
        result = <optimized out>
        client = 0x1edf360
        nready = 0
        icheck = 0xbb9d00 <checkForInput>
        start_tick = 20
        currentDispatch = <optimized out>
#5  0x000000000040da0f in main (argc=15, argv=0x7ffe2b5eecc8,
envp=<optimized out>) at main.c:450
        i = <optimized out>
        j = 2
        k = 2
        error = 32766
        xauthfile = <optimized out>
        alwaysCheckForInput = {0, 1}

Which needs further investigation.

Uli

On Mon, May 8, 2017 at 7:32 PM, Ulrich Sibiller <[email-masked]> wrote:
> https://lists.x2go.org/listinfo/x2go-dev

---

From: Ulrich Sibiller <[email-masked]>
Date: Tue, 9 May 2017 21:33:11 +0200

> data@entry=0x20b26e4, len=93460, len@entry=109812) at XlibInt.c:3792

[..]

> Which needs further investigation.

Problem identified: It's the BIG-REQUESTS extension. We have disabled
that in nx 3.5.99 because it is buggy. Add

X2GO_NXAGENT_DEFAULT_OPTIONS+=" -extension BIG-REQUESTS"

to /etc/x2goagent.options and thunderbird works.

IMHO we never had a working version of BIG-REQUESTS. So it is probably
a good idea and I am wondering why it is active in 3.5.0.32 at all.

Uli

---

From: Ulrich Sibiller <[email-masked]>
Date: Tue, 9 May 2017 22:12:00 +0200

> a good idea and I am wondering why it is active in 3.5.0.32 at all.

Forget that. We have BIG-REQUESTS in 3.5.99 and it is working. So
disabling BIG-REQUESTS is just a workaround.

As replacing libNX_X11.so with the 3.5.99 version is sufficient to
make the error go away I suppose one of the many fixes that came in
through updating libNX_X11 to current Xorg upstream libX11 is the
solution. But as there are so many it's difficult to identify the
right one(s)...

We could try to find the libNX_X11 version where it started to work.

Uli