Package: x2goclient 

Version: 4.0.1.0 


Note: I'm running a debug build from 4.0.1.0 sources, linked against Qt debug libs.

When shutting down a connection (e.g. by closing the x2goclient window), the debug build of Qt gives two diagnostics when two SshMasterConnection objects are destructed:

ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 27050c0. Receiver '' (of type 'SshMasterConnection') was created in thread 5d7500", file kernel\qcoreapplication.cpp, line 532
ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 27050c0. Receiver '' (of type 'SshMasterConnection') was created in thread 5d7500", file kernel\qcoreapplication.cpp, line 532

Thread 5d7500 is the main thread.

Ignoring the assert messagebox sometimes results in a GP fault. Most of the time the app exits cleanly. I'm not getting the fault at the moment, so I don't have a callstack for you.

The callstack from the diagnostic is as follows:

  QtCored4.dll!qt_message_output
  QtCored4.dll!qt_message
  QtCored4.dll!qFatal
  QtCored4.dll!qt_assert_x
  QtCored4.dll!QCoreApplicationPrivate::checkReceiverThread
  QtGuid4.dll!QApplication::notify  Line 3845 C++
  QtCored4.dll!QCoreApplication::notifyInternal Line 946 + 0x15 bytes C++
  QtCored4.dll!QCoreApplication::sendEvent Line 231 + 0x39 bytes C++
  QtCored4.dll!QObjectPrivate::setParent_helper  Line 1933 + 0x10 bytes C++
  QtCored4.dll!QObject::~QObject()  Line 939 C++
  QtCored4.dll!QThread::~QThread()  Line 455 + 0xf bytes C++
> x2goclient.exe!SshMasterConnection::~SshMasterConnection()  Line 552 + 0x171 bytes C++
  x2goclient.exe!SshMasterConnection::`scalar deleting destructor'()  + 0xf bytes C++
  x2goclient.exe!SshMasterConnection::channelLoop()  Line 1004 + 0x47 bytes C++
           for ( int i=reverseTunnelConnections.size()-1; i>=0; --i)
            {
 ***               delete reverseTunnelConnections[i];
            }
  x2goclient.exe!SshMasterConnection::run()  Line 526 C++
  QtCored4.dll!QThreadPrivate::start(void * arg=0x01164d08)  Line 348 C++
  msvcr100d.dll!__beginthreadex()  + 0x243 bytes
  msvcr100d.dll!__beginthreadex()  + 0x1d4 bytes
  kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes
  ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes
  ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes


Thank you,
Gary Kratkin