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.

Reply via email to