Subject: Bug#1292: Windows client crashes in QObject::killTimers trying to connect with Pageant

From: x2go user <[email-masked]>
Date: Mon, 30 Apr 2018 17:27:37 -0500

Package: x2goclient
Version: 4.1.1.1

When trying to connect with auto-login using Pageant on Windows, the client starts to connect and then crashes.  The crash happens before anything shows in the event log UI; the debug log is below.  It seems like the relevant log line is:

    QObject::killTimers: timers cannot be stopped from another thread

It does not crash using normal password auth or public key auth with a private key file.  It crashes with both the included 32-bit pageant and the 64-bit pageant from the PuTTY distribution.  PuTTY connects fine using the same pageant and host.

This client is Windows 10 version 1703 (build 15063.1029) 64-bit.
The server is RedHat 7.3 64-bit, OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Server versions:
x2goagent: 3.5.0.32
x2goserver: 4.0.1.20
x2goserver-extensions: 4.0.1.20
x2goserver-xsession: 4.0.1.20

--------------------------------------
debug log
--------------------------------------

x2go-INFO-1> "Starting X2Go Client 4.1.1.1..."
x2go-WARNING-1> English language requested, not loading translator.
x2go-WARNING-1> English language requested, not loading translator.
x2go-DEBUG-../src/onmainwindow.cpp:1380> Removing apps from tray
x2go-DEBUG-../src/onmainwindow.cpp:1348> Plugging apps in tray.
x2go-DEBUG-../src/onmainwindow.cpp:10589> Getting X.Org Server settings.
x2go-INFO-3> "Started X2Go Client."
x2go-DEBUG-../src/onmainwindow.cpp:583> "$HOME=C:/Users/user"
x2go-DEBUG-../src/onmainwindow.cpp:2420> Reading 2 sessions from config file.
x2go-DEBUG-../src/sessionbutton.cpp:342> Creating QPixmap with session icon: ":/img/icons/128x128/x2gosession.png".
x2go-DEBUG-../src/sessionbutton.cpp:342> Creating QPixmap with session icon: ":/img/icons/128x128/x2gosession.png".
x2go-DEBUG-../src/onmainwindow.cpp:13086> libssh not initialized yet. Initializing.
x2go-DEBUG-../src/onmainwindow.cpp:6934> Not starting PulseAudio
x2go-DEBUG-../src/onmainwindow.cpp:10492> Starting helper servers for Windows ...
x2go-DEBUG-../src/onmainwindow.cpp:10659> "/cygdrive/C/Users/user/.x2go/var" cygwin var path
x2go-DEBUG-../src/onmainwindow.cpp:10742> "C:/Users/user/.x2go/etc/sshd_config created."
x2go-DEBUG-../src/onmainwindow.cpp:10252> Resolved localhost.
x2go-DEBUG-../src/onmainwindow.cpp:10274> Port is free: 7022
x2go-DEBUG-../src/onmainwindow.cpp:11092> Logging cygwin sshd to: "C:/Users/user/.x2go/sshLogs/Hp1108.log"
x2go-DEBUG-../src/onmainwindow.cpp:11106> Creating desktop: x2go_user
x2go-DEBUG-../src/onmainwindow.cpp:10252> Resolved localhost.
x2go-DEBUG-../src/onmainwindow.cpp:10280> Port already in use: 7022
x2go-DEBUG-../src/onmainwindow.cpp:10252> Resolved localhost.
x2go-DEBUG-../src/onmainwindow.cpp:10280> Port already in use: 7022
x2go-DEBUG-../src/onmainwindow.cpp:11203> User mode OpenSSH server started successfully.
x2go-DEBUG-../src/onmainwindow.cpp:2906> Creating QPixmap with session icon: '":/img/icons/128x128/x2gosession.png"'.
x2go-DEBUG-../src/onmainwindow.cpp:2973> Starting session via Smart Card, SSH Agent or Kerberos token.
x2go-DEBUG-../src/onmainwindow.cpp:1380> Removing apps from tray
x2go-INFO-8> "Starting connection to server: 10.0.0.67:22"
x2go-DEBUG-../src/onmainwindow.cpp:3007> Starting new ssh connection to server:"10.0.0.67":"22" krbLogin: false
x2go-DEBUG-../src/sshmasterconnection.cpp:175> SshMasterConnection, host "10.0.0.67"; port 22; user "user"; useproxy false; proxyserver ""; proxyport 22
x2go-DEBUG-../src/sshmasterconnection.cpp:248> Starting SSH connection without Kerberos authentication.
x2go-DEBUG-../src/sshmasterconnection.cpp:252> SshMasterConnection, instance SshMasterConnection(0x3c131f8)  created. 
x2go-DEBUG-../src/sshmasterconnection.cpp:520> SshMasterConnection, instance SshMasterConnection(0x3c131f8)  entering thread. 
x2go-DEBUG-../src/sshmasterconnection.cpp:592> Setting SSH directory to C:/Users/user/ssh
x2go-DEBUG-../src/sshmasterconnection.cpp:840> Session port before config file parse: 22
x2go-DEBUG-../src/sshmasterconnection.cpp:850> Session port after config file parse: 22
x2go-DEBUG-../src/sshmasterconnection.cpp:915> Session port before config file parse (part 2): 22
x2go-DEBUG-../src/sshmasterconnection.cpp:925> Session port after config file parse (part 2): 22
x2go-DEBUG-../src/sshmasterconnection.cpp:950> cserverAuth
x2go-DEBUG-../src/sshmasterconnection.cpp:991> state: 1

x2go-DEBUG-../src/sshmasterconnection.cpp:711> Setting SSH directory to C:/Users/user/ssh
QObject::killTimers: timers cannot be stopped from another thread

-------------------------------------------
sshd log
-------------------------------------------

debug1: Bind to port 7022 on ::.
Server listening on :: port 7022.
debug1: Bind to port 7022 on 0.0.0.0.
Server listening on 0.0.0.0 port 7022.
debug1: fd 6 clearing O_NONBLOCK
debug1: Forked child 4216.
debug1: rexec start in 6 out 6 newsock 6 pipe 8 sock 9
debug1: fd 6 clearing O_NONBLOCK
debug1: Forked child 1832.
debug1: rexec start in 6 out 6 newsock 6 pipe 9 sock 10
debug1: inetd sockets after dupping: 5, 5
Connection from 127.0.0.1 port 62967 on 127.0.0.1 port 7022
Did not receive identification string from 127.0.0.1
debug1: inetd sockets after dupping: 5, 5
Connection from 127.0.0.1 port 62968 on 127.0.0.1 port 7022
Did not receive identification string from 127.0.0.1