[X2Go-Dev] Bug #759: x2goclient 4.0.5.0 (and 4.0.5.1 preview) frequent ssh commands don't free resources

Mat Martineau mathew.j.martineau at linux.intel.com
Mon Mar 14 17:47:29 CET 2016


Given that the Mac client is leaking 6 SshProcess objects per minute, is 
there a chance bug 759 will get a look before 4.0.5.1?

Thanks,
Mat


On Thu, 18 Feb 2016, Mat Martineau wrote:

>
> I've run in to this problem as well, with these x2go versions:
>
> Client (Mac)
> * x2goclient 4.0.5.0 (OS X 10.9+ build) or 4.0.5.1 preview (December 2015 
> build)
> * OS X 10.11.3
> * XQuartz 2.7.8
>
> Server (Linux)
> * x2goagent: 3.5.0.32
> * x2goserver: 4.0.1.19
> * x2goserver-extensions: 4.0.1.19
> * Fedora 23 (with updates as of 2016-02-17)
>
> Steps to reproduce:
> 1. Run 'x2goclient --debug' and open a session
> 2. Observe frequent xmodmap commands while session is active
> 3. Quit session to see a large number of SshProcess objects freed
>
>
> This came to my attention because the default SELinux/audit settings on 
> Fedora 23 log five events for each xmodmap ssh command executed on the server 
> by the client. That's 1800 events per hour when an x2go session is active.
>
> Judging from ONMainWindow::slotSetModMap() in onmainwindow.cpp, it looks like 
> the intent is to only run the xmodmap command if kbMap is empty (maybe 
> there's an expected way for kbMap to get cleared so it has to be periodically 
> checked?). However, slotSetModMap() runs every 10 seconds and executes a 
> command every time. It's not clear to me how kbMap becomes empty.
>
> Furthermore, the SshProcess objects are not cleaned up until the session is 
> exited. The 'processes' QList in SshMasterConnection grows without bound.
>
> Logs from x2goclient --debug:
>
> """
> x2go-DEBUG-../src/sshprocess.cpp:199> Executing remote command via SshProcess 
> object 6: "export DISPLAY=":50"; echo "keycode   8 = a A aring Aring
> <snip>"
> x2go-DEBUG-../src/sshprocess.cpp:204> Running 
> masterCon->addChannelConnection(this, 
> '"d93c9f1a-2d4d-42fb-92a9-5373621768f6"', '"bash -c 'echo 
> "X2GODATABEGIN:d93c9f1a-2d4d-42fb-92a9-5373621768f6"; export 
> PATH="/usr/local/bin:/usr/bin:/bin"; export DISPLAY=":50"; echo "keycode 8 = 
> a A aring Aring
> keycode   9 = s S ssharp Iacut"');
> x2go-DEBUG-../src/sshmasterconnection.cpp:1284> Locking SSH channel 
> connection MUTEX.
> x2go-DEBUG-../src/sshmasterconnection.cpp:1286> Passing new channel 
> conenction object to channelConnections.
> x2go-DEBUG-../src/sshmasterconnection.cpp:1288> Unlocking SSH channel 
> connection MUTEX.
> x2go-DEBUG-../src/sshmasterconnection.cpp:1476> Creating new channel.
>
> x2go-DEBUG-../src/sshmasterconnection.cpp:1480> New channel:0x7fcb9a7af450
>
> x2go-DEBUG-../src/sshmasterconnection.cpp:1511> Executing remote: "bash -c 
> 'echo "X2GODATABEGIN:d93c9f1a-2d4d-42fb-92a9-5373621768f6"; export 
> PATH="/usr/local/bin:/usr/bin:/bin"; export DISPLAY=":50"; echo "keycode 8 = 
> a A aring Aring
> <snip>"
> x2go-DEBUG-../src/sshmasterconnection.cpp:1534> New exec channel created.
>
> x2go-DEBUG-../src/sshmasterconnection.cpp:1638> EOF on channel 
> 0x7fcb9a7af450; SshProcess object: 6
> x2go-DEBUG-../src/sshmasterconnection.cpp:1706> EOF sent.
> x2go-DEBUG-../src/sshmasterconnection.cpp:1710> Channel closed.
> x2go-DEBUG-../src/sshprocess.cpp:517> SSH finished: raw output (stdout): 
> "X2GODATABEGIN:d93c9f1a-2d4d-42fb-92a9-5373621768f6
> X2GODATAEND:d93c9f1a-2d4d-42fb-92a9-5373621768f6
> "
> x2go-DEBUG-../src/sshprocess.cpp:528> SSH finished: true - "" (6).
> <repeat every 10 seconds>
> """
>
> And the log of SshProcess cleanup when the session is disconnected after a 
> little over one minute:
>
> """
> x2go-DEBUG-../src/sshmasterconnection.cpp:715> SshMasterConnection, instance 
> SshMasterConnection(0x7fcb9cc51a90)  thread finished.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshprocess.cpp:52> SshProcess destructor called.
> x2go-DEBUG-../src/sshmasterconnection.cpp:722> SshMasterConnection, instance 
> SshMasterConnection(0x7fcb9cc51a90)  finished destructor. """
>
> --
> Mat Martineau
> Intel OTC
> _______________________________________________
> x2go-dev mailing list
> x2go-dev at lists.x2go.org
> http://lists.x2go.org/listinfo/x2go-dev
>


More information about the x2go-dev mailing list