On Thu, Jun 08, 2006 at 03:23:17PM +0200, Georg Baum wrote:
> I don't know what exactly happens. Here is a backtrace:
> 
> #0  0x406d3426 in QObject::QObject () from /usr/lib/libQtCore.so.4
> #1  0x404beb56 in QInputContext::QInputContext ()
> from /usr/lib/libQtGui.so.4
> #2  0x404bff93 in QXIMInputContext::QXIMInputContext ()
> from /usr/lib/libQtGui.so.4
> #3  0x404be10e in QInputContextFactory::create ()
> from /usr/lib/libQtGui.so.4
> #4  0x40151f51 in QApplication::inputContext () from /usr/lib/libQtGui.so.4
> #5  0x401956f6 in QWidget::inputContext () from /usr/lib/libQtGui.so.4
> #6  0x401c010e in QWidget::destroy () from /usr/lib/libQtGui.so.4
> #7  0x401bffcb in QWidget::destroy () from /usr/lib/libQtGui.so.4
> #8  0x401bffcb in QWidget::destroy () from /usr/lib/libQtGui.so.4
> #9  0x401bffcb in QWidget::destroy () from /usr/lib/libQtGui.so.4
> #10 0x40158df5 in QApplication::~QApplication () from /usr/lib/libQtGui.so.4
> #11 0x08375454 in LQApplication::~LQApplication ()
> #12 0x08376bac in boost::checked_delete<LQApplication> ()
> #13 0x083750d7 in boost::scoped_ptr<LQApplication>::~scoped_ptr ()
> #14 0x08374c63 in __tcf_2 ()
> #15 0x40b7fdf0 in exit () from /lib/tls/libc.so.6
> #16 0x08374318 in lyx_gui::exit ()
> #17 0x08166a77 in quitLyX ()
> #18 0x08185023 in LyXFunc::dispatch ()
> #19 0x084525af in lyx::frontend::QLAction::action ()
> #20 0x08452651 in lyx::frontend::QLAction::qt_metacall ()
> #21 0x406d246a in QMetaObject::activate () from /usr/lib/libQtCore.so.4
> #22 0x406d25c7 in QMetaObject::activate () from /usr/lib/libQtCore.so.4
> #23 0x4014d65e in QAction::triggered () from /usr/lib/libQtGui.so.4
> #24 0x4014e639 in QAction::activate () from /usr/lib/libQtGui.so.4
> #25 0x403c4e26 in QMenuPrivate::activateAction ()

So the QApp dies as reaction to the unconditional exit with lots of
other QObjects still living. Most notably:

> from /usr/lib/libQtGui.so.4
> #26 0x403c716a in QMenu::mouseReleaseEvent () from /usr/lib/libQtGui.so.4
> #27 0x4019329e in QWidget::event () from /usr/lib/libQtGui.so.4
> #28 0x403c21c4 in QMenu::event () from /usr/lib/libQtGui.so.4
> #29 0x401520f2 in QApplicationPrivate::notify_helper ()
> from /usr/lib/libQtGui.so.4
> #30 0x40152d8b in QApplication::notify () from /usr/lib/libQtGui.so.4
> #31 0x401a8f10 in QETWidget::translateMouseEvent ()
> from /usr/lib/libQtGui.so.4
> #32 0x401a792a in QApplication::x11ProcessEvent ()
> from /usr/lib/libQtGui.so.4
> #33 0x401b8eb4 in QEventDispatcherX11::processEvents ()
> from /usr/lib/libQtGui.so.4
> #34 0x406c2105 in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
> #35 0x406c2237 in QEventLoop::exec () from /usr/lib/libQtCore.so.4
> #36 0x406c6641 in QCoreApplication::exec () from /usr/lib/libQtCore.so.4
> #37 0x401537b6 in QApplication::exec () from /usr/lib/libQtGui.so.4

this happens within its own event loop.

No good.

[That's btw pretty similar to terminating the event loop by throwing an
exception through it - does this sound familiar?]

As I said: Try to terminate the event loop by a less drastic means.
Schedule some custom event or whatever, but  ::exit() is not the way.

Andre'

Reply via email to