Bug 392564 - Kdevelop crashes when clicking "Stop All"
Summary: Kdevelop crashes when clicking "Stop All"
Status: RESOLVED FIXED
Alias: None
Product: kdevplatform
Classification: Developer tools
Component: shell (show other bugs)
Version: 5.2.1
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: kdevelop-bugs-null
URL: https://phabricator.kde.org/R32:71f7b...
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2018-03-31 14:28 UTC by Gerard
Modified: 2018-04-07 17:32 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In: 5.2.2


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gerard 2018-03-31 14:28:45 UTC
Application: kdevelop (5.2.1)

Qt Version: 5.10.1
Frameworks Version: 5.44.0
Operating System: Linux 4.15.14-1-zen x86_64
Distribution (Platform): Archlinux Packages

-- Information about the crash:
I had a Python script running and when I click "Stop All" Kdevelop sometimes crashes.

The crash can be reproduced sometimes.

-- Backtrace:
Application: KDevelop (kdevelop), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f682bae7dc0 (LWP 1548))]

Thread 14 (Thread 0x7f67b6ffd700 (LWP 1647)):
#0  0x00007f68219073bd in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f6828836fac in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib/libQt5Core.so.5
#2  0x00007f681d31552f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#3  0x00007f681d319719 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#4  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#5  0x00007f681d317583 in ThreadWeaver::Thread::run() () at /usr/lib/libKF5ThreadWeaver.so.5
#6  0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#7  0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#8  0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 13 (Thread 0x7f67b77fe700 (LWP 1646)):
#0  0x00007f68219073bd in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f6828836fac in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib/libQt5Core.so.5
#2  0x00007f681d31552f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#3  0x00007f681d319719 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#4  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#5  0x00007f681d319772 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#6  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#7  0x00007f681d319772 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#8  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#9  0x00007f681d317583 in ThreadWeaver::Thread::run() () at /usr/lib/libKF5ThreadWeaver.so.5
#10 0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#11 0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#12 0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 12 (Thread 0x7f67b7fff700 (LWP 1645)):
#0  0x00007f68219073bd in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f6828836fac in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib/libQt5Core.so.5
#2  0x00007f681d31552f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#3  0x00007f681d319719 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#4  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#5  0x00007f681d319772 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#6  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#7  0x00007f681d317583 in ThreadWeaver::Thread::run() () at /usr/lib/libKF5ThreadWeaver.so.5
#8  0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#9  0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#10 0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 11 (Thread 0x7f67c492b700 (LWP 1644)):
#0  0x00007f68219073bd in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f6828836fac in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib/libQt5Core.so.5
#2  0x00007f681d31552f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#3  0x00007f681d319719 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#4  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#5  0x00007f681d319772 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#6  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#7  0x00007f681d319772 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#8  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#9  0x00007f681d317583 in ThreadWeaver::Thread::run() () at /usr/lib/libKF5ThreadWeaver.so.5
#10 0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#11 0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#12 0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 10 (Thread 0x7f67c512c700 (LWP 1643)):
#0  0x00007f68219073bd in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f6828836fac in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib/libQt5Core.so.5
#2  0x00007f681d31552f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#3  0x00007f681d319719 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#4  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#5  0x00007f681d319772 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#6  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#7  0x00007f681d319772 in  () at /usr/lib/libKF5ThreadWeaver.so.5
#8  0x00007f681d3146fd in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib/libKF5ThreadWeaver.so.5
#9  0x00007f681d317583 in ThreadWeaver::Thread::run() () at /usr/lib/libKF5ThreadWeaver.so.5
#10 0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#11 0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#12 0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 9 (Thread 0x7f67d3fff700 (LWP 1642)):
#0  0x00007f682813397b in poll () at /usr/lib/libc.so.6
#1  0x00007f681ed02613 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f681ed0272e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#3  0x00007f6828a7f264 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#4  0x00007f6828a2132b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#5  0x00007f682883072e in QThread::exec() () at /usr/lib/libQt5Core.so.5
#6  0x00007f682635f749 in  () at /usr/lib/libKDevPlatformLanguage.so.52
#7  0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#8  0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#9  0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 8 (Thread 0x7f67d37fe700 (LWP 1570)):
#0  0x00007f682813397b in poll () at /usr/lib/libc.so.6
#1  0x00007f681ed02613 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f681ed0272e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#3  0x00007f6828a7f264 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#4  0x00007f6828a2132b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#5  0x00007f682883072e in QThread::exec() () at /usr/lib/libQt5Core.so.5
#6  0x00007f67d1065b6a in  () at /usr/lib/qt/qml/QtQuick/XmlListModel/libqmlxmllistmodelplugin.so
#7  0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#8  0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#9  0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 7 (Thread 0x7f67d919f700 (LWP 1560)):
#0  0x00007f681ed495b4 in g_mutex_unlock () at /usr/lib/libglib-2.0.so.0
#1  0x00007f681ed01b29 in g_main_context_prepare () at /usr/lib/libglib-2.0.so.0
#2  0x00007f681ed0253e in  () at /usr/lib/libglib-2.0.so.0
#3  0x00007f681ed0272e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#4  0x00007f6828a7f264 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#5  0x00007f6828a2132b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#6  0x00007f682883072e in QThread::exec() () at /usr/lib/libQt5Core.so.5
#7  0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#8  0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#9  0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 6 (Thread 0x7f67db38e700 (LWP 1559)):
#0  0x00007f682812f3d8 in read () at /usr/lib/libc.so.6
#1  0x00007f681ed48191 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f681ed020e8 in g_main_context_check () at /usr/lib/libglib-2.0.so.0
#3  0x00007f681ed025b6 in  () at /usr/lib/libglib-2.0.so.0
#4  0x00007f681ed0272e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#5  0x00007f6828a7f264 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#6  0x00007f6828a2132b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#7  0x00007f682883072e in QThread::exec() () at /usr/lib/libQt5Core.so.5
#8  0x00007f6821382379 in  () at /usr/lib/libQt5Qml.so.5
#9  0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#10 0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#11 0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 5 (Thread 0x7f67dfdaf700 (LWP 1553)):
#0  0x00007f68219073bd in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f68284b25bd in __gthread_cond_wait (__mutex=<optimized out>, __cond=<optimized out>) at /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:864
#2  0x00007f68284b25bd in std::condition_variable::wait(std::unique_lock<std::mutex>&) (this=<optimized out>, __lock=...) at /build/gcc/src/gcc/libstdc++-v3/src/c++11/condition_variable.cc:53
#3  0x00007f67e750c379 in  () at /usr/lib/libQt5WebKit.so.5
#4  0x00007f67e750c4c9 in  () at /usr/lib/libQt5WebKit.so.5
#5  0x00007f68284b8b9f in std::execute_native_thread_routine(void*) (__p=0x56092eff0770) at /build/gcc/src/gcc/libstdc++-v3/src/c++11/thread.cc:83
#6  0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#7  0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 4 (Thread 0x7f67ef5b7700 (LWP 1551)):
#0  0x00007f682812f3d8 in read () at /usr/lib/libc.so.6
#1  0x00007f681ed48191 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f681ed020e8 in g_main_context_check () at /usr/lib/libglib-2.0.so.0
#3  0x00007f681ed025b6 in  () at /usr/lib/libglib-2.0.so.0
#4  0x00007f681ed0272e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#5  0x00007f6828a7f264 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#6  0x00007f6828a2132b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#7  0x00007f682883072e in QThread::exec() () at /usr/lib/libQt5Core.so.5
#8  0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#9  0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#10 0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 3 (Thread 0x7f67f0207700 (LWP 1550)):
#0  0x00007ffd1d9f2969 in  ()
#1  0x00007ffd1d9f2c20 in clock_gettime ()
#2  0x00007f682814b746 in clock_gettime () at /usr/lib/libc.so.6
#3  0x00007f6828a7eb52 in  () at /usr/lib/libQt5Core.so.5
#4  0x00007f6828a7d2ea in QTimerInfoList::updateCurrentTime() () at /usr/lib/libQt5Core.so.5
#5  0x00007f6828a7d8c6 in QTimerInfoList::timerWait(timespec&) () at /usr/lib/libQt5Core.so.5
#6  0x00007f6828a7efaf in  () at /usr/lib/libQt5Core.so.5
#7  0x00007f681ed01b39 in g_main_context_prepare () at /usr/lib/libglib-2.0.so.0
#8  0x00007f681ed0253e in  () at /usr/lib/libglib-2.0.so.0
#9  0x00007f681ed0272e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#10 0x00007f6828a7f264 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#11 0x00007f6828a2132b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#12 0x00007f682883072e in QThread::exec() () at /usr/lib/libQt5Core.so.5
#13 0x00007f6826252af1 in  () at /usr/lib/libKDevPlatformLanguage.so.52
#14 0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#15 0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#16 0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 2 (Thread 0x7f67fa65a700 (LWP 1549)):
#0  0x00007f682813397b in poll () at /usr/lib/libc.so.6
#1  0x00007f681ed02613 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f681ed0272e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#3  0x00007f6828a7f264 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#4  0x00007f6828a2132b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#5  0x00007f682883072e in QThread::exec() () at /usr/lib/libQt5Core.so.5
#6  0x00007f682a7c5416 in  () at /usr/lib/libQt5DBus.so.5
#7  0x00007f6828835acd in  () at /usr/lib/libQt5Core.so.5
#8  0x00007f682190108c in start_thread () at /usr/lib/libpthread.so.0
#9  0x00007f682813de7f in clone () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7f682bae7dc0 (LWP 1548)):
[KCrash Handler]
#6  0x00007f6828920918 in QDebug::putString(QChar const*, unsigned long) () at /usr/lib/libQt5Core.so.5
#7  0x00007f682b6b581d in  () at /usr/lib/libKDevPlatformShell.so.52
#8  0x00007f6828a5373f in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/libQt5Core.so.5
#9  0x00007f682899b6b2 in QProcess::errorOccurred(QProcess::ProcessError) () at /usr/lib/libQt5Core.so.5
#10 0x00007f68289a26f1 in  () at /usr/lib/libQt5Core.so.5
#11 0x00007f68289a7995 in  () at /usr/lib/libQt5Core.so.5
#12 0x00007f682899cecc in QProcess::waitForFinished(int) () at /usr/lib/libQt5Core.so.5
#13 0x00007f682899d852 in QProcess::~QProcess() () at /usr/lib/libQt5Core.so.5
#14 0x00007f6829edc87a in KProcess::~KProcess() () at /usr/lib/libKF5CoreAddons.so.5
#15 0x00007f6828a5115d in QObjectPrivate::deleteChildren() () at /usr/lib/libQt5Core.so.5
#16 0x00007f6828a5ad2c in QObject::~QObject() () at /usr/lib/libQt5Core.so.5
#17 0x00007f67ef7ff804 in  () at /usr/lib/qt/plugins/kdevplatform/30/kdevexecutescript.so
#18 0x00007f6828a54081 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5
#19 0x00007f68297a0fec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#20 0x00007f68297a89c6 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#21 0x00007f6828a22cf0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#22 0x00007f6828a25956 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5
#23 0x00007f6828a7fc54 in  () at /usr/lib/libQt5Core.so.5
#24 0x00007f681ed02458 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#25 0x00007f681ed026a1 in  () at /usr/lib/libglib-2.0.so.0
#26 0x00007f681ed0272e in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#27 0x00007f6828a7f241 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#28 0x00007f68003264e2 in  () at /usr/lib/libQt5WaylandClient.so.5
#29 0x00007f6828a2132b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#30 0x00007f6828a2a728 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#31 0x000056092cd649e4 in  ()
#32 0x00007f6828068f4a in __libc_start_main () at /usr/lib/libc.so.6
#33 0x000056092cd64f9a in _start ()

Reported using DrKonqi
Comment 1 Kevin Funk 2018-04-05 05:48:29 UTC
Hm, I don't see anything wrong in the code in kdevplatform here.

The location where the crash is happening is likely:
```
#if QT_VERSION < 0x050600
        connect(process, static_cast<void(QProcess::*)(QProcess::ProcessError)>(&QProcess::error),
#else
        connect(process, &QProcess::errorOccurred,
#endif
            this, [](QProcess::ProcessError error) {
            qCWarning(SHELL) << "process finished with error:" << error;
        }); 
```

Specifically, this line seems to cause a crash:
> qCWarning(SHELL) << "process finished with error:" << error;

But: I don't see how `error` can be corrupted, also given that the QProcess instance is still fully intact at that time...
Comment 2 Kevin Funk 2018-04-05 05:51:00 UTC
Ah, that code changed recently.

Issue fixed by:
  https://phabricator.kde.org/R32:71f7bed96dd0954635c2793c681ba8a5da9ba318

Thus fixed in 5.2.2 (to be released).
Comment 3 Gerard 2018-04-07 17:32:39 UTC
Well that's good to know.