https://bugs.kde.org/show_bug.cgi?id=362037
Bug ID: 362037 Summary: [OS X] frequent "beachballing" Product: kdevelop Version: git master Platform: Compiled Sources OS: OS X Status: UNCONFIRMED Severity: normal Priority: NOR Component: Language Support: CPP Assignee: kdevelop-bugs-n...@kde.org Reporter: rjvber...@gmail.com This is the bug report requested a while back when I asked about the frequent "beachballing" on kdevelop-devel. OS X presents a "beachball" cursor when an application hasn't processed the event queue for a while, as an indication that that application doesn't respond to user input. This can be an indication of performing a lengthy operation on the main thread which doesn't call any function that processes the event queue. Reproducible: Always Steps to Reproduce: 1. Open a large/ish project in KDevelop. The latest example I noticed this with is KDELibs4Support . I need to add the path to the Qt5 header files in the language settings; YMMV. 2. Open a source file and start editing code, e.g. kuniqueapplication.cpp ; I wanted to query an environment variable after setting the multiple instances variable in KUniqueApplication::start() (using qgetenv). 3 A popup list with functions matching "qset" pops up; I selected (hit enter on) the 1st entry, qsetenv(). Actual Results: The application spent significant time doing all kinds of things except processing user input => beachball. I was running in lldb, so could generate the stacktrace below. Expected Results: No delays; the selected function should be entered within milliseconds and that should be the end of it. Stacktrace below. This situation happens very often, often enough to make using KDevelop5 with bigger projects quite annoying. There are also times where it's harder to say if there's substantial beachballing but where reactivity is almost equally affected by interminable lists of output being printed by the parser. (lldb) bt * thread #1: tid = 0x10a44b1, 0x00007fff896600aa libsystem_kernel.dylib`__getattrlist + 10, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP * frame #0: 0x00007fff896600aa libsystem_kernel.dylib`__getattrlist + 10 frame #1: 0x00007fff82f23da7 CoreServicesInternal`corePropertyProviderPrepareValues(__CFURL const*, __FileCache*, __CFString const* const*, void const**, long, void const*, __CFError**) + 484 frame #2: 0x00007fff82f19fbb CoreServicesInternal`prepareValuesForBitmap(__CFURL const*, __FileCache*, _FilePropertyBitmap*, __CFError**) + 227 frame #3: 0x00007fff82f17ca7 CoreServicesInternal`_FSURLCopyResourcePropertyForKeyInternal(__CFURL const*, __CFString const*, void*, void*, __CFError**, unsigned char) + 213 frame #4: 0x00007fff82f17bcd CoreServicesInternal`_FSURLCopyResourcePropertyForKey + 15 frame #5: 0x00007fff8345b2bb CoreFoundation`CFURLCopyResourcePropertyForKey + 123 frame #6: 0x00000001035aa92c QtCore`hasResourcePropertyFlag(data=<unavailable>, entry=<unavailable>, key=<unavailable>) + 172 at qfilesystemengine_unix.cpp:80 frame #7: 0x00000001035a8ee9 QtCore`QFileSystemEngine::fillMetaData(entry=0x000000012a866f58, data=0x000000012a866f70, what=<unavailable>) + 649 at qfilesystemengine_unix.cpp:523 frame #8: 0x000000010354c731 QtCore`QFileInfo::isHidden(this=<unavailable>) const + 81 at qfileinfo.cpp:967 frame #9: 0x00000001035446c3 QtCore`QDirIteratorPrivate::matchesFilters(this=0x000000011f0d2890, fileName=<unavailable>, fi=0x00007fff5fbfb620) const + 387 at qdiriterator.cpp:352 frame #10: 0x0000000103543f75 QtCore`QDirIteratorPrivate::advance(this=0x000000011f0d2890) + 1045 at qdiriterator.cpp:249 frame #11: 0x00000001035434e1 QtCore`QDirIteratorPrivate::QDirIteratorPrivate(this=<unavailable>, entry=<unavailable>, nameFilters=<unavailable>, resolveEngine=<unavailable>, filters=<unavailable>, flags=<unavailable>) + 1137 at qdiriterator.cpp:169 frame #12: 0x0000000103544e26 QtCore`QDirIterator::QDirIterator(this=0x00007fff5fbfb868, path=<unavailable>, nameFilters=<unavailable>, filters=<unavailable>, flags=<unavailable>) + 86 at qdiriterator.cpp:459 frame #13: 0x000000010353a03c QtCore`QDir::entryList(this=<unavailable>, nameFilters=<unavailable>, filters=<unavailable>, sort=<unavailable>) const + 396 at qdir.cpp:1327 frame #14: 0x0000000103539e9c QtCore`QDir::entryList(this=<unavailable>, filters=<unavailable>, sort=<unavailable>) const + 28 at qdir.cpp:1269 frame #15: 0x000000011ffbbb1d libKDevClangPrivate.25.dylib`(anonymous namespace)::scanIncludePaths(QString const&, QDir const&, int) + 1581 frame #16: 0x000000011ffbbc34 libKDevClangPrivate.25.dylib`(anonymous namespace)::scanIncludePaths(QString const&, QDir const&, int) + 1860 frame #17: 0x000000011ffbbc34 libKDevClangPrivate.25.dylib`(anonymous namespace)::scanIncludePaths(QString const&, QDir const&, int) + 1860 frame #18: 0x000000011ffb8231 libKDevClangPrivate.25.dylib`(anonymous namespace)::fixUnknownDeclaration(KDevelop::QualifiedIdentifier const&, KDevelop::Path const&, KDevelop::DocumentRange const&) + 13025 frame #19: 0x000000011ffb4db5 libKDevClangPrivate.25.dylib`UnknownDeclarationProblem::solutionAssistant() const + 181 frame #20: 0x0000000103dd6957 libKDevPlatformLanguage.10.dylib`KDevelop::StaticAssistantsManager::Private::checkAssistantForProblems(this=<unavailable>, top=<unavailable>) + 695 at staticassistantsmanager.cpp:296 frame #21: 0x0000000103dd6681 libKDevPlatformLanguage.10.dylib`KDevelop::StaticAssistantsManager::Private::updateReady(this=0x000000011b88cca0, url=<unavailable>, topContext=0x00000001305982c0) + 129 at staticassistantsmanager.cpp:257 frame #22: 0x0000000103640383 QtCore`QObject::event(this=<unavailable>, e=<unavailable>) + 659 at qobject.cpp:1256 frame #23: 0x00000001024c2f66 QtWidgets`QApplicationPrivate::notify_helper(this=<unavailable>, receiver=0x000000010b704db0, e=0x000000011dd7a250) + 294 at qapplication.cpp:3714 frame #24: 0x00000001024c6225 QtWidgets`QApplication::notify(this=<unavailable>, receiver=<unavailable>, e=<unavailable>) + 7877 at qapplication.cpp:3677 frame #25: 0x0000000103613b07 QtCore`QCoreApplication::notifyInternal2(receiver=0x000000010b704db0, event=0x000000011dd7a250) + 167 at qcoreapplication.cpp:1020 frame #26: 0x0000000103614706 QtCore`QCoreApplicationPrivate::sendPostedEvents(receiver=0x0000000000000000, event_type=0, data=0x000000010c000e30) + 566 at qcoreapplication.h:227 frame #27: 0x000000010cca80ce libqcocoa.dylib`QCocoaEventDispatcherPrivate::processPostedEvents(this=0x000000010b79dab0) + 190 at qcocoaeventdispatcher.mm:883 frame #28: 0x000000010cca89b1 libqcocoa.dylib`QCocoaEventDispatcherPrivate::postedEventsSourceCallback(info=0x000000010b79dab0) + 33 at qcocoaeventdispatcher.mm:920 frame #29: 0x00007fff8347e5b1 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 frame #30: 0x00007fff8346fc62 CoreFoundation`__CFRunLoopDoSources0 + 242 frame #31: 0x00007fff8346f3ef CoreFoundation`__CFRunLoopRun + 831 frame #32: 0x00007fff8346ee75 CoreFoundation`CFRunLoopRunSpecific + 309 frame #33: 0x00007fff891d1a0d HIToolbox`RunCurrentEventLoopInMode + 226 frame #34: 0x00007fff891d17b7 HIToolbox`ReceiveNextEventCommon + 479 frame #35: 0x00007fff891d15bc HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 65 frame #36: 0x00007fff8969e24e AppKit`_DPSNextEvent + 1434 frame #37: 0x00007fff8969d89b AppKit`-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 122 frame #38: 0x00007fff8969199c AppKit`-[NSApplication run] + 553 frame #39: 0x000000010cca782d libqcocoa.dylib`QCocoaEventDispatcher::processEvents(this=0x000000010b79c0b0, flags=<unavailable>) + 2189 at qcocoaeventdispatcher.mm:416 frame #40: 0x000000010360ff01 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) [inlined] QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 401 at qeventloop.cpp:128 frame #41: 0x000000010360fee4 QtCore`QEventLoop::exec(this=0x00007fff5fbfe0a0, flags=<unavailable>) + 372 at qeventloop.cpp:204 frame #42: 0x0000000103614195 QtCore`QCoreApplication::exec() + 325 at qcoreapplication.cpp:1290 frame #43: 0x000000010001a6cc kdevelop.bin`main(argc=<unavailable>, argv=0x0000000117ceae90) + 54620 at main.cpp:793 frame #44: 0x00007fff8ad2e5fd libdyld.dylib`start + 1 frame #45: 0x00007fff8ad2e5fd libdyld.dylib`start + 1 (lldb) -- You are receiving this mail because: You are watching all bug changes.