I can get the x2goclient firefox plugin to reproducibly crash. This
crash happens once one clicks on the blue X2go splash when the plugin
is loaded.
According to gdb,
(gdb) p stb
$1 = (QToolBar *) 0x0 [or values pointing to unmapped areas]
(gdb) l
10353 void ONMainWindow::slotEmbedToolBarToolTip()
10354 {
10355 if ( !showTbTooltip )
10356 return;
10357 QWidget* widg=stb->widgetForAction (
10358 act_embedToolBar );
10359 QToolTip::showText ( this->mapToGlobal ( QPoint ( 6,6 ) ),
10360 tr ( "<br><b> Click this "
10361 "button <br>"
10362 " to restore toolbar"
(gdb) bt
#0 data (this=0x8) at ../../src/corelib/tools/qscopedpointer.h:135
#1 qGetPtrHelper<QScopedPointer<QObjectData> > (p=...)
at ../../src/corelib/global/qglobal.h:2342
#2 d_func (this=0x0) at widgets/qtoolbar.h:167
#3 QToolBar::widgetForAction (this=0x0, action=0x0)
at widgets/qtoolbar.cpp:1285
#4 0x00007fe1d9ad5c03 in ONMainWindow::slotEmbedToolBarToolTip (this=
0x7fe1d14c6800) at ../onmainwindow.cpp:10358
#5 0x00007fe1d9b554fd in ONMainWindow::qt_metacall (this=0x7fe1d14c6800, _c=
QMetaObject::InvokeMetaMethod, _id=108, _a=0x7fff1d3d0440)
at moc_onmainwindow.cpp:402
#6 0x00007fe1d7c235aa in QMetaObject::activate (sender=0x7fe1d1413200,
m=<optimized out>, local_signal_index=<optimized out>, argv=0x0)
at kernel/qobject.cpp:3287
#7 0x00007fe1d7c2b66f in QSingleShotTimer::timerEvent (this=0x7fe1d1413200)
at kernel/qtimer.cpp:308
#8 0x00007fe1d7c26e89 in QObject::event (this=0x7fe1d1413200,
e=<optimized out>) at kernel/qobject.cpp:1190
#9 0x00007fe1d844fc34 in notify_helper (e=0x7fff1d3d0b00, receiver=
0x7fe1d1413200, this=0x7fe1db3e00b0) at kernel/qapplication.cpp:4481
#10 QApplicationPrivate::notify_helper (this=0x7fe1db3e00b0, receiver=
0x7fe1d1413200, e=0x7fff1d3d0b00) at kernel/qapplication.cpp:4453
#11 0x00007fe1d8454ac1 in QApplication::notify (this=0x7fe1db3a94b0, receiver=
0x7fe1d1413200, e=0x7fff1d3d0b00) at kernel/qapplication.cpp:4360
---Type <return> to continue, or q <return> to quit---q
Quit
I also attempted to valgrind that, and came up with
==19917== Conditional jump or move depends on uninitialised value(s)
==19917== at 0x12237BD8: ONMainWindow::slotEmbedToolBarToolTip() (onmainwindow.cpp:10355)
==19917== by 0x122B74FC: ONMainWindow::qt_metacall(QMetaObject::Call, int, void**) (moc_onmainwindow.cpp:402)
==19917== by 0x1424A5A9: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3287)
==19917== by 0x1425266E: QSingleShotTimer::timerEvent(QTimerEvent*) (qtimer.cpp:308)
==19917== by 0x1424DE88: QObject::event(QEvent*) (qobject.cpp:1190)
==19917== by 0x132C9C33: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4481)
==19917== by 0x132CEAC0: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4360)
==19917== by 0x1423782B: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:787)
==19917== by 0x142643A7: QTimerInfoList::activateTimers() (qcoreapplication.h:215)
==19917== by 0x14261B93: timerSourceDispatch(_GSource*, int (*)(void*), void*) (qeventdispatcher_glib.cpp:184)
==19917== by 0xA3E258C: g_main_context_dispatch (gmain.c:2425)
==19917== by 0xA3E2D87: g_main_context_iterate.isra.21 (gmain.c:3073)
==19917==
So, showTbTooltip seems uninitialized. I added printfs around every
place where showTbTooltip is modified. However, my printfs never made it
to screen (stdout/stderr are connected to a /dev/pts/N), which means
that initWidgetsEmbed was never called.