[Differential] [Request, 10 lines] D866: ContextBrowserView: Fix deadlock
kfunk (Kevin Funk)
noreply at phabricator.kde.org
Wed Jan 27 08:55:09 UTC 2016
kfunk created this revision.
Herald added a subscriber: kdevelop-devel.
REVISION SUMMARY
This happens everytime the context browser view is open at startup, and
KDevelop's background parser starts jobs.
Arguably, we should never block indefinitely in a non-user initiated event (here:
QWidget::showEvent). So let's give up after a timeout.
0 0x00007f16e48edc4d in nanosleep () at
../sysdeps/unix/syscall-template.S:81
1 0x00007f16e55e407d in qt_nanosleep (amount=...) at
tools/qelapsedtimer_unix.cpp:185
2 0x00007f16e5532ea4 in QThread::usleep (usecs=<optimized out>) at
thread/qthread_unix.cpp:475
3 0x00007f16e2dccf75 in KDevelop::DUChainLock::lockForRead(unsigned
int) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformLanguage.so.10
4 0x00007f16e2dcd3bb in KDevelop::DUChainReadLocker::lock() () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformLanguage.so.10
5 0x00007f16e2dcd35c in
KDevelop::DUChainReadLocker::DUChainReadLocker(KDevelop::DUChainLock*,
unsigned int) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformLanguage.
so.10
6 0x00007f16bc03c94b in ContextBrowserView::showEvent(QShowEvent*) ()
from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/plugins/kdevplatform/24/kdevcontextbrowser.so
7 0x00007f16e61a59f8 in QWidget::event (this=0x5947810,
event=0x7ffed94335e0) at kernel/qwidget.cpp:9044
8 0x00007f16bc03c907 in ContextBrowserView::event(QEvent*) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/plugins/kdevplatform/24/kdevcontextbrowser.so
9 0x00007f16e61629dc in QApplicationPrivate::notify_helper
(this=this at entry=0xd1f7f0, receiver=receiver at entry=0x5947810,
e=e at entry=0x7ffed94335e0) at kernel/qapplication.cpp:3716
10 0x00007f16e6167ea6 in QApplication::notify (this=0x7ffed9436e90,
receiver=0x5947810, e=0x7ffed94335e0) at kernel/qapplication.cpp:3499
11 0x00007f16e5714d7b in QCoreApplication::notifyInternal
(this=0x7ffed9436e90, receiver=receiver at entry=0x5947810,
event=event at entry=0x7ffed94335e0) at kernel/qcoreapplication.cpp:965
12 0x00007f16e61a2506 in QCoreApplication::sendEvent
(event=0x7ffed94335e0, receiver=0x5947810) at
../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:224
13 QWidgetPrivate::show_helper (this=0x59478b0) at
kernel/qwidget.cpp:7822
14 0x00007f16e61a20d6 in QWidgetPrivate::show_recursive
(this=<optimized out>) at kernel/qwidget.cpp:7693
15 0x00007f16e61a21f6 in QWidgetPrivate::showChildren
(this=this at entry=0x5b620e0, spontaneous=spontaneous at entry=false) at
kernel/qwidget.cpp:8189
16 0x00007f16e61a228f in QWidgetPrivate::show_helper
(this=this at entry=0x5b620e0) at kernel/qwidget.cpp:7769
17 0x00007f16e61a5085 in QWidget::setVisible (this=0x5b62080,
visible=<optimized out>) at kernel/qwidget.cpp:8108
18 0x00007f16e62901e8 in QDockWidgetPrivate::setWindowState
(this=this at entry=0x5b620e0, floating=floating at entry=false,
unplug=unplug at entry=false, rect=...) at widgets/qdockwidget.cpp:1046
19 0x00007f16e6290fc1 in QDockWidget::setFloating
(this=this at entry=0x5b62080, floating=floating at entry=false) at
widgets/qdockwidget.cpp:1269
20 0x00007f16e629ef75 in QDockAreaLayoutInfo::restoreState
(this=<optimized out>, stream=..., widgets=<empty>,
testing=testing at entry=false) at widgets/qdockarealayout.cpp:1979
21 0x00007f16e629f259 in QDockAreaLayout::restoreState
(this=this at entry=0x137ff28, stream=..., _dockwidgets=Python Exception
<class 'AttributeError'> 'NoneType' object has no attribute 'fi
nd':
, testing=testing at entry=false) at widgets/qdockarealayout.cpp:2320
22 0x00007f16e62c075a in QMainWindowLayoutState::restoreState
(this=this at entry=0x137fe50, _stream=..., oldState=...) at
widgets/qmainwindowlayout.cpp:685
23 0x00007f16e62c1e11 in QMainWindowLayout::restoreState
(this=0x137fe30, stream=...) at widgets/qmainwindowlayout.cpp:1924
24 0x00007f16e62bad6d in QMainWindow::restoreState
(this=this at entry=0x1216940,
state="\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\003\002\000\000\000\0
04\000\000\000\030\000C\000l\000a\000s\000s\000e\000s\000_\000c\000o\000d\000e\000\000\000\000C\000\000\000\000\000\000\001\000\000\003\000\000\000\034\000D\000o\000c\000u\000m\000e\000n\00
0t\000s\000_\000c\000o\000d\000e\000\000\000\002T\000\000\000\000\000\000l\001\000\000\003\000\000\000\036\000F\000i\000l\000e\000s\000y\000s\000t\000e\000m\000_\000c\000o\000d\000e\000\000
\000\000C\000\000\001\000\000\000b\001\000\000\003\000\000\000\032\000P\000r\000o\000j\000e\000c\000t\000s"...
{...}, version=version at entry=0) at widgets/qmainwindow.cpp:1281
===============================================================
25 0x00007f16e8f08d11 in KMainWindow::applyMainWindowSettings
(this=this at entry=0x1216940, cg=...) at ../../src/kmainwindow.cpp:671
26 0x00007f16e8f41fd2 in KXmlGuiWindow::applyMainWindowSettings
(this=0x1216940, config=...) at ../../src/kxmlguiwindow.cpp:374
27 0x00007f16ea95d6b9 in
KDevelop::MainWindow::applyMainWindowSettings(KConfigGroup const&) ()
from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
28 0x00007f16e8f41fa1 in KXmlGuiWindow::finalizeGUI (this=0x1216940) at
../../src/kxmlguiwindow.cpp:367
29 0x00007f16e8f354f3 in KXMLGUIFactory::addClient (this=0x11ffc10,
client=0x191ced0) at ../../src/kxmlguifactory.cpp:301
30 0x00007f16ea967a5f in
KDevelop::MainWindowPrivate::addPlugin(KDevelop::IPlugin*) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
31 0x00007f16ea965aae in
QtPrivate::FunctorCall<QtPrivate::IndexesList<0>,
QtPrivate::List<KDevelop::IPlugin*>, void, void
(KDevelop::MainWindowPrivate::*)(KDevelop::IPlugin*)>::call(void
(KDevelop::MainWindowPrivate::*)(KDevelop::IPlugin*),
KDevelop::MainWindowPrivate*, void**) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
32 0x00007f16ea965a10 in void QtPrivate::FunctionPointer<void
(KDevelop::MainWindowPrivate::*)(KDevelop::IPlugin*)>::call<QtPrivate::List<KDevelop::IPlugin*>,
void>(void (KDevelop::MainWin
dowPrivate::*)(KDevelop::IPlugin*), KDevelop::MainWindowPrivate*,
void**) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
33 0x00007f16ea965938 in QtPrivate::QSlotObject<void
(KDevelop::MainWindowPrivate::*)(KDevelop::IPlugin*),
QtPrivate::List<KDevelop::IPlugin*>, void>::impl(int,
QtPrivate::QSlotObjectBase*
, QObject*, void**, bool*) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
34 0x00007f16e5743777 in QtPrivate::QSlotObjectBase::call
(a=0x7ffed94342a0, r=0x13e3d10, this=<optimized out>) at
../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:124
35 QMetaObject::activate (sender=0x12147d0, signalOffset=<optimized
out>, local_signal_index=<optimized out>, argv=<optimized out>) at
kernel/qobject.cpp:3698
36 0x00007f16eabbbdaf in
KDevelop::IPluginController::pluginLoaded(KDevelop::IPlugin*) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformInterfaces.so.10
37 0x00007f16ea97247e in
KDevelop::PluginController::loadPluginInternal(QString const&) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
38 0x00007f16ea976004 in
KDevelop::PluginController::allPluginsForExtension(QString const&,
QMap<QString, QVariant> const&)::$_8::operator()(KPluginMetaData const&)
const () from /home/kfu
nk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
39 0x00007f16ea974825 in void
KDevelop::PluginControllerPrivate::foreachEnabledPlugin<KDevelop::PluginController::allPluginsForExtension(QString
const&, QMap<QString, QVariant> const&)::$_
8>(KDevelop::PluginController::allPluginsForExtension(QString const&,
QMap<QString, QVariant> const&)::$_8, QString const&, QMap<QString,
QVariant> const&, QString const&) () from /home/kfu
nk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
40 0x00007f16ea97457e in
KDevelop::PluginController::allPluginsForExtension(QString const&,
QMap<QString, QVariant> const&) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPla
tformShell.so.10
41 0x00007f16ea9d2745 in
KDevelop::LanguageController::languagesForMimetype(QString const&) ()
from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
42 0x00007f16ea9d2503 in
KDevelop::LanguageController::languagesForUrl(QUrl const&) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformShell.so.10
43 0x00007f16e2d2c7e0 in
KDevelop::BackgroundParserPrivate::createParseJob(KDevelop::IndexedString
const&, KDevelop::TopDUContext::Features, QList<QPointer<QObject> >
const&, int) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformLanguage.so.10
44 0x00007f16e2d2594b in
KDevelop::BackgroundParserPrivate::parseDocumentsInternal() () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformLanguage.so.10
45 0x00007f16e2d22d14 in KDevelop::BackgroundParser::parseDocuments()
() from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformLanguage.so.10
46 0x00007f16e2f0b60f in
KDevelop::BackgroundParser::qt_static_metacall(QObject*,
QMetaObject::Call, int, void**) () from
/home/kfunk/opt/kdevelop/lib/x86_64-linux-gnu/libKDevPlatformLangu
age.so.10
47 0x00007f16e57447b1 in QObject::event (this=0x300b370, e=<optimized
out>) at kernel/qobject.cpp:1239
REPOSITORY
rKDEVPLATFORM KDevPlatform
BRANCH
production
REVISION DETAIL
https://phabricator.kde.org/D866
AFFECTED FILES
plugins/contextbrowser/contextbrowserview.cpp
EMAIL PREFERENCES
https://phabricator.kde.org/settings/panel/emailpreferences/
To: kfunk
Cc: kdevelop-devel
More information about the KDevelop-devel
mailing list