Bug 311270

Summary: Konsole segfault
Product: konsole Reporter: Nils Westman <nilswestman>
Component: generalAssignee: Konsole Developer <konsole-devel>
Status: RESOLVED FIXED    
Severity: crash CC: francesco.cecconi, hugh.kde.bugs
Priority: NOR    
Version: 2.9.2   
Target Milestone: ---   
Platform: Ubuntu Packages   
OS: Linux   
Latest Commit: Version Fixed In: 4.11
Attachments: New crash information added by DrKonqi

Description Nils Westman 2012-12-06 20:19:26 UTC
Application: konsole (2.9.2)
KDE Platform Version: 4.9.2
Qt Version: 4.8.3
Operating System: Linux 3.5.0-19-generic x86_64
Distribution: Linux Mint 14 Nadia

-- Information about the crash:
- What I was doing when the application crashed:

I was editing the color scheme in the appearance tab of the 'edit current profile' menu.  I inadvertantly opened two of these windows.  I succesfully closed the first window.  Upon closing the second instance of the window the segfault occured.

- Custom settings of the application:

Modification to the 'linux colors' color scheme.  Transperancy applied.

-- Backtrace:
Application: Konsole (konsole), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[KCrash Handler]
#5  QColor (acolor=..., this=0x7fff14c50640) at /usr/include/qt4/QtGui/qcolor.h:292
#6  Konsole::ColorScheme::foregroundColor (this=0x300b2d0) at ../../src/ColorScheme.cpp:270
#7  0x00007f2378b78969 in Konsole::ColorSchemeViewDelegate::paint (this=<optimized out>, painter=0x7fff14c50880, option=..., index=...) at ../../src/EditProfileDialog.cpp:1239
#8  0x00007f2377394399 in QListView::paintEvent (this=0x2ca8270, e=<optimized out>) at itemviews/qlistview.cpp:1039
#9  0x00007f2376eb6802 in QWidget::event (this=0x2ca8270, event=0x7fff14c515b0) at kernel/qwidget.cpp:8517
#10 0x00007f2377265b66 in QFrame::event (this=0x2ca8270, e=0x7fff14c515b0) at widgets/qframe.cpp:557
#11 0x00007f237737159b in QAbstractItemView::viewportEvent (this=0x2ca8270, event=0x7fff14c515b0) at itemviews/qabstractitemview.cpp:1644
#12 0x00007f2377abf6d6 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0x2ca87d0, event=0x7fff14c515b0) at kernel/qcoreapplication.cpp:1025
#13 0x00007f2376e66e6c in QApplicationPrivate::notify_helper (this=this@entry=0x237d8b0, receiver=receiver@entry=0x2ca87d0, e=e@entry=0x7fff14c515b0) at kernel/qapplication.cpp:4558
#14 0x00007f2376e6b30a in QApplication::notify (this=0x7fff14c55f80, receiver=0x2ca87d0, e=0x7fff14c515b0) at kernel/qapplication.cpp:4423
#15 0x00007f23784fd1d6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#16 0x00007f2377abf56e in QCoreApplication::notifyInternal (this=0x7fff14c55f80, receiver=0x2ca87d0, event=0x7fff14c515b0) at kernel/qcoreapplication.cpp:915
#17 0x00007f2376eb2524 in sendSpontaneousEvent (event=0x7fff14c515b0, receiver=0x2ca87d0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234
#18 QWidgetPrivate::drawWidget (this=this@entry=0x2ca8800, pdev=pdev@entry=0x2d40a60, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5594
#19 0x00007f2376eb301f in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca82a0, pdev=pdev@entry=0x2d40a60, siblings=..., index=<optimized out>, index@entry=2, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5803
#20 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca82a0, pdev=pdev@entry=0x2d40a60, siblings=..., index=2, index@entry=3, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5790
#21 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca82a0, pdev=pdev@entry=0x2d40a60, siblings=..., index=3, index@entry=4, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5790
#22 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca82a0, pdev=pdev@entry=0x2d40a60, siblings=..., index=4, index@entry=5, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5790
#23 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca82a0, pdev=pdev@entry=0x2d40a60, siblings=..., index=5, index@entry=7, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5790
#24 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=0x2ca82a0, pdev=0x2d40a60, siblings=..., index=7, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x2c4b540) at kernel/qwidget.cpp:5790
#25 0x00007f2376eb20b5 in QWidgetPrivate::drawWidget (this=this@entry=0x2ca82a0, pdev=pdev@entry=0x2d40a60, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5647
#26 0x00007f2376eb301f in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca7c00, pdev=pdev@entry=0x2d40a60, siblings=..., index=<optimized out>, index@entry=1, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5803
#27 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca7c00, pdev=pdev@entry=0x2d40a60, siblings=..., index=1, index@entry=2, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5790
#28 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca7c00, pdev=pdev@entry=0x2d40a60, siblings=..., index=2, index@entry=3, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5790
#29 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=0x2ca7c00, pdev=0x2d40a60, siblings=..., index=3, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x2c4b540) at kernel/qwidget.cpp:5790
#30 0x00007f2376eb20b5 in QWidgetPrivate::drawWidget (this=this@entry=0x2ca7c00, pdev=pdev@entry=0x2d40a60, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5647
#31 0x00007f2376eb301f in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2ca77b0, pdev=pdev@entry=0x2d40a60, siblings=..., index=<optimized out>, index@entry=1, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5803
#32 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=0x2ca77b0, pdev=0x2d40a60, siblings=..., index=1, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x2c4b540) at kernel/qwidget.cpp:5790
#33 0x00007f2376eb20b5 in QWidgetPrivate::drawWidget (this=this@entry=0x2ca77b0, pdev=pdev@entry=0x2d40a60, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5647
#34 0x00007f2376eb301f in QWidgetPrivate::paintSiblingsRecursive (this=0x2c733b0, pdev=0x2d40a60, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x2c4b540) at kernel/qwidget.cpp:5803
#35 0x00007f2376eb20b5 in QWidgetPrivate::drawWidget (this=this@entry=0x2c733b0, pdev=pdev@entry=0x2d40a60, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5647
#36 0x00007f2376eb301f in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x2c73170, pdev=pdev@entry=0x2d40a60, siblings=..., index=<optimized out>, index@entry=0, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5803
#37 0x00007f2376eb2e64 in QWidgetPrivate::paintSiblingsRecursive (this=0x2c73170, pdev=0x2d40a60, siblings=..., index=0, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x2c4b540) at kernel/qwidget.cpp:5790
#38 0x00007f2376eb20b5 in QWidgetPrivate::drawWidget (this=this@entry=0x2c73170, pdev=pdev@entry=0x2d40a60, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5647
#39 0x00007f2376eb301f in QWidgetPrivate::paintSiblingsRecursive (this=0x2c72db0, pdev=0x2d40a60, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x2c4b540) at kernel/qwidget.cpp:5803
#40 0x00007f2376eb20b5 in QWidgetPrivate::drawWidget (this=this@entry=0x2c72db0, pdev=pdev@entry=0x2d40a60, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x2c4b540) at kernel/qwidget.cpp:5647
#41 0x00007f2376eb301f in QWidgetPrivate::paintSiblingsRecursive (this=0x2c60770, pdev=0x2d40a60, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x2c4b540) at kernel/qwidget.cpp:5803
#42 0x00007f2376eb20b5 in QWidgetPrivate::drawWidget (this=0x2c60770, pdev=0x2d40a60, rgn=..., offset=..., flags=<optimized out>, sharedPainter=0x0, backingStore=0x2c4b540) at kernel/qwidget.cpp:5647
#43 0x00007f2377080958 in QWidgetBackingStore::sync (this=0x2c4b540) at painting/qbackingstore.cpp:1373
#44 0x00007f2376ea77f0 in QWidgetPrivate::syncBackingStore (this=this@entry=0x2c60770) at kernel/qwidget.cpp:1892
#45 0x00007f2376eb6e4c in QWidget::event (this=0x2c5d760, event=0x7fff14c549e0) at kernel/qwidget.cpp:8664
#46 0x00007f2376e66e9c in QApplicationPrivate::notify_helper (this=this@entry=0x237d8b0, receiver=receiver@entry=0x2c5d760, e=e@entry=0x7fff14c549e0) at kernel/qapplication.cpp:4562
#47 0x00007f2376e6b30a in QApplication::notify (this=0x7fff14c55f80, receiver=0x2c5d760, e=0x7fff14c549e0) at kernel/qapplication.cpp:4423
#48 0x00007f23784fd1d6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#49 0x00007f2377abf56e in QCoreApplication::notifyInternal (this=0x7fff14c55f80, receiver=0x2c5d760, event=0x7fff14c549e0) at kernel/qcoreapplication.cpp:915
#50 0x00007f237707c043 in sendEvent (event=0x7fff14c549e0, receiver=0x2c5d760) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#51 sendUpdateRequest (updateImmediately=true, widget=0x2c5d760) at painting/qbackingstore.cpp:534
#52 QWidgetBackingStore::markDirty (this=<optimized out>, rect=..., widget=<optimized out>, updateImmediately=<optimized out>, invalidateBuffer=<optimized out>) at painting/qbackingstore.cpp:722
#53 0x00007f2376ea8419 in repaint (rect=..., this=0x2c47f10) at kernel/qwidget.cpp:10466
#54 QWidget::repaint (this=0x2c47f10, rect=...) at kernel/qwidget.cpp:10444
#55 0x00007f2376ea84d3 in QWidget::repaint (this=<optimized out>) at kernel/qwidget.cpp:10416
#56 0x00007f2377224aef in QAbstractButton::mousePressEvent (this=0x2c47f10, e=0x7fff14c552e0) at widgets/qabstractbutton.cpp:1096
#57 0x00007f2376eb6cf3 in QWidget::event (this=0x2c47f10, event=0x7fff14c552e0) at kernel/qwidget.cpp:8367
#58 0x00007f2376e66e9c in QApplicationPrivate::notify_helper (this=this@entry=0x237d8b0, receiver=receiver@entry=0x2c47f10, e=e@entry=0x7fff14c552e0) at kernel/qapplication.cpp:4562
#59 0x00007f2376e6bb6b in QApplication::notify (this=<optimized out>, receiver=0x2c47f10, e=0x7fff14c552e0) at kernel/qapplication.cpp:4105
#60 0x00007f23784fd1d6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#61 0x00007f2377abf56e in QCoreApplication::notifyInternal (this=0x7fff14c55f80, receiver=0x2c47f10, event=0x7fff14c552e0) at kernel/qcoreapplication.cpp:915
#62 0x00007f2376e67cd3 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#63 QApplicationPrivate::sendMouseEvent (receiver=0x2c47f10, event=0x7fff14c552e0, alienWidget=0x2c47f10, nativeWidget=0x2bf4f30, buttonDown=0x7f2377943308 <qt_button_down>, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3173
#64 0x00007f2376ee5554 in QETWidget::translateMouseEvent (this=this@entry=0x2bf4f30, event=event@entry=0x7fff14c55a60) at kernel/qapplication_x11.cpp:4622
#65 0x00007f2376ee444f in QApplication::x11ProcessEvent (this=0x7fff14c55f80, event=0x7fff14c55a60) at kernel/qapplication_x11.cpp:3737
#66 0x00007f2376f0bfa2 in x11EventSourceDispatch (s=0x2395070, callback=0x0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#67 0x00007f2372d19ab5 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#68 0x00007f2372d19de8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#69 0x00007f2372d19ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#70 0x00007f2377aedbf6 in QEventDispatcherGlib::processEvents (this=0x22f3ad0, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#71 0x00007f2376f0bc1e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#72 0x00007f2377abe2bf in QEventLoop::processEvents (this=this@entry=0x7fff14c55e30, flags=...) at kernel/qeventloop.cpp:149
#73 0x00007f2377abe548 in QEventLoop::exec (this=0x7fff14c55e30, flags=...) at kernel/qeventloop.cpp:204
#74 0x00007f2377ac3708 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1187
#75 0x00007f2379218ee7 in kdemain (argc=1, argv=0x7fff14c560c8) at ../../src/main.cpp:85
#76 0x00007f2378e4176d in __libc_start_main (main=0x400690 <main(int, char**)>, argc=1, ubp_av=0x7fff14c560c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff14c560b8) at libc-start.c:226
#77 0x00000000004006c1 in _start ()

Reported using DrKonqi
Comment 1 Kurt Hindenburg 2012-12-07 15:53:53 UTC
Having 2 open 'edit current profile' windows does appear to cause crashes.  I'm not quite sure why we allow opening mulitple profile windows.

0   libkonsoleprivate.dylib       	0x0000000107115616 Konsole::ColorScheme::foregroundColor() const + 22 (qcolor.h:293)
1   libkonsoleprivate.dylib       	0x0000000107127daf Konsole::ColorSchemeViewDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const + 367 (EditProfileDialog.cpp:1262)
Comment 2 Francesco Cecconi 2012-12-09 11:40:59 UTC
@Review: https://git.reviewboard.kde.org/r/107640/
Comment 3 HughDaniel 2012-12-30 13:34:39 UTC
Created attachment 76091 [details]
New crash information added by DrKonqi

konsole (2.10) on KDE Platform 4.9.95 using Qt 4.8.3

I had been searching for the right color to change and after maybe 10 trips to the collor setting and back, when I clicked on the close dialog (the Settings one) konsole crashed.  Email if you need testing.

-- Backtrace (Reduced):
#6  QColor (acolor=..., this=0x7ffffdf53700) at /usr/include/qt4/QtGui/qcolor.h:292
#7  Konsole::ColorScheme::foregroundColor (this=0x49a0940) at ../../src/ColorScheme.cpp:268
#8  0x00007fefe87c6b19 in Konsole::ColorSchemeViewDelegate::paint (this=<optimized out>, painter=0x7ffffdf53940, option=..., index=...) at ../../src/EditProfileDialog.cpp:1262
#9  0x00007fefe6fe0399 in QListView::paintEvent (this=0x428a620, e=<optimized out>) at itemviews/qlistview.cpp:1039
#10 0x00007fefe6b02802 in QWidget::event (this=0x428a620, event=0x7ffffdf54670) at kernel/qwidget.cpp:8517
Comment 4 Francesco Cecconi 2013-03-14 16:47:13 UTC
Git commit c45d07698fc68522e94c082e638156a9ef94a438 by Francesco Cecconi.
Committed on 14/03/2013 at 17:40.
Pushed by cecconi into branch 'master'.

Prevent the opening of two or more "edit profile dialogs" per session.

Fixing the wrong behaviour to open two or more "edit dialog" for
one session/tab with the same profile, and the crash with two or
more "edit dialog", one for different session(tabs) with the same profile.
REVIEW: 107640
FIXED-IN: 4.11

M  +1    -2    src/EditProfileDialog.h
M  +22   -1    src/ManageProfilesDialog.cpp
M  +26   -3    src/SessionController.cpp
M  +4    -0    src/SessionController.h
M  +5    -0    src/TerminalDisplay.cpp
M  +1    -1    src/TerminalDisplay.h

http://commits.kde.org/konsole/c45d07698fc68522e94c082e638156a9ef94a438