Bug 399025 - KDevelop crashes when starting debugging
Summary: KDevelop crashes when starting debugging
Status: RESOLVED FIXED
Alias: None
Product: kdevplatform
Classification: Developer tools
Component: sublime (show other bugs)
Version: git master
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: kdevelop-bugs-null
URL:
Keywords:
: 398790 399057 (view as bug list)
Depends on:
Blocks:
 
Reported: 2018-09-24 15:27 UTC by Eugene Shalygin
Modified: 2018-09-27 17:14 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Eugene Shalygin 2018-09-24 15:27:55 UTC
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)
Comment 1 Eugene Shalygin 2018-09-24 15:44:01 UTC
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
Comment 2 RJVB 2018-09-24 16:04:39 UTC
See https://phabricator.kde.org/D15625

What widget style are you using?
Comment 3 Eugene Shalygin 2018-09-24 16:08:32 UTC
QtCurve
Comment 4 RJVB 2018-09-24 16:40:24 UTC
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?
Comment 5 Eugene Shalygin 2018-09-24 16:43:00 UTC
For the record, applying D15625 helps me to avoid the crash.
Comment 6 Kevin Funk 2018-09-25 06:36:27 UTC
*** Bug 398790 has been marked as a duplicate of this bug. ***
Comment 7 Amish Naidu 2018-09-25 15:06:49 UTC
*** Bug 399057 has been marked as a duplicate of this bug. ***
Comment 8 Amish Naidu 2018-09-27 17:14:09 UTC
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