View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0012630 | Scribus | General | public | 2014-08-23 22:06 | 2014-08-31 18:22 |
Reporter | FirasH | Assigned To | jghali | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.5.0svn | ||||
Target Version | 1.5.0 | Fixed in Version | 1.5.0svn | ||
Summary | 0012630: [PATCH] Pressing "Esc" while item specific window is opened crashes Scribus | ||||
Description | Pressing "Esc" while item specific window is opened crashes Scribus. Reproduced on FreeBSD and Linux. | ||||
Steps To Reproduce | 0) Create a new document 1) Insert one of those items: Polygon/Arc/Spiral 2) Double-click on the item 3) Select the window that appears 4) Press "Esc" Scribus crashes due to Signal 11 | ||||
Additional Information | 1.5.0.svn (19430) Spiral dialog backtrace: Program received signal SIGSEGV, Segmentation fault. 0x00007ffff6e8a03c in QDialog::reject() () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 (gdb) bt 0 0x00007ffff6e8a03c in QDialog::reject() () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 1 0x00000000011542e1 in ScrPaletteBase::reject (this=0x32269a0) at /home/.../Scribus/scribus/ui/scrpalettebase.cpp:224 2 0x00007ffff6e8c506 in QDialog::keyPressEvent(QKeyEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 3 0x00007ffff6cc5c9d in QWidget::event(QEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 4 0x00007ffff6c8da94 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 5 0x00007ffff6c91994 in QApplication::notify(QObject*, QEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 6 0x00007ffff7658f04 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Core.so.5 7 0x00007ffff6ce89f0 in ?? () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 8 0x00007ffff6c8da94 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 9 0x00007ffff6c910b6 in QApplication::notify(QObject*, QEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 10 0x00007ffff7658f04 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Core.so.5 11 0x00007ffff6504c3a in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Gui.so.5 12 0x00007ffff650cf55 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Gui.so.5 13 0x00007ffff64f2208 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Gui.so.5 14 0x00007fffe548c460 in ?? () from /home/.../Qt/5.3/gcc_64/plugins/platforms/libqxcb.so 15 0x00007fffecddd316 in g_main_dispatch (context=0x7fffe0001740) at gmain.c:3066 16 g_main_context_dispatch (context=context@entry=0x7fffe0001740) at gmain.c:3642 17 0x00007fffecddd668 in g_main_context_iterate (context=context@entry=0x7fffe0001740, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3713 18 0x00007fffecddd70c in g_main_context_iteration (context=0x7fffe0001740, may_block=1) at gmain.c:3774 19 0x00007ffff76b3574 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Core.so.5 20 0x00007ffff765711b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /home/.../Qt/5.3/gcc_64/lib/libQt5Core.so.5 21 0x00007ffff765bfe5 in QCoreApplication::exec() () from /home/.../Qt/5.3/gcc_64/lib/libQt5Core.so.5 22 0x0000000001243430 in mainApp (argc=1, argv=0x7fffffffdd18) at /home/.../Scribus/scribus/main_nix.cpp:86 23 0x00000000012433c0 in main (argc=1, argv=0x7fffffffdd18) at /home/.../Scribus/scribus/main_nix.cpp:54 | ||||
Tags | No tags attached. | ||||
Patch | |||||
|
12630.diff (688 bytes)
Index: scribus/ui/scrpalettebase.cpp =================================================================== --- scribus/ui/scrpalettebase.cpp (revisione 19430) +++ scribus/ui/scrpalettebase.cpp (copia locale) @@ -92,7 +92,7 @@ show(); else hide(); - emit paletteShown(visibleOnStartup); + emit setPaletteShown(visibleOnStartup); } void ScrPaletteBase::setPaletteShown(bool visible) @@ -145,7 +145,7 @@ { closeEvent->ignore(); hide(); - emit paletteShown(false); + emit setPaletteShown(false); } void ScrPaletteBase::hideEvent(QHideEvent*) @@ -220,7 +220,7 @@ void ScrPaletteBase::reject() { - emit paletteShown(false); + emit setPaletteShown(false); QDialog::reject(); } |
|
I tried to figure out what was happening with gdb and ended up with the attached .diff file. With that change it doesn't crash anymore but I'm not sure if it is 100% correct (hope it is :) ). |
|
I found a simpler solution :-) The crash was caused by dialog being deleted in code triggered by the paletteShown() signal. Calling QDialog::reject() after that could only trigger a crash. So inverting the call order in ScrPaletteBase::reject() should be enough. |
|
Thanks jghali! Fixed in 1.5.0.svn (19468). |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-08-23 22:06 | FirasH | New Issue | |
2014-08-23 22:53 | FirasH | File Added: 12630.diff | |
2014-08-23 22:55 | FirasH | Note Added: 0033331 | |
2014-08-23 22:55 | FirasH | Summary | Pressing "Esc" while item specific window is opened crashes Scribus => [PATCH] Pressing "Esc" while item specific window is opened crashes Scribus |
2014-08-24 12:35 | jghali | Target Version | => 1.5.0svn |
2014-08-24 12:36 | jghali | Target Version | 1.5.0svn => 1.5.0 |
2014-08-24 12:52 | jghali | Note Added: 0033334 | |
2014-08-24 12:52 | jghali | Status | new => resolved |
2014-08-24 12:52 | jghali | Fixed in Version | => 1.5.0svn |
2014-08-24 12:52 | jghali | Resolution | open => fixed |
2014-08-24 12:52 | jghali | Assigned To | => jghali |
2014-08-31 18:22 | FirasH | Note Added: 0033409 | |
2014-08-31 18:22 | FirasH | Status | resolved => closed |