Bug 369559 - Crash when realizing QComboBox with icons
Summary: Crash when realizing QComboBox with icons
Status: RESOLVED UPSTREAM
Alias: None
Product: Breeze
Classification: Plasma
Component: QStyle (show other bugs)
Version: 5.8.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Hugo Pereira Da Costa
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-09-30 09:35 UTC by Daniel Vrátil
Modified: 2016-09-30 10:30 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Vrátil 2016-09-30 09:35:37 UTC
We have a "special" QComboBox in Kleo (Kleo::KeySelectionCombo) that causes Breeze to crash. When constructed the combo box is disabled and only has a single "Loading keys ..." item. Once the GPG keys are loaded the widget is enabled, the initial item is removed and the combo is popuiated with the relevant keys.

If the population happens before the widget is realized (the widget is on a second tab in a tab view), then switching to the second tab leads to the crash before. If however I am quick enough and manage to switch to the second tab before while the combo box is still disabled and says "Loading keys", no crash happens.

I don't think we are doing anything special there in the combo, the icons for the items in the combo are provided through Qt::DecorationRole of the underlaying model, so this looks to me more like a Breeze (or Qt?) issue.


Thread 1 "kmail" received signal SIGSEGV, Segmentation fault.
0x00007ffff246a7c1 in QIcon::pixmap (this=this@entry=0x7fffffff9418, window=<optimized out>, size=..., mode=mode@entry=QIcon::Selected, state=state@entry=QIcon::Off) at image/qicon.cpp:839
839             return d->engine->pixmap(size, mode, state);
(gdb) print d->engine
$1 = (QIconEngine *) 0x100000001
(gdb) bt
#0  0x00007ffff246a7c1 in QIcon::pixmap(QWindow*, QSize const&, QIcon::Mode, QIcon::State) const (this=this@entry=0x7fffffff9418, window=<optimized out>, size=..., mode=mode@entry=QIcon::Selected, state=state@entry=QIcon::Off) at image/qicon.cpp:839
#1  0x00007fffbce8c7b7 in Breeze::Style::drawComboBoxLabelControl(QStyleOption const*, QPainter*, QWidget const*) const (this=0xa1d1e0, option=0x7fffffff93b0, painter=0x7fffffff9390, widget=0x444beb0) at /data/KDE/src/kde/workspace/breeze/kstyle/breezestyle.cpp:4475
#2  0x00007fffbce89d15 in Breeze::Style::drawControl(QStyle::ControlElement, QStyleOption const*, QPainter*, QWidget const*) const (this=0xa1d1e0, element=QStyle::CE_ComboBoxLabel, option=0x7fffffff93b0, painter=0x7fffffff9390, widget=0x444beb0) at /data/KDE/src/kde/workspace/breeze/kstyle/breezestyle.cpp:914
#3  0x00007ffff2a67877 in QComboBox::paintEvent(QPaintEvent*) (opt=..., ce=QStyle::CE_ComboBoxLabel, this=0x7fffffff9390) at ../../src/widgets/styles/qstylepainter.h:78
#4  0x00007ffff2a67877 in QComboBox::paintEvent(QPaintEvent*) (this=0x444beb0) at widgets/qcombobox.cpp:2968
#5  0x00007ffff2993940 in QWidget::event(QEvent*) (this=this@entry=0x444beb0, event=event@entry=0x7fffffff9730) at kernel/qwidget.cpp:9114
#6  0x00007ffff2a68826 in QComboBox::event(QEvent*) (this=0x444beb0, event=0x7fffffff9730) at widgets/qcombobox.cpp:3030
#7  0x00007ffff294dc0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x444beb0, e=0x7fffffff9730) at kernel/qapplication.cpp:3804
#8  0x00007ffff29530ef in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd410, receiver=0x444beb0, e=0x7fffffff9730) at kernel/qapplication.cpp:3561
#9  0x00007ffff20ba7aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=receiver@entry=0x444beb0, event=event@entry=0x7fffffff9730) at kernel/qcoreapplication.cpp:1015
#10 0x00007ffff298c6ea in QWidgetPrivate::sendPaintEvent(QRegion const&) (event=0x7fffffff9730, receiver=<optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:228
#11 0x00007ffff298c6ea in QWidgetPrivate::sendPaintEvent(QRegion const&) (this=0x444df40, toBePainted=...) at kernel/qwidget.cpp:5666
#12 0x00007ffff298cd45 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444df40, pdev=0x47a34c0, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=<optimized out>) at kernel/qwidget.cpp:5606
#13 0x00007ffff298da6d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5801
#14 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=1, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#15 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=2, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#16 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=3, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#17 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=4, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#18 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=5, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#19 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=6, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#20 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=7, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#21 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=8, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#22 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=9, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#23 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=10, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#24 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=this@entry=0x444b770, pdev=pdev@entry=0x47a34c0, siblings=QList<QObject *> = {...}, index=11, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#25 0x00007ffff298c8a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x444b770, pdev=0x47a34c0, rgn=..., offset=..., flags=<optimized out>, sharedPainter=0x0, backingStore=<optimized out>) at kernel/qwidget.cpp:5658
#26 0x00007ffff298da6d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=this@entry=0x442f260, pdev=pdev@entry=0x47a34c0, siblings=QList<QObject *> = {...}, index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5801
#27 0x00007ffff298c8a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x442f260, pdev=0x47a34c0, rgn=..., offset=..., flags=<optimized out>, sharedPainter=0x0, backingStore=<optimized out>) at kernel/qwidget.cpp:5658
#28 0x00007ffff298da6d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x442f050, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5801
#29 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=this@entry=0x442f050, pdev=pdev@entry=0x47a34c0, siblings=QList<QObject *> = {...}, index=0, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#30 0x00007ffff298c8a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x442f050, pdev=0x47a34c0, rgn=..., offset=..., flags=<optimized out>, sharedPainter=0x0, backingStore=<optimized out>) at kernel/qwidget.cpp:5658
#31 0x00007ffff298da6d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=this@entry=0x442ed70, pdev=pdev@entry=0x47a34c0, siblings=QList<QObject *> = {...}, index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5801
#32 0x00007ffff298c8a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x442ed70, pdev=0x47a34c0, rgn=..., offset=..., flags=<optimized out>, sharedPainter=0x0, backingStore=<optimized out>) at kernel/qwidget.cpp:5658
#33 0x00007ffff298da6d in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x442c630, pdev=0x47a34c0, siblings=QList<QObject *> = {...}, index=<optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5801
#34 0x00007ffff298d95a in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=this@entry=0x442c630, pdev=pdev@entry=0x47a34c0, siblings=QList<QObject *> = {...}, index=1, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x46eeae0) at kernel/qwidget.cpp:5788
#35 0x00007ffff298c8a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (this=0x442c630, pdev=0x47a34c0, rgn=..., offset=..., flags=flags@entry=5, sharedPainter=sharedPainter@entry=0x0, backingStore=<optimized out>) at kernel/qwidget.cpp:5658
#36 0x00007ffff295bf50 in QWidgetBackingStore::doSync() (this=this@entry=0x46eeae0) at kernel/qwidgetbackingstore.cpp:1356
#37 0x00007ffff295c151 in QWidgetBackingStore::sync() (this=0x46eeae0) at kernel/qwidgetbackingstore.cpp:1145
#38 0x00007ffff297bbef in QWidgetPrivate::syncBackingStore() (this=0x442c630) at kernel/qwidget.cpp:1942
#39 0x00007ffff2993a18 in QWidget::event(QEvent*) (this=0x441fee0, event=0x47df670) at kernel/qwidget.cpp:9053
#40 0x00007ffff294dc0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x441fee0, e=0x47df670) at kernel/qapplication.cpp:3804
#41 0x00007ffff29530ef in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd410, receiver=0x441fee0, e=0x47df670) at kernel/qapplication.cpp:3561
#42 0x00007ffff20ba7aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x441fee0, event=event@entry=0x47df670) at kernel/qcoreapplication.cpp:1015
#43 0x00007ffff20bc84f in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (event=0x47df670, receiver=<optimized out>) at kernel/qcoreapplication.h:225
#44 0x00007ffff20bc84f in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x6295e0) at kernel/qcoreapplication.cpp:1650
#45 0x00007ffff20bcd68 in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1508
#46 0x00007ffff210a1b3 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x68c4e0) at kernel/qeventdispatcher_glib.cpp:270
#47 0x00007fffe103f6ba in g_main_context_dispatch (context=0x7fffc00016f0) at gmain.c:3154
#48 0x00007fffe103f6ba in g_main_context_dispatch (context=context@entry=0x7fffc00016f0) at gmain.c:3769
#49 0x00007fffe103fa70 in g_main_context_iterate (context=context@entry=0x7fffc00016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
#50 0x00007fffe103fb1c in g_main_context_iteration (context=0x7fffc00016f0, may_block=may_block@entry=1) at gmain.c:3901
#51 0x00007ffff210a22f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x698b40, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#52 0x00007ffff20b95ea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffbf40, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#53 0x00007ffff2b53380 in QDialog::exec() (this=0x441fee0) at dialogs/qdialog.cpp:541
#54 0x00007ffff783d523 in KMail::IdentityPage::slotModifyIdentity() (this=0x1c7a750) at /data/KDE/src/kde/pim/kmail/src/identity/identitypage.cpp:200
#55 0x00007ffff784031d in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KMail::IdentityPage::*)()>::call(void (KMail::IdentityPage::*)(), KMail::IdentityPage*, void**) (f=(void (KMail::IdentityPage::*)(KMail::IdentityPage * const)) 0x7ffff783d3c6 <KMail::IdentityPage::slotModifyIdentity()>, o=0x1c7a750, arg=0x7fffffffc1d0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:501
#56 0x00007ffff784026a in QtPrivate::FunctionPointer<void (KMail::IdentityPage::*)()>::call<QtPrivate::List<>, void>(void (KMail::IdentityPage::*)(), KMail::IdentityPage*, void**) (f=(void (KMail::IdentityPage::*)(KMail::IdentityPage * const)) 0x7ffff783d3c6 <KMail::IdentityPage::slotModifyIdentity()>, o=0x1c7a750, arg=0x7fffffffc1d0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:520
#57 0x00007ffff78400dd in QtPrivate::QSlotObject<void (KMail::IdentityPage::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x1c8e0e0, r=0x1c7a750, a=0x7fffffffc1d0, ret=0x0) at /usr/include/qt5/QtCore/qobject_impl.h:143
#58 0x00007ffff20e2ebc in QMetaObject::activate(QObject*, int, int, void**) (a=0x7fffffffc1d0, r=0x1c7a750, this=<optimized out>) at ../../src/corelib/kernel/qobject_impl.h:124
#59 0x00007ffff20e2ebc in QMetaObject::activate(QObject*, int, int, void**) (sender=0x1c7a6c0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fffffffc1d0) at kernel/qobject.cpp:3715
#60 0x00007ffff20e33b7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=m@entry=0x7ffff2e6b820 <QTreeWidget::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fffffffc1d0) at kernel/qobject.cpp:3595
#61 0x00007ffff2c22c20 in QTreeWidget::itemDoubleClicked(QTreeWidgetItem*, int) (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>) at .moc/moc_qtreewidget.cpp:396
#62 0x00007ffff20e2b92 in QMetaObject::activate(QObject*, int, int, void**) (sender=sender@entry=0x1c7a6c0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fffffffc300) at kernel/qobject.cpp:3730
#63 0x00007ffff20e33b7 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x1c7a6c0, m=m@entry=0x7ffff2e68540 <QAbstractItemView::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fffffffc300) at kernel/qobject.cpp:3595
#64 0x00007ffff2bb35a5 in QAbstractItemView::doubleClicked(QModelIndex const&) (this=this@entry=0x1c7a6c0, _t1=...) at .moc/moc_qabstractitemview.cpp:646
#65 0x00007ffff2bfc50a in QTreeView::mouseDoubleClickEvent(QMouseEvent*) (this=0x1c7a6c0, event=0x7fffffffca90) at itemviews/qtreeview.cpp:1954
#66 0x00007ffff2994198 in QWidget::event(QEvent*) (this=this@entry=0x1c7a6c0, event=event@entry=0x7fffffffca90) at kernel/qwidget.cpp:8752
#67 0x00007ffff2a959ce in QFrame::event(QEvent*) (this=0x1c7a6c0, e=0x7fffffffca90) at widgets/qframe.cpp:544
#68 0x00007ffff2bc0523 in QAbstractItemView::viewportEvent(QEvent*) (this=this@entry=0x1c7a6c0, event=event@entry=0x7fffffffca90) at itemviews/qabstractitemview.cpp:1694
#69 0x00007ffff2bfe4ec in QTreeView::viewportEvent(QEvent*) (this=0x1c7a6c0, event=0x7fffffffca90) at itemviews/qtreeview.cpp:1313
#70 0x00007ffff20ba592 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (receiver=0x1c7a570, event=0x7fffffffca90) at kernel/qcoreapplication.cpp:1126
#71 0x00007ffff294dbe5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x1c7a570, e=0x7fffffffca90) at kernel/qapplication.cpp:3800
#72 0x00007ffff2953fa7 in QApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x1c7a570, e=0x7fffffffca90) at kernel/qapplication.cpp:3277
#73 0x00007ffff20ba7aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x1c7a570, event=0x7fffffffca90) at kernel/qcoreapplication.cpp:1015
#74 0x00007ffff2952655 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) (receiver=0x1c7a570, event=0x7fffffffca90, alienWidget=0x1c7a570, nativeWidget=0x38edcc0, buttonDown=<optimized out>, lastMouseReceiver=..., spontaneous=true) at ../../src/corelib/kernel/qcoreapplication.h:225
#75 0x00007ffff29ae2a6 in QWidgetWindow::handleMouseEvent(QMouseEvent*) (this=this@entry=0x1c6ed20, event=event@entry=0x7fffffffcf20) at kernel/qwidgetwindow.cpp:603
#76 0x00007ffff29b0c73 in QWidgetWindow::event(QEvent*) (this=0x1c6ed20, event=0x7fffffffcf20) at kernel/qwidgetwindow.cpp:233
#77 0x00007ffff294dc0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x1c6ed20, e=0x7fffffffcf20) at kernel/qapplication.cpp:3804
#78 0x00007ffff29530ef in QApplication::notify(QObject*, QEvent*) (this=0x7fffffffd410, receiver=0x1c6ed20, e=0x7fffffffcf20) at kernel/qapplication.cpp:3561
#79 0x00007ffff20ba7aa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x1c6ed20, event=0x7fffffffcf20) at kernel/qcoreapplication.cpp:1015
#80 0x00007ffff23f6cb8 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) (e=0x234d4d0) at ../../src/corelib/kernel/qcoreapplication.h:228
#81 0x00007ffff23f86d5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (e=<optimized out>) at kernel/qguiapplication.cpp:1661
#82 0x00007ffff23d93cb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=...) at kernel/qwindowsysteminterface.cpp:648
#83 0x00007fffc7852600 in userEventSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at eventdispatchers/qeventdispatcher_glib.cpp:70
#84 0x00007fffe103f6ba in g_main_context_dispatch (context=0x7fffc00016f0) at gmain.c:3154
#85 0x00007fffe103f6ba in g_main_context_dispatch (context=context@entry=0x7fffc00016f0) at gmain.c:3769
#86 0x00007fffe103fa70 in g_main_context_iterate (context=context@entry=0x7fffc00016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
#87 0x00007fffe103fb1c in g_main_context_iteration (context=0x7fffc00016f0, may_block=may_block@entry=1) at gmain.c:3901
#88 0x00007ffff210a22f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x698b40, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#89 0x00007ffff20b95ea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd260, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#90 0x00007ffff20c117c in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1285
#91 0x0000000000404b85 in main(int, char**) (argc=1, argv=0x7fffffffd5a8) at /data/KDE/src/kde/pim/kmail/src/main.cpp:161




Reproducible: Always

Steps to Reproduce:
1. Run KMail from git master from console
2. Go to Settings -> Configure KMail -> Identities -> Double-click an identity which has a PGP signing key configured (otherwise configure one and try again)
3. Wait until "Key listing done" appears in console - that means the combobox has been populated 
4. Switch to the "Cryptography" tab -> crash
Comment 1 Daniel Vrátil 2016-09-30 09:37:32 UTC
...leads to the crash before. -> ....leads to the crash below.
...switch to the second tab before while the combo box is still disabled -> ...switch to the second tab while the combo box is still disabled
Comment 2 Hugo Pereira Da Costa 2016-09-30 09:38:06 UTC
Hi,
Thanks for posting.
To see if this is Breeze or Qt, can you try with a different style ? (kmail -style fusion)
Comment 3 Daniel Vrátil 2016-09-30 10:30:50 UTC
Indeed looks like a Qt issue. The Fusion style crashes too with basically the same backtrace (just inside QFusionStyle instead of Breeze::Style). Sorry for the noise, I'll bring this to the Qt bug tracker then.

Thread 1 "kmail" received signal SIGSEGV, Segmentation fault.
0x00007ffff246a7c1 in QIcon::pixmap (this=this@entry=0x7fffffff93f8, window=window@entry=0x0, size=..., mode=QIcon::Normal, state=state@entry=QIcon::Off) at image/qicon.cpp:839
839             return d->engine->pixmap(size, mode, state);
Missing separate debuginfos, use: dnf debuginfo-install kf5-kimageformats-5.26.0-1.fc24.x86_64 kf5-sonnet-core-5.26.0-1.fc24.x86_64 libglvnd-0.1.0-5.bb63d82.fc24.x86_64 nss-mdns-0.10-17.fc24.x86_64
(gdb) bt
#0  0x00007ffff246a7c1 in QIcon::pixmap(QWindow*, QSize const&, QIcon::Mode, QIcon::State) const (this=this@entry=0x7fffffff93f8, window=window@entry=0x0, size=..., mode=QIcon::Normal, state=state@entry=QIcon::Off)
    at image/qicon.cpp:839
#1  0x00007ffff246a96e in QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const (this=this@entry=0x7fffffff93f8, size=..., mode=<optimized out>, state=state@entry=QIcon::Off) at image/qicon.cpp:775
#2  0x00007ffff2a38435 in QFusionStyle::drawControl(QStyle::ControlElement, QStyleOption const*, QPainter*, QWidget const*) const (this=0xa1d060, element=<optimized out>, option=0x7fffffff9390, painter=0x7fffffff9370, widget=0x
1a088e0) at styles/qfusionstyle.cpp:1014
#3  0x00007ffff2a67877 in QComboBox::paintEvent(QPaintEvent*) (opt=..., ce=QStyle::CE_ComboBoxLabel, this=0x7fffffff9370) at ../../src/widgets/styles/qstylepainter.h:78
#4  0x00007ffff2a67877 in QComboBox::paintEvent(QPaintEvent*) (this=0x1a088e0) at widgets/qcombobox.cpp:2968