Bug 398790 - Kdevelop/Sublime : D15450 causes crash in patch review toolview [crash in Sublime::IdealButtonBarLayout::doVerticalLayout]
Summary: Kdevelop/Sublime : D15450 causes crash in patch review toolview [crash in Sub...
Status: RESOLVED DUPLICATE of bug 399025
Alias: None
Product: kdevelop
Classification: Applications
Component: general (show other bugs)
Version: 5.2.80
Platform: Compiled Sources All
: NOR crash
Target Milestone: ---
Assignee: kdevelop-bugs-null
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-09-18 11:30 UTC by RJVB
Modified: 2018-09-25 06:36 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
backtrace (70.07 KB, text/plain)
2018-09-18 11:30 UTC, RJVB
Details

Note You need to log in before you can comment on or make changes to this bug.
Description RJVB 2018-09-18 11:30:44 UTC
Created attachment 115066 [details]
backtrace

- What I was doing when the application crashed:
Opened the patch review plugin. This causes a systematic crash because of a floating point exception.

Reason: another good example of inappropriate ASSERT usage. The exception occurs when _items.size() == smallItemCount, and it is assumed that this must always be the case.

It is however evident that the list of layout items could very well contain only small items, and it is also evident how to handle that situation. Only small items => no shrinkage needed.

So the proper implementation doesn't use a Q_ASSERT but does

        if (_items.size() != smallItemCount) {
           // evenly distribute surplus height over large items
           shrinkedHeight = maximumHeight + surplus / (_items.size() - smallItemCount);
        } else {
           // Only small items, no shrinkage needed
           shrink = false;
        }
Comment 1 Kevin Funk 2018-09-25 06:34:14 UTC
Pasting backtrace of crashing thread inline for better SEO:

Thread 1 (Thread 0x7fd4badd9bc0 (LWP 32536)):
[KCrash Handler]
#6  0x00007fd4b81e5041 in Sublime::IdealButtonBarLayout::doVerticalLayout (this=0x256fa40, rect=..., updateGeometry=false) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/ideallayout.cpp:223
#7  0x00007fd4b81e4e2e in Sublime::IdealButtonBarLayout::minimumSize (this=0x256fa40) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/ideallayout.cpp:81
#8  0x00007fd4b32c7dba in QLayout::totalMinimumSize (this=0x256fa40) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/include/QtCore/../../src/corelib/tools/qsize.h:176
#9  0x00007fd4b32cb7fe in QWidgetItem::sizeHint (this=0x2573d00) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/kernel/qlayoutitem.cpp:663
#10 0x00007fd4b339b355 in QToolBarLayout::expandedSize (this=this@entry=0x25720a0, size=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/include/QtCore/../../src/corelib/tools/qlist.h:115
#11 0x00007fd4b339b5dc in QToolBarLayout::checkUsePopupMenu (this=0x25720a0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/include/QtCore/../../src/corelib/tools/qrect.h:266
#12 0x00007fd4b33a3d8c in QToolBarAreaLayoutLine::fitLayout (this=this@entry=0x260ca78) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/widgets/qtoolbararealayout.cpp:161
#13 0x00007fd4b33a4065 in QToolBarAreaLayoutInfo::fitLayout (this=this@entry=0x2562360) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/widgets/qtoolbararealayout.cpp:290
#14 0x00007fd4b33a4292 in QToolBarAreaLayout::fitLayout (this=this@entry=0x2562348) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/widgets/qtoolbararealayout.cpp:662
#15 0x00007fd4b340d684 in QMainWindowLayoutState::fitLayout (this=this@entry=0x2562330) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/widgets/qmainwindowlayout.cpp:542
#16 0x00007fd4b341615c in QMainWindowLayout::setGeometry (this=0x2562310, _r=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/widgets/qmainwindowlayout.cpp:1918
#17 0x00007fd4b32c7c1b in QLayoutPrivate::doResize (this=this@entry=0x26ba7b0, r=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/include/QtWidgets/../../src/widgets/kernel/qwidget.h:841
#18 0x00007fd4b32c8e98 in QLayout::activate (this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/include/QtCore/../../src/corelib/tools/qrect.h:266
#19 0x00007fd4b32eb097 in QWidget::setVisible (this=0x4b2b570, visible=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/kernel/qwidget.h:131
#20 0x00007fd4b81e2aba in Sublime::IdealController::showDockWidget (this=0x26b30a0, dock=0x4b2b570, show=true) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/idealcontroller.cpp:284
#21 0x00007fd4b81e9acb in Sublime::IdealButtonBarWidget::showWidget (this=<optimized out>, action=0x4aea8c0, checked=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/idealbuttonbarwidget.cpp:350
#22 0x00007fd4b25370f0 in QtPrivate::QSlotObjectBase::call (a=0x7ffe7c9f5b40, r=0x26b31b0, this=0x4a1bf10) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/include/QtCore/../../src/corelib/kernel/qobject_impl.h:101
#23 QMetaObject::activate(QObject*, int, int, void**) () at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qobject.cpp:3755
#24 0x00007fd4b25376b7 in QMetaObject::activate (sender=sender@entry=0x4aea8c0, m=m@entry=0x7fd4b39a0cc0 <QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=4, argv=argv@entry=0x7ffe7c9f5b40) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qobject.cpp:3634
#25 0x00007fd4b32a2852 in QAction::toggled (this=this@entry=0x4aea8c0, _t1=<optimized out>, _t1@entry=true) at .moc/moc_qaction.cpp:383
#26 0x00007fd4b32a50e0 in QAction::setChecked (this=0x4aea8c0, b=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/kernel/qaction.cpp:981
#27 0x00007fd4b81e2873 in Sublime::IdealController::raiseView (this=<optimized out>, view=0x4fcad70, mode=Sublime::IdealController::HideOtherViews) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/idealcontroller.cpp:264
#28 0x00007fd4b81db538 in Sublime::MainWindowPrivate::reconstruct (this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/mainwindow_p.cpp:458
#29 0x00007fd4b81d5200 in Sublime::MainWindow::setArea (this=0x26c4510, area=0x2769f40) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/mainwindow.cpp:123
#30 0x00007fd4b81cf904 in Sublime::Controller::showAreaInternal (this=0x253c460, mainWindow=0x26c4510, area=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/controller.cpp:134
#31 Sublime::Controller::showArea (this=0x253c460, areaTypeId=..., mainWindow=0x26c4510) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/kdevplatform/sublime/controller.cpp:166
#32 0x00007fd44022fb4f in PatchReviewPlugin::switchToEmptyReviewArea (this=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/plugins/patchreview/patchreview.cpp:433
#33 0x00007fd44022fc55 in PatchReviewPlugin::updateReview (this=0x4f36c60) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/plugins/patchreview/patchreview.cpp:458
#34 0x00007fd4b2537902 in QObject::event(QEvent*) () at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qobject.cpp:1252
#35 0x00007fd4b32a91a1 in QApplicationPrivate::notify_helper (this=this@entry=0x1c9c070, receiver=receiver@entry=0x4f36c60, e=e@entry=0x66a88e0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/kernel/qapplication.cpp:3722
#36 0x00007fd4b32b19f0 in QApplication::notify (this=0x7ffe7c9f6638, receiver=0x4f36c60, e=0x66a88e0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/widgets/kernel/qapplication.cpp:3481
#37 0x00007fd4b250c609 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/include/QtCore/5.9.6/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:306
#38 0x00007fd4b250f0ab in QCoreApplication::sendEvent (event=0x66a88e0, receiver=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qcoreapplication.h:233
#39 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1706
#40 0x00007fd4b250f4f8 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1560
#41 0x00007fd4b25614b3 in postEventSourceDispatch (s=0x1e01f80) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:276
#42 0x00007fd4a9ff0d37 in g_main_dispatch (context=0x7fd4980016f0) at gmain.c:3165
#43 g_main_context_dispatch (context=0x7fd4980016f0) at gmain.c:3818
#44 0x00007fd4aa02c6a8 in g_main_context_iterate.isra.31.lto_priv.138 (context=0x7fd4980016f0, block=<optimized out>, dispatch=1) at gmain.c:3891
#45 0x00007fd4a9ff2dfc in g_main_context_iteration (context=0x7fd4980016f0, may_block=may_block@entry=1) at gmain.c:3952
#46 0x00007fd4b2560aa3 in QEventDispatcherGlib::processEvents (this=0x1e8b260, flags=...) at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:423
#47 0x00007fd4b250ad8b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/include/QtCore/../../src/corelib/global/qflags.h:71
#48 0x00007fd4b2513a4e in QCoreApplication::exec() () at /opt/local/var/lnxports/build/_opt_local_site-ports_aqua_qt5-kde-devel/qt5-kde-devel/work/qt-everywhere-opensource-src-5.9.6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1304
#49 0x000000000041418e in main (argc=<optimized out>, argv=<optimized out>) at /opt/local/var/lnxports/build/_opt_local_site-ports_kf5_kf5-kdevelop/kf5-kdevelop-devel/work/kf5-kdevelop-5/app/main.cpp:1000
Comment 2 Kevin Funk 2018-09-25 06:36:27 UTC
Seems to be duplicate of bug 399025 (same backtrace) -- Keeping bug 399025 open since that contains more information.

*** This bug has been marked as a duplicate of bug 399025 ***