On Friday December 30 2016 18:49:46 David Faure wrote:
> > Edit: it doesn't.
>
> What's it and what is it that it doesn't?
Sorry, yes.
> Can you reproduce the problem on Linux or not?
No. kbuildsycoca5 finishes without issues there. It may run a bit slower but
that could just as well be my imagination.
> Anyhow, please post backtraces. Anything else is just guessing.
OK, attaching lldb after letting kbuildsycoca5 --noincremental run for about
15min. while I made a fresh cuppa:
* thread #1: tid = 0x21d12b0, 0x00007fff8ca0c0aa
libsystem_kernel.dylib`__getattrlist + 10, queue = 'com.apple.main-thread',
stop reason = signal SIGSTOP
* frame #0: 0x00007fff8ca0c0aa libsystem_kernel.dylib`__getattrlist + 10
frame #1: 0x00007fff8f949da7
CoreServicesInternal`corePropertyProviderPrepareValues(__CFURL const*,
__FileCache*, __CFString const* const*, void const**, long, void const*,
__CFError**) + 484
frame #2: 0x00007fff8f93ffbb
CoreServicesInternal`prepareValuesForBitmap(__CFURL const*, __FileCache*,
_FilePropertyBitmap*, __CFError**) + 227
frame #3: 0x00007fff8f93dca7
CoreServicesInternal`_FSURLCopyResourcePropertyForKeyInternal(__CFURL const*,
__CFString const*, void*, void*, __CFError**, unsigned char) + 213
frame #4: 0x00007fff8f93dbcd
CoreServicesInternal`_FSURLCopyResourcePropertyForKey + 15
frame #5: 0x00007fff866a02bb CoreFoundation`CFURLCopyResourcePropertyForKey
+ 123
frame #6: 0x0000000106e5bf5c
QtCore`hasResourcePropertyFlag(data=<unavailable>, entry=<unavailable>,
key=<unavailable>) + 172 at qfilesystemengine_unix.cpp:86
frame #7: 0x0000000106e5a549
QtCore`QFileSystemEngine::fillMetaData(entry=0x00007f80a96ae078,
data=0x00007f80a96ae090, what=<unavailable>) + 649 at
qfilesystemengine_unix.cpp:529
frame #8: 0x0000000106dff291 QtCore`QFileInfo::isHidden(this=<unavailable>)
const + 81 at qfileinfo.cpp:970
frame #9: 0x0000000106df7343
QtCore`QDirIteratorPrivate::matchesFilters(this=0x00007f80a96ade70,
fileName=<unavailable>, fi=0x00007fff591e4ae0) const + 387 at
qdiriterator.cpp:358
frame #10: 0x0000000106df6c45
QtCore`QDirIteratorPrivate::advance(this=0x00007f80a96ade70) + 1045 at
qdiriterator.cpp:255
frame #11: 0x0000000106df61c6
QtCore`QDirIteratorPrivate::QDirIteratorPrivate(this=<unavailable>,
entry=<unavailable>, nameFilters=<unavailable>, resolveEngine=<unavailable>,
filters=<unavailable>, flags=<unavailable>) + 1206 at qdiriterator.cpp:175
frame #12: 0x0000000106df7aa6
QtCore`QDirIterator::QDirIterator(this=0x00007fff591e4d28, path=<unavailable>,
nameFilters=<unavailable>, filters=<unavailable>, flags=<unavailable>) + 86 at
qdiriterator.cpp:465
frame #13: 0x0000000106ded253
QtCore`QDir::entryInfoList(this=<unavailable>, nameFilters=<unavailable>,
filters=<unavailable>, sort=<unavailable>) const + 275 at qdir.cpp:1371
frame #14: 0x0000000106ded12c
QtCore`QDir::entryInfoList(this=<unavailable>, filters=<unavailable>,
sort=<unavailable>) const + 28 at qdir.cpp:1294
frame #15: 0x0000000106a6f77a libKF5Service.5.dylib`bool
KSycocaUtilsPrivate::visitResourceDirectoryHelper<KBuildSycoca::build(dirname=<unavailable>,
visitor=<unavailable>)::$_4>(QString const&, KBuildSycoca::build()::$_4) + 58
at ksycocautils_p.h:39
frame #16: 0x0000000106a6f89c libKF5Service.5.dylib`bool
KSycocaUtilsPrivate::visitResourceDirectoryHelper<KBuildSycoca::build(dirname=<unavailable>,
visitor=<unavailable>)::$_4>(QString const&, KBuildSycoca::build()::$_4) + 348
at ksycocautils_p.h:47
frame #17: 0x0000000106a6f89c libKF5Service.5.dylib`bool
KSycocaUtilsPrivate::visitResourceDirectoryHelper<KBuildSycoca::build(dirname=<unavailable>,
visitor=<unavailable>)::$_4>(QString const&, KBuildSycoca::build()::$_4) + 348
at ksycocautils_p.h:47
<snip>
https://paste.kde.org/ptnxccplk/upymg1/raw
Frame #7 gives me the file being handled:
/Applications/Multimedia/Video/iDVD.app/Contents/Frameworks/DVDBase.framework/Versions/A/Frameworks/DVDBase.framework/Versions/A/Frameworks/DVDBase.framework/Versions/A/Frameworks/DVDBase.framework/Versions/A/Frameworks/DVDBase.framework/Versions/A/Framew...
Indeed,
"/Applications/Multimedia/Video/iDVD.app/Contents/Frameworks/DVDBase.framework/Versions/A/Frameworks"
was a symlink to "../../../". Not a circular link, but something like it (is
there a name for this kind of situation?).
After removing that link the process terminated, eventually.
A subsequent regular run took "only" 2:13 minutes at 40% CPU. A few well-placed
qDebug() statements confirm that most of that time is spent trawling through
/Applications (including all of Xcode's 5+Gb).
I think we'll have to consider skipping known Mac locations that are highly
unlikely to contain anything sycoca relevant. Or maybe any generic locations
that aren't user-specific and are not under the install prefix. At least as a
MacPorts-specific patch.
Do you have suggestions where and how to filter out at least /Applications?
R.