Summary: | changing files via git (rebase, checkout) causes 100% CPU usage on 2 cores | ||
---|---|---|---|
Product: | [Applications] kdevelop | Reporter: | Rolf Eike Beer <kde> |
Component: | general | Assignee: | kdevelop-bugs-null |
Status: | CONFIRMED --- | ||
Severity: | normal | CC: | |
Priority: | NOR | ||
Version: | 5.0.1 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | perf data |
Description
Rolf Eike Beer
2016-09-15 16:07:37 UTC
Backtrace please. Thread 14 (Thread 0x7fe1a8c3f700 (LWP 10656)): #0 0x00007fe203b1403f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007fe1fe47f86b in () at /usr/lib64/libQt5Script.so.5 #2 0x00007fe1fe47f899 in () at /usr/lib64/libQt5Script.so.5 #3 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #4 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 13 (Thread 0x7fe1aa5ab700 (LWP 10635)): #0 0x00007fe209dd3bfd in poll () at /lib64/libc.so.6 #1 0x00007fe202e94e64 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007fe202e94f7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007fe20a700d6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007fe20a6a7d53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007fe20a4c961a in QThread::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #7 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #8 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 12 (Thread 0x7fe18bfff700 (LWP 10528)): #0 0x00007fe209dd3bfd in poll () at /lib64/libc.so.6 #1 0x00007fe202e94e64 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007fe202e94f7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007fe20a700d6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007fe20a6a7d53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007fe20a4c961a in QThread::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #7 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #8 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 11 (Thread 0x7fe1aadac700 (LWP 10515)): #0 0x00007fe203b1403f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007fe20a4cf34b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5 #2 0x00007fe1ff2b465f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #3 0x00007fe1ff2b843a in () at /usr/lib64/libKF5ThreadWeaver.so.5 #4 0x00007fe1ff2b26cb in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #5 0x00007fe1ff2b6005 in ThreadWeaver::Thread::run() () at /usr/lib64/libKF5ThreadWeaver.so.5 #6 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #7 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #8 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 10 (Thread 0x7fe1ab5ad700 (LWP 10514)): #0 0x00007fe203b1403f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007fe20a4cf34b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5 #2 0x00007fe1ff2b465f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #3 0x00007fe1ff2b843a in () at /usr/lib64/libKF5ThreadWeaver.so.5 #4 0x00007fe1ff2b26cb in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #5 0x00007fe1ff2b8481 in () at /usr/lib64/libKF5ThreadWeaver.so.5 #6 0x00007fe1ff2b26cb in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #7 0x00007fe1ff2b6005 in ThreadWeaver::Thread::run() () at /usr/lib64/libKF5ThreadWeaver.so.5 #8 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #9 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #10 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 9 (Thread 0x7fe1abdae700 (LWP 10513)): #0 0x00007fe203b1403f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007fe20a4cf34b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5 #2 0x00007fe1ff2b465f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #3 0x00007fe1ff2b843a in () at /usr/lib64/libKF5ThreadWeaver.so.5 #4 0x00007fe1ff2b26cb in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #5 0x00007fe1ff2b6005 in ThreadWeaver::Thread::run() () at /usr/lib64/libKF5ThreadWeaver.so.5 #6 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #7 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #8 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 8 (Thread 0x7fe1ac5af700 (LWP 10512)): #0 0x00007fe203b1403f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007fe20a4cf34b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5 #2 0x00007fe1ff2b465f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #3 0x00007fe1ff2b843a in () at /usr/lib64/libKF5ThreadWeaver.so.5 #4 0x00007fe1ff2b26cb in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #5 0x00007fe1ff2b6005 in ThreadWeaver::Thread::run() () at /usr/lib64/libKF5ThreadWeaver.so.5 #6 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #7 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #8 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 7 (Thread 0x7fe1be3df700 (LWP 10511)): #0 0x00007fe203b1403f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007fe20a4cf34b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5 #2 0x00007fe1ff2b465f in ThreadWeaver::Weaver::takeFirstAvailableJobOrSuspendOrWait(ThreadWeaver::Thread*, bool, bool, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #3 0x00007fe1ff2b843a in () at /usr/lib64/libKF5ThreadWeaver.so.5 ---Type <return> to continue, or q <return> to quit--- #4 0x00007fe1ff2b26cb in ThreadWeaver::Weaver::applyForWork(ThreadWeaver::Thread*, bool) () at /usr/lib64/libKF5ThreadWeaver.so.5 #5 0x00007fe1ff2b6005 in ThreadWeaver::Thread::run() () at /usr/lib64/libKF5ThreadWeaver.so.5 #6 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #7 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #8 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 6 (Thread 0x7fe1bdbde700 (LWP 10435)): #0 0x00007fe209dd3bfd in poll () at /lib64/libc.so.6 #1 0x00007fe202e94e64 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007fe202e94f7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007fe20a700d6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007fe20a6a7d53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007fe20a4c961a in QThread::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x00007fe1ffc67e18 in () at /usr/lib64/libQt5Qml.so.5 #7 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #8 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #9 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 5 (Thread 0x7fe1bfe69700 (LWP 10405)): #0 0x00007fe209dd3bfd in poll () at /lib64/libc.so.6 #1 0x00007fe202e94e64 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007fe202e94f7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007fe20a700d6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007fe20a6a7d53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007fe20a4c961a in QThread::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x00007fe208003dc3 in () at /usr/lib64/libKDevPlatformLanguage.so.10 #7 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #8 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #9 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 4 (Thread 0x7fe1dce35700 (LWP 10404)): #0 0x00007fe209dd3bfd in poll () at /lib64/libc.so.6 #1 0x00007fe202e94e64 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007fe202e94f7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007fe20a700d8b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007fe20a6a7d53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007fe20a4c961a in QThread::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x00007fe208003dc3 in () at /usr/lib64/libKDevPlatformLanguage.so.10 #7 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #8 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #9 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 3 (Thread 0x7fe1dfb32700 (LWP 10403)): #0 0x00007fe203b143e8 in pthread_cond_timedwait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0 #1 0x00007fe20a4cf298 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5 #2 0x00007fe207f314f3 in () at /usr/lib64/libKDevPlatformLanguage.so.10 #3 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #4 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #5 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 2 (Thread 0x7fe1ed5f4700 (LWP 10402)): #0 0x00007fe209dd3bfd in poll () at /lib64/libc.so.6 #1 0x00007fe1fcf25422 in () at /usr/lib64/libxcb.so.1 #2 0x00007fe1fcf2700f in xcb_wait_for_event () at /usr/lib64/libxcb.so.1 #3 0x00007fe1ef9493c9 in () at /usr/lib64/libQt5XcbQpa.so.5 #4 0x00007fe20a4ce32f in () at /usr/lib64/libQt5Core.so.5 #5 0x00007fe203b100a4 in start_thread () at /lib64/libpthread.so.0 #6 0x00007fe209ddc02d in clone () at /lib64/libc.so.6 Thread 1 (Thread 0x7fe20d0427c0 (LWP 10401)): #0 0x00007fe209dd3bfd in poll () at /lib64/libc.so.6 #1 0x00007fe202e94e64 in () at /usr/lib64/libglib-2.0.so.0 #2 0x00007fe202e94f7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #3 0x00007fe20a700d6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #4 0x00007fe20a6a7d53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5 #5 0x00007fe20a6af8f6 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5 #6 0x000000000040c460 in main(int, char**) (argc=1, argv=<optimized out>) at /usr/src/debug/kdevelop-5.0/app/main.cpp:745 Hm, all threads in that trace are idle. not a backtrace, a profile is needed. Please get one when you see 100% CPU usage via: perf record --call-graph dwarf --pid $(pidof kdevelop) # wait a couple of seconds ^C then create a report file and upload it here: perf report --no-children -g graph --stdio | bzip2 > perf.report.bz2 Just another data point: after a couple of seconds (~20-30) everything goes back to normal Created attachment 101934 [details]
perf data
The time is spent in libclang, i.e. parsing. This behaviour seems perfectly normal to me; files changed, they have to be reparsed, that takes a while. So, not a bug ...? > The time is spent in libclang, i.e. parsing. This behaviour seems
> perfectly
> normal to me; files changed, they have to be reparsed, that takes a
> while. So,
> not a bug ...?
There are few files, and parsing a few thousand lines of codes shouldn't
take half a minute on a Core i7. In fact this sometimes works fine (and
fast), so I guess the problem really is that the files changed while
libclang is trying to parse them.
This could be the same issue like the one on the mailing list, i.e. parsing sometimes being super slow under some unclear conditions. |