Bug 428560 - Crash when adding env var to launch configuration
Summary: Crash when adding env var to launch configuration
Status: RESOLVED FIXED
Alias: None
Product: kdevelop
Classification: Applications
Component: general (show other bugs)
Version: 5.6.0
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: kdevelop-bugs-null
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2020-11-01 13:17 UTC by Christoph Haag
Modified: 2022-12-27 09:24 UTC (History)
2 users (show)

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


Attachments
New crash information added by DrKonqi (6.63 KB, text/plain)
2021-10-04 14:56 UTC, Igor Kushnir
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Christoph Haag 2020-11-01 13:17:50 UTC
Application: kdevelop (5.6.0)
 (Compiled from sources)
Qt Version: 5.15.1
Frameworks Version: 5.75.0
Operating System: Linux 5.9.2-zen1-1-zen x86_64
Windowing system: X11
Distribution: "Arch Linux"

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

Added an environment variable to a launch configuration and clicked ok.

5.6 branch at commit 3872adc806f3308b25c27f270d409dbcd59db986

-- Backtrace:
Application: KDevelop (kdevelop), signal: Segmentation fault

[KCrash Handler]
#4  0x00000000000000c1 in  ()
#5  0x00007f954a636f1b in KDevelop::LaunchConfigurationsModel::data(QModelIndex const&, int) const (this=<optimized out>, index=..., role=<optimized out>) at /home/chris/oldhome/build/kdevelop-git/src/kdevelop/kdevplatform/shell/launchconfigurationdialog.cpp:620
#6  0x00007f9549cbecbe in QStyledItemDelegate::initStyleOption(QStyleOptionViewItem*, QModelIndex const&) const () at /usr/lib/libQt5Widgets.so.5
#7  0x00007f9549cbdcd7 in QStyledItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () at /usr/lib/libQt5Widgets.so.5
#8  0x00007f9549d03370 in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () at /usr/lib/libQt5Widgets.so.5
#9  0x00007f9549d070d6 in QTreeView::drawTree(QPainter*, QRegion const&) const () at /usr/lib/libQt5Widgets.so.5
#10 0x00007f9549d0d8c6 in QTreeView::paintEvent(QPaintEvent*) () at /usr/lib/libQt5Widgets.so.5
#11 0x00007f9549a72b0e in QWidget::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#12 0x00007f9549b1df3f in QFrame::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#13 0x00007f9548d9fa43 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#14 0x00007f9549a31741 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#15 0x00007f9548d9fcda in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#16 0x00007f9549a6a8e8 in QWidgetPrivate::sendPaintEvent(QRegion const&) () at /usr/lib/libQt5Widgets.so.5
#17 0x00007f9549a6b15c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#18 0x00007f9549a6c520 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#19 0x00007f9549a6c336 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#20 0x00007f9549a6c336 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#21 0x00007f9549a6ae6d in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#22 0x00007f9549a6c520 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#23 0x00007f9549a6ae6d in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#24 0x00007f9549a6c520 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#25 0x00007f9549a6c336 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#26 0x00007f9549a6ae6d in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#27 0x00007f9549a6c520 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#28 0x00007f9549a6ae6d in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#29 0x00007f9549a6c520 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#30 0x00007f9549a6c336 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#31 0x00007f9549a6ae6d in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, QFlags<QWidgetPrivate::DrawWidgetFlag>, QPainter*, QWidgetRepaintManager*) () at /usr/lib/libQt5Widgets.so.5
#32 0x00007f9549a4231c in  () at /usr/lib/libQt5Widgets.so.5
#33 0x00007f9549a7325b in QWidget::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#34 0x00007f9549a31752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#35 0x00007f9548d9fcda in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#36 0x00007f9548da27d3 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5
#37 0x00007f9548df9304 in  () at /usr/lib/libQt5Core.so.5
#38 0x00007f95454f1914 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#39 0x00007f95455457d1 in  () at /usr/lib/libglib-2.0.so.0
#40 0x00007f95454f0121 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#41 0x00007f9548df8941 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#42 0x00007f9548d9e65c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#43 0x00007f9549c34f6a in QDialog::exec() () at /usr/lib/libQt5Widgets.so.5
#44 0x00007f954a60c7a4 in KDevelop::RunController::showConfigurationDialog() const (this=<optimized out>) at /home/chris/oldhome/build/kdevelop-git/src/kdevelop/kdevplatform/shell/runcontroller.cpp:580
#45 0x00007f9548dd7036 in  () at /usr/lib/libQt5Core.so.5
#46 0x00007f9549a2af63 in QAction::triggered(bool) () at /usr/lib/libQt5Widgets.so.5
#47 0x00007f9549a2d845 in QAction::activate(QAction::ActionEvent) () at /usr/lib/libQt5Widgets.so.5
#48 0x00007f9549baf17b in  () at /usr/lib/libQt5Widgets.so.5
#49 0x00007f9549bb68b2 in  () at /usr/lib/libQt5Widgets.so.5
#50 0x00007f9549a72b0e in QWidget::event(QEvent*) () at /usr/lib/libQt5Widgets.so.5
#51 0x00007f9549a31752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#52 0x00007f9549a3887b in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#53 0x00007f9548d9fcda in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#54 0x00007f9549a3787e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () at /usr/lib/libQt5Widgets.so.5
#55 0x00007f9549a8b7cf in  () at /usr/lib/libQt5Widgets.so.5
#56 0x00007f9549a8e63f in  () at /usr/lib/libQt5Widgets.so.5
#57 0x00007f9549a31752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#58 0x00007f9548d9fcda in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#59 0x00007f954925d4ac in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/libQt5Gui.so.5
#60 0x00007f9549232bac in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Gui.so.5
#61 0x00007f953588af9c in  () at /usr/lib/libQt5XcbQpa.so.5
#62 0x00007f95454f1914 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#63 0x00007f95455457d1 in  () at /usr/lib/libglib-2.0.so.0
#64 0x00007f95454f0121 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#65 0x00007f9548df8941 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#66 0x00007f9548d9e65c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#67 0x00007f9548da6af4 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#68 0x000055c8ea33a3c6 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/chris/oldhome/build/kdevelop-git/src/kdevelop/app/main.cpp:850
[Inferior 1 (process 812539) detached]

Possible duplicates by query: bug 352723, bug 339071, bug 324187, bug 317067, bug 316156.

Reported using DrKonqi
Comment 1 Igor Kushnir 2021-10-04 14:56:02 UTC
Created attachment 142143 [details]
New crash information added by DrKonqi

kdevelop (5.6.40) using Qt 5.15.2

- What I was doing when the application crashed:
Opened the Configure Environment Variables dialog from the Launch Configurations dialog. Updated the code of an open project via git command line while the dialogs were open. Added an environment variable to an environment profile of a non-current launch configuration and clicked OK.

-- Backtrace (Reduced):
#4  0x00007f1ab916318b in KDevelop::LaunchConfigurationsModel::data(QModelIndex const&, int) const (this=<optimized out>, index=..., role=<optimized out>) at /usr/src/debug/kdevelop/kdevplatform/shell/launchconfigurationdialog.cpp:620
#5  0x00007f1ab87ae722 in QStyledItemDelegate::initStyleOption(QStyleOptionViewItem*, QModelIndex const&) const () at /usr/lib/libQt5Widgets.so.5
#6  0x00007f1ab87ad3c1 in QStyledItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () at /usr/lib/libQt5Widgets.so.5
#7  0x00007f1ab87f6a00 in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () at /usr/lib/libQt5Widgets.so.5
#8  0x00007f1ab87fa974 in QTreeView::drawTree(QPainter*, QRegion const&) const () at /usr/lib/libQt5Widgets.so.5
Comment 2 Igor Kushnir 2022-12-27 09:24:53 UTC
Git commit 77e503c74a3ef5fbf3b163da4a0e71b6a9255bce by Igor Kushnir.
Committed on 27/12/2022 at 09:24.
Pushed by igorkushnir into branch 'master'.

RunController: ignore projectConfigurationChanged signal

No settings within the Configure Project dialog affect launch
configurations. So no need to reread the configs and recreate the
launches and their actions. I suppose project configuration did affect
launch configurations in the past, but I don't see this in current code.

Project target combobox on the native app config page and available
targets in suggestion submenus of "Add a new launch configuration"
button are populated when a Launch Configurations dialog is created
(each time it is shown).

Since 62ae1929c5a5d1a6a200a07579a4cca635cd9364 the
projectConfigurationChanged signal is also emitted when a CMake import
job finishes without error. This was done for the benefit of
CompilerProvider and is useless to RunController. The same argument
applies to emitting this signal when a Meson import job finishes without
error (the code has been copied from cmake plugin to meson plugin).

Recreating the launches and their actions caused a crash when a folder
that contained a target was excluded (filtered out) from the project and
the Launch Configurations dialog with this target as the Project target
of an existing configuration was shown before the CMake import job
finished:
    #0 KDevelop::LaunchConfigurationsModel::data() at kdevelop/kdevplatform/shell/launchconfigurationdialog.cpp:611
    #1 QStyledItemDelegate::initStyleOption(QStyleOptionViewItem*, QModelIndex const&) const() at /usr/lib/libQt5Widgets.so.5
    #2 QStyledItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const() at /usr/lib/libQt5Widgets.so.5
    #3 QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const() at /usr/lib/libQt5Widgets.so.5
    #4 QTreeView::drawTree(QPainter*, QRegion const&) const() at /usr/lib/libQt5Widgets.so.5
    #5 QTreeView::paintEvent(QPaintEvent*)() at /usr/lib/libQt5Widgets.so.5
FIXED-IN: 5.11.230400

M  +0    -8    kdevplatform/shell/runcontroller.cpp
M  +0    -1    kdevplatform/shell/runcontroller.h

https://invent.kde.org/kdevelop/kdevelop/commit/77e503c74a3ef5fbf3b163da4a0e71b6a9255bce