Bug 327168 - Background parser hangs on specific code
Summary: Background parser hangs on specific code
Status: RESOLVED UNMAINTAINED
Alias: None
Product: kdevelop
Classification: Applications
Component: Language Support: CPP (old) (show other bugs)
Version: 4.5.1
Platform: RedHat Enterprise Linux Linux
: NOR major
Target Milestone: ---
Assignee: kdevelop-bugs-null
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-11-05 13:10 UTC by Mikhail Veltishchev
Modified: 2016-09-07 21:13 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
gdb backtrace for parser (93.85 KB, text/plain)
2013-11-08 09:10 UTC, Mikhail Veltishchev
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mikhail Veltishchev 2013-11-05 13:10:53 UTC
I'm working on heavy C++ project, and everything was fine until something changed in codebase. After that, background parser does not work -- it hangs on "...%" and no code completion/higlighting works.

Reproducible: Always

Steps to Reproduce:
1. Specify project root as Additional include directories (all headers in my project have paths specified from project root, e.g #include <processor/memory/dump.h>)
2. Open specific project file
3. Wait until BG parser hangs
Actual Results:  
Background parser window never disappear, no code completion works.

Expected Results:  
Background parser should not hang.

I can provide a backtraces for each thread with debugging info.
Comment 1 Kevin Funk 2013-11-05 15:36:10 UTC
Yes, please post the backtrace.
Comment 2 Mikhail Veltishchev 2013-11-08 09:10:01 UTC
Created attachment 83422 [details]
gdb backtrace for parser
Comment 3 Mikhail Veltishchev 2013-11-08 09:11:27 UTC
Attached a backtrace
Comment 4 Daniel Santos 2016-08-14 01:19:40 UTC
Well, rather than open a new bug, i'm going to post a backtrace also. I recall I once isolated the code that caused the hang (in one case), but this hang on is on the gcc source tree:

#0  Utils::Set::Iterator::IteratorPrivate::startAtNode (node=<optimized out>, this=0x12153820) at /usr/src/debug/dev-util/kdevplatform-1.7.3/kdevplatform-1.7.3/language/util/setrepository.cpp:385
#1  Utils::Set::Iterator::operator++ (this=this@entry=0x7fffd501df60) at /usr/src/debug/dev-util/kdevplatform-1.7.3/kdevplatform-1.7.3/language/util/setrepository.cpp:453
#2  0x00007f0f2c97b448 in Utils::ConvenientIterator<rpp::pp_macro, Cpp::MacroIndexConversion>::operator++ (this=0x7fffd501df60) at /usr/include/kdevplatform/language/util/setrepository.h:48
#3  CppLanguageSupport::isFunctionLike (this=this@entry=0x3b65a70, pm=pm@entry=0x7f0f2774eac8, url=...) at /usr/src/debug/dev-util/kdevelop-4.7.3/kdevelop-4.7.3/languages/cpp/cpplanguagesupport.cpp:916
#4  0x00007f0f2c97d838 in CppLanguageSupport::isFunctionLike (url=..., pm=0x7f0f2774eac8, this=0x3b65a70) at /usr/include/qt4/QtCore/qvector.h:99
#5  CppLanguageSupport::specialLanguageObjectNavigationWidget (this=0x3b65a70, url=..., position=...) at /usr/src/debug/dev-util/kdevelop-4.7.3/kdevelop-4.7.3/languages/cpp/cpplanguagesupport.cpp:828
#6  0x00007f0f2d0607d9 in ContextBrowserPlugin::showToolTip (this=this@entry=0x3a608e0, view=view@entry=0x7c826b0, position=...)
    at /usr/src/debug/dev-util/kdevplatform-1.7.3/kdevplatform-1.7.3/plugins/contextbrowser/contextbrowser.cpp:468
#7  0x00007f0f2d0610da in ContextBrowserPlugin::textHintRequested (this=0x3a608e0, cursor=...) at /usr/src/debug/dev-util/kdevplatform-1.7.3/kdevplatform-1.7.3/plugins/contextbrowser/contextbrowser.cpp:408
#8  0x00007f0f2d056600 in ContextBrowserPlugin::qt_static_metacall (_o=0x3a608e0, _id=<optimized out>, _a=<optimized out>, _c=<optimized out>)
    at /usr/src/debug/dev-util/kdevplatform-1.7.3/kdevplatform-1.7.3_build/plugins/contextbrowser/moc_contextbrowser.cpp:122
#9  0x00007f0fdbe67463 in QMetaObject::activate (sender=0x7c826b0, m=m@entry=0x7f0f2fff1a80 <KateView::staticMetaObject>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7fffd501e4b0)
    at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qobject.cpp:3567
#10 0x00007f0f2fc7ba1a in KateView::needTextHint (this=<optimized out>, _t1=..., _t2=...) at /usr/src/debug/kde-base/katepart-4.14.3/katepart-4.14.3_build/part/kateview.moc:529
#11 0x00007f0f2fc971f7 in KateViewInternal::textHintTimeout (this=0x7c832c0) at /usr/src/debug/kde-base/katepart-4.14.3/katepart-4.14.3/part/view/kateviewinternal.cpp:3117
#12 0x00007f0f2fca0c2d in KateViewInternal::qt_static_metacall (_o=<optimized out>, _id=<optimized out>, _a=<optimized out>, _c=<optimized out>)
    at /usr/src/debug/kde-base/katepart-4.14.3/katepart-4.14.3_build/part/kateviewinternal.moc:111
#13 0x00007f0fdbe67463 in QMetaObject::activate (sender=0x7c83518, m=<optimized out>, local_signal_index=<optimized out>, argv=0x0)
    at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qobject.cpp:3567
#14 0x00007f0fdbe6bb23 in QObject::event (this=0x7c83518, e=<optimized out>) at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qobject.cpp:1253
#15 0x00007f0fdc38488c in QApplicationPrivate::notify_helper (this=this@entry=0x11ee920, receiver=receiver@entry=0x7c83518, e=e@entry=0x7fffd501e9c0)
    at /usr/src/debug/dev-qt/qtgui-4.8.7/qt-everywhere-opensource-src-4.8.7/src/gui/kernel/qapplication.cpp:4565
#16 0x00007f0fdc38b458 in QApplication::notify (this=this@entry=0x7fffd501ee10, receiver=receiver@entry=0x7c83518, e=e@entry=0x7fffd501e9c0)
    at /usr/src/debug/dev-qt/qtgui-4.8.7/qt-everywhere-opensource-src-4.8.7/src/gui/kernel/qapplication.cpp:4351
#17 0x00007f0fdd8741ba in KApplication::notify (this=0x7fffd501ee10, receiver=0x7c83518, event=0x7fffd501e9c0) at /usr/src/debug/kde-base/kdelibs-4.14.21/kdelibs-4.14.21/kdeui/kernel/kapplication.cpp:311
#18 0x00007f0fdbe51f4c in QCoreApplication::notifyInternal (this=0x7fffd501ee10, receiver=0x7c83518, event=event@entry=0x7fffd501e9c0)
    at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qcoreapplication.cpp:955
#19 0x00007f0fdbe84cbb in QCoreApplication::sendEvent (event=0x7fffd501e9c0, receiver=<optimized out>) at ../../../qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qcoreapplication.h:231
#20 QTimerInfoList::activateTimers (this=0x11ede90) at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qeventdispatcher_unix.cpp:621
#21 0x00007f0fdbe81ac9 in timerSourceDispatch (source=<optimized out>) at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qeventdispatcher_glib.cpp:193
#22 idleTimerSourceDispatch (source=<optimized out>) at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qeventdispatcher_glib.cpp:240
#23 0x00007f0fd587fc2a in g_main_dispatch (context=0x11ee250) at /usr/src/debug/dev-libs/glib-2.48.1/glib-2.48.1/glib/gmain.c:3154
#24 g_main_context_dispatch (context=context@entry=0x11ee250) at /usr/src/debug/dev-libs/glib-2.48.1/glib-2.48.1/glib/gmain.c:3769
#25 0x00007f0fd587ffc5 in g_main_context_iterate (context=context@entry=0x11ee250, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /usr/src/debug/dev-libs/glib-2.48.1/glib-2.48.1/glib/gmain.c:3840
#26 0x00007f0fd588008c in g_main_context_iteration (context=0x11ee250, may_block=1) at /usr/src/debug/dev-libs/glib-2.48.1/glib-2.48.1/glib/gmain.c:3901
#27 0x00007f0fdbe824bc in QEventDispatcherGlib::processEvents (this=0x1137bd0, flags=...)
    at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qeventdispatcher_glib.cpp:450
#28 0x00007f0fdc42edd6 in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...)
    at /usr/src/debug/dev-qt/qtgui-4.8.7/qt-everywhere-opensource-src-4.8.7/src/gui/kernel/qguieventdispatcher_glib.cpp:204
#29 0x00007f0fdbe50981 in QEventLoop::processEvents (this=this@entry=0x7fffd501ec50, flags=...)
    at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qeventloop.cpp:149
#30 0x00007f0fdbe50d25 in QEventLoop::exec (this=this@entry=0x7fffd501ec50, flags=...) at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qeventloop.cpp:204
#31 0x00007f0fdbe56519 in QCoreApplication::exec () at /usr/src/debug/dev-qt/qtcore-4.8.7-r2/qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qcoreapplication.cpp:1227
#32 0x00007f0fdc382bdc in QApplication::exec () at /usr/src/debug/dev-qt/qtgui-4.8.7/qt-everywhere-opensource-src-4.8.7/src/gui/kernel/qapplication.cpp:3823
#33 0x00000000004105fb in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/dev-util/kdevelop-4.7.3/kdevelop-4.7.3/app/main.cpp:582
Comment 5 Daniel Santos 2016-08-14 01:21:37 UTC
oops, the above is kdevelop 4.7.3 with kdevplatform 1.7.3
Comment 6 Milian Wolff 2016-09-07 21:13:07 UTC
Hello!

We worked on a new clang-based C/C++ language plugin for KDevelop 5 which
supersedes the old C++ plugin in KDevelop 4. See e.g.:
https://www.kdevelop.org/news/first-beta-release-kdevelop-500-available
https://www.kdevelop.org/news/kdevelop-500-released

Due to a lack of manpower, we cannot fix bugs in the old C++ plugin. We rather
want to supply a good Clang based C++ experience for KDevelop 5 than wasting
our time on the legacy C++ support for KDevelop 4.

With the new clang-based C/C++ language plugin, the bug presented here does not
occur in my testing. For these reasons, I'll close this bug. Please try out KDevelop 5, either by downloading it through your distro, or by playing around with the AppImage:.

If you think this bug is applicable to Clang/KDevelop 5, please reopen the
report and add new information on how to reproduce the bug there.

Sorry for the inconvenience, I hope you understand the reasoning above.

Cheers