After a recent system update KDevelop crashes when asked to start a debugging session. STEPS TO REPRODUCE 1. Load any session 2. Start debugging ACTUAL RESULT Thread 1 "kdevelop" received signal SIGFPE, Arithmetic exception. 0x00007ffff4537de1 in Sublime::IdealButtonBarLayout::doVerticalLayout (this=<optimized out>, rect=..., updateGeometry=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/ideallayout.cpp:223 223 shrinkedHeight = maximumHeight + surplus / (_items.size() - smallItemCount); (gdb) bt #0 0x00007ffff4537de1 in Sublime::IdealButtonBarLayout::doVerticalLayout (this=<optimized out>, rect=..., updateGeometry=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/ideallayout.cpp:223 #1 0x00007ffff4537578 in Sublime::IdealButtonBarLayout::minimumSize (this=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/ideallayout.cpp:81 #2 0x00007ffff68224ad in QLayout::totalMinimumSize() const () from /usr/lib64/libQt5Widgets.so.5 #3 0x00007ffff681f954 in QWidgetItem::sizeHint() const () from /usr/lib64/libQt5Widgets.so.5 #4 0x00007ffff6916934 in QToolBarLayout::expandedSize(QSize const&) const () from /usr/lib64/libQt5Widgets.so.5 #5 0x00007ffff69181fa in QToolBarLayout::checkUsePopupMenu() () from /usr/lib64/libQt5Widgets.so.5 #6 0x00007ffff69184b8 in QToolBarAreaLayoutInfo::fitLayout() () from /usr/lib64/libQt5Widgets.so.5 #7 0x00007ffff68c38de in QMainWindowLayoutState::fitLayout() () from /usr/lib64/libQt5Widgets.so.5 #8 0x00007ffff68ca11f in QMainWindowLayout::setGeometry(QRect const&) () from /usr/lib64/libQt5Widgets.so.5 #9 0x00007ffff682555c in QLayoutPrivate::doResize(QSize const&) () from /usr/lib64/libQt5Widgets.so.5 #10 0x00007ffff6b5e5af in QLayout::activate() () from /usr/lib64/libQt5Widgets.so.5 #11 0x00007ffff689d547 in QWidget::setVisible(bool) () from /usr/lib64/libQt5Widgets.so.5 #12 0x00007ffff4532965 in Sublime::IdealController::showDockWidget (this=<optimized out>, dock=<optimized out>, show=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/idealcontroller.cpp:268 #13 0x00007ffff453e03d in Sublime::IdealButtonBarWidget::showWidget (this=<optimized out>, action=<optimized out>, checked=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/idealbuttonbarwidget.cpp:350 #14 0x00007ffff453de77 in Sublime::IdealButtonBarWidget::showWidget (this=<optimized out>, checked=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/idealbuttonbarwidget.cpp:325 #15 0x00007ffff453ef15 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<bool>, void, void (Sublime::IdealButtonBarWidget::*)(bool)>::call ( f=<optimized out>, o=<optimized out>, arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:134 #16 0x00007ffff453ed38 in QtPrivate::FunctionPointer<void (Sublime::IdealButtonBarWidget::*)(bool)>::call<QtPrivate::List<bool>, void> (f=<optimized out>, o=<optimized out>, arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:167 #17 0x00007ffff453eb4e in QtPrivate::QSlotObject<void (Sublime::IdealButtonBarWidget::*)(bool), QtPrivate::List<bool>, void>::impl (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:396 #18 0x00007ffff5efe73e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5 #19 0x00007ffff6806d92 in QAction::toggled(bool) () from /usr/lib64/libQt5Widgets.so.5 #20 0x00007ffff68158ce in QAction::setChecked(bool) () from /usr/lib64/libQt5Widgets.so.5 #21 0x00007ffff453288d in Sublime::IdealController::raiseView (this=<optimized out>, view=<optimized out>, mode=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/idealcontroller.cpp:248 #22 0x00007ffff452727a in Sublime::MainWindowPrivate::raiseToolView (this=<optimized out>, view=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/mainwindow_p.cpp:582 #23 0x00007ffff4523044 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Sublime::View*>, void, void (Sublime::MainWindowPrivate::*)(Sublime::View*)>::call (f=<optimized out>, o=<optimized out>, arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:134 #24 0x00007ffff45228f5 in QtPrivate::FunctionPointer<void (Sublime::MainWindowPrivate::*)(Sublime::View*)>::call<QtPrivate::List<Sublime::View*>, void> ( f=<optimized out>, o=<optimized out>, arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:167 #25 0x00007ffff452204c in QtPrivate::QSlotObject<void (Sublime::MainWindowPrivate::*)(Sublime::View*), QtPrivate::List<Sublime::View*>, void>::impl ( which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:396 #26 0x00007ffff5efe73e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5 #27 0x00007ffff45401d6 in Sublime::Area::requestToolViewRaise (this=<optimized out>, _t1=<optimized out>) at kdevplatform/sublime/KDevPlatformSublime_autogen/EWIEGA46WW/moc_area.cpp:305 #28 0x00007ffff44ff431 in Sublime::Area::raiseToolView (this=<optimized out>, toolView=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/area.cpp:239 #29 0x00007ffff785c8ff in KDevelop::UiController::raiseToolView (this=<optimized out>, view=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/shell/uicontroller.cpp:349 #30 0x00007ffff7863abe in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Sublime::View*>, void, void (KDevelop::UiController::*)(Sublime::View*)>::call (f=<optimized out>, o=<optimized out>, arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:134 #31 0x00007ffff78632c7 in QtPrivate::FunctionPointer<void (KDevelop::UiController::*)(Sublime::View*)>::call<QtPrivate::List<Sublime::View*>, void> (f=<optimized out>, o=<optimized out>, arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:167 #32 0x00007ffff786272c in QtPrivate::QSlotObject<void (KDevelop::UiController::*)(Sublime::View*), QtPrivate::List<Sublime::View*>, void>::impl (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:396 #33 0x00007ffff5efe73e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5 #34 0x00007ffff452ed20 in Sublime::View::raise (this=<optimized out>, _t1=<optimized out>) at kdevplatform/sublime/KDevPlatformSublime_autogen/include/moc_view.cpp:184 #35 0x00007ffff452e6bb in Sublime::View::requestRaise (this=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/sublime/view.cpp:101 #36 0x00007fffb983586e in StandardOutputView::raiseOutput (this=0x555557225ee0, outputId=1) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/plugins/standardoutputview/standardoutputview.cpp:194 #37 0x00007ffff0e22720 in KDevelop::OutputJob::startOutput (this=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/outputview/outputjob.cpp:98 #38 0x00007fffb0354090 in KDevMI::MIDebugJob::start (this=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/plugins/debuggercommon/midebugjobs.cpp:117 #39 0x00007ffff7f58da9 in KDevelop::ExecuteCompositeJobPrivate::startNextJob (this=<optimized out>, job=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/util/executecompositejob.cpp:60 #40 0x00007ffff7f58e12 in KDevelop::ExecuteCompositeJob::start (this=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/util/executecompositejob.cpp:66 #41 0x00007ffff78acf10 in KDevelop::RunController::registerJob (this=<optimized out>, job=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/shell/runcontroller.cpp:607 #42 0x00007ffff78aadeb in KDevelop::RunController::execute (this=<optimized out>, runMode=..., launch=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/shell/runcontroller.cpp:420 #43 0x00007ffff78ae733 in KDevelop::RunController::executeDefaultLaunch (this=<optimized out>, runMode=...) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/shell/runcontroller.cpp:875 #44 0x00007ffff78e897c in KDevelop::DebugController::run (this=<optimized out>) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/kdevplatform/shell/debugcontroller.cpp:499 #45 0x00007ffff78ea914 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KDevelop::DebugController::*)()>::call(void (KDevelop::DebugController::*)(), KDevelop::DebugController*, void**) (f=<optimized out>, o=<optimized out>, arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:134 #46 0x00007ffff78ea5ad in QtPrivate::FunctionPointer<void (KDevelop::DebugController::*)()>::call<QtPrivate::List<>, void>(void (KDevelop::DebugController::*)(), KDevelop::DebugController*, void**) (f=<optimized out>, o=<optimized out>, arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:167 #47 0x00007ffff78ea07a in QtPrivate::QSlotObject<void (KDevelop::DebugController::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:396 #48 0x00007ffff5efe73e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5 #49 0x00007ffff6806e12 in QAction::triggered(bool) () from /usr/lib64/libQt5Widgets.so.5 #50 0x00007ffff6815eab in QAction::activate(QAction::ActionEvent) () from /usr/lib64/libQt5Widgets.so.5 #51 0x00007ffff6815f70 in QAction::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #52 0x00007ffff6825701 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #53 0x00007ffff6837930 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5 #54 0x00007ffff5ed4aa0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5 #55 0x00007ffff658ad8b in QShortcutMap::dispatchEvent(QKeyEvent*) () from /usr/lib64/libQt5Gui.so.5 #56 0x00007ffff658afef in QShortcutMap::tryShortcut(QKeyEvent*) () from /usr/lib64/libQt5Gui.so.5 #57 0x00007ffff65c7a71 in QWindowSystemInterface::handleShortcutEvent(QWindow*, unsigned long, int, QFlags<Qt::KeyboardModifier>, unsigned int, unsigned int, unsigned int, QString const&, bool, unsigned short) () from /usr/lib64/libQt5Gui.so.5 #58 0x00007ffff659f15d in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () from /usr/lib64/libQt5Gui.so.5 #59 0x00007ffff65b81f5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib64/libQt5Gui.so.5 #60 0x00007ffff65b843a in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Gui.so.5 #61 0x00007fffd311487b in QPAEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5XcbQpa.so.5 #62 0x00007ffff5ed3773 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5 #63 0x00007ffff5edb882 in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5 #64 0x0000555555568bd2 in main (argc=1, argv=0x7fffffffcc08) at /usr/src/debug/dev-util/kdevelop-9999/kdevelop-9999/app/main.cpp:849 SOFTWARE VERSIONS KDE Frameworks 5.51.0 Qt 5.11.1 (built against 5.11.1)
a debug print at that point outputs: surplus = 0 , _items.size() = 6 , smallItemCount = 0 surplus = 0 , _items.size() = 4 , smallItemCount = 0 surplus = 0 , _items.size() = 6 , smallItemCount = 0 surplus = 0 , _items.size() = 4 , smallItemCount = 0 surplus = 0 , _items.size() = 6 , smallItemCount = 0 surplus = 0 , _items.size() = 4 , smallItemCount = 0 surplus = 0 , _items.size() = 6 , smallItemCount = 0 surplus = 0 , _items.size() = 4 , smallItemCount = 0 surplus = 0 , _items.size() = 6 , smallItemCount = 0 surplus = 0 , _items.size() = 4 , smallItemCount = 0 [Detaching after fork from child process 32142] surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 kdevplatform.shell: Broken text-document: QUrl("file:///tmp/kdevelop_sBJvnJ.patch") surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 3 , smallItemCount = 2 surplus = 0 , _items.size() = 2 , smallItemCount = 2
See https://phabricator.kde.org/D15625 What widget style are you using?
QtCurve
Like me. In a way I would have preferred a different answer just to be able to exclude the widget style as somehow responsible. @Yichao, can you have a look and check if the issue described here and in D15625 is indeed NOT due to a bug in QtCurve?
For the record, applying D15625 helps me to avoid the crash.
*** Bug 398790 has been marked as a duplicate of this bug. ***
*** Bug 399057 has been marked as a duplicate of this bug. ***
Git commit 7169b3ac931c88783688702ef6013d3d536c68f4 by Amish Naidu. Committed on 27/09/2018 at 17:12. Pushed by anaidu into branch '5.3'. Sublime: Fix crash when changing areas Summary: Fixes regression introduced in D15450 by making IdealButtonBarLayout derive from QBoxLayout instead of QLayout and thus delete most operations to Qt instead of manually handling them, removing the bugged implementation. Added minimumSizeHint in IdealToolButton to prevent it from being resized to zero. IdealButtonBarLayout is now a child layout for vertical bars as well, the top level layout is stretched and allows for context menu. Reviewers: #kdevelop, kossebau, rjvbb Reviewed By: #kdevelop, kossebau, rjvbb Subscribers: kossebau, rjvbb, kdevelop-devel Tags: #kdevelop Differential Revision: https://phabricator.kde.org/D15625 M +7 -3 kdevplatform/sublime/idealbuttonbarwidget.cpp M +24 -247 kdevplatform/sublime/ideallayout.cpp M +5 -30 kdevplatform/sublime/ideallayout.h M +40 -0 kdevplatform/sublime/idealtoolbutton.cpp M +2 -0 kdevplatform/sublime/idealtoolbutton.h https://commits.kde.org/kdevelop/7169b3ac931c88783688702ef6013d3d536c68f4