[Gambas-user] leaving .ShowDialog() via an exception can crash Qt

Ian Haywood ihaywood at ...1979...
Sun Jun 9 07:02:09 CEST 2013


this is a contrived example in which Window.ShowDialog generates an
exception which is then caught by the calling code, this in turn makes
Qt crash with signal 11
I enclose the gdb stacktrace.

In my program I fixed it by catching and managing the error inside the
form on which ShowModal is called, so ShowDialog returns an integer to
signify the error condition, not an exception.

Not sure whether this is worth fixing as it is admittedly a bizarre
way of dealing with errors: would be good if it can be a gambas error
instead of a signal 11
at least a warning in the docs that dialog boxes must manage their own
exceptions

Ian

(gdb) run
Starting program: /usr/bin/gbx3 ""
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
QCoreApplication::exec: The event loop is already running

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4aead54 in QEventLoop::exit(int) () from
/usr/lib/x86_64-linux-gnu/libQtCore.so.4
(gdb) bt
#0  0x00007ffff4aead54 in QEventLoop::exit(int) () from
/usr/lib/x86_64-linux-gnu/libQtCore.so.4
#1  0x00007ffff5db13ac in ?? () from /usr/lib/gambas3/gb.qt4.so
#2  0x00007ffff505f4ee in QWidget::event(QEvent*) () from
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#3  0x00007ffff500e894 in QApplicationPrivate::notify_helper(QObject*,
QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#4  0x00007ffff5013713 in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#5  0x00007ffff4aebe9c in QCoreApplication::notifyInternal(QObject*,
QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#6  0x00007ffff505924d in
QWidgetPrivate::close_helper(QWidgetPrivate::CloseMode) () from
/usr/lib/x86_64-linux-gnu/libQtGui.so.4
#7  0x00007ffff5dafb2f in ?? () from /usr/lib/gambas3/gb.qt4.so
#8  0x00007ffff5db1293 in ?? () from /usr/lib/gambas3/gb.qt4.so
#9  0x00007ffff5da65fc in ?? () from /usr/lib/gambas3/gb.qt4.so
#10 0x00007ffff5da7048 in ?? () from /usr/lib/gambas3/gb.qt4.so
#11 0x00000000004047eb in ?? ()
#12 0x00007ffff711776d in __libc_start_main (main=0x404189, argc=2,
ubp_av=0x7fffffffe2d8, init=<optimised out>, fini=<optimised out>,
rtld_fini=<optimised out>,
    stack_end=0x7fffffffe2c8) at libc-start.c:226
#13 0x00000000004048e9 in ?? ()
#14 0x00007fffffffe2c8 in ?? ()
#15 0x000000000000001c in ?? ()
#16 0x0000000000000002 in ?? ()
#17 0x0000000000665e50 in ?? ()
#18 0x00007fffffffe585 in ?? ()
#19 0x0000000000000000 in ?? ()
(gdb) quit
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test-qt-crash-0.0.1.tar.gz
Type: application/x-gzip
Size: 5011 bytes
Desc: not available
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20130609/fd635f91/attachment.bin>


More information about the User mailing list