Bei der Untersuchung einer Festplatte mit immer weniger freiem Speicherplatz und einer CPU, die auf >100 % festgelegt war, stellte ich schließlich fest, dass das Problem mdworker
wiederholt Segfaulting verursachte, wodurch syslogd und CrashReporter sehr beschäftigt waren.
Ich habe versucht, die Indizes von Spotlight auf die übliche Weise neu zu erstellen: zuerst über die Registerkarte „Datenschutz“ in den Systemeinstellungen -> Spotlight, dann über , mdworker -i off / ; mdworker -E -i on /
und das Gleiche noch einmal, aber mit einem dazwischenliegenden rm -rf /.Spotlight-V100
und einem Neustart für ein gutes Maß; nichts schien das Problem zu lösen.
Die Verwendung der Registerkarte Datenschutz, um so ziemlich alles außer auszuschließen /Applications/
, und dann das Hinzufügen/Entfernen dieses Ordners, um einen erneuten Scan zu erzwingen, und ich konnte feststellen, dass einige Dateien ordnungsgemäß indiziert werden (und in den Spotlight-Ergebnissen angezeigt werden), andere jedoch nicht ; Ein bisschen mehr Herumstochern mit opensnoop -n mdworker
enthüllt, dass, wenn mdworker
mit UID 501 gestartet wird, das Scannen von Anwendungsdateien, die mir gehören, gut funktioniert (und dasselbe für ein paar andere UIDs, die Dateien in besitzen /Applications/
), aber wenn es mit UID 89 gestartet wird ( _spotlight
, entsprechend to dscl . -list /Users UniqueID
) - vermutlich um Dateien zu scannen, die root gehören - es segfaults.
Hier ist ein Beispieleintrag aus der Konsole:
2015-07-16 13:53:25 com.apple.launchd[1] (0x100101670.mach_init.mdworker[13276]) Job appears to have crashed: Segmentation fault
2015-07-16 13:53:25 com.apple.ReportCrash.Root[13274] 2015-07-16 13:53:25.326 ReportCrash[13274:341b] Saved crash report for mdworker[13276] version ??? (???) to /Library/Logs/DiagnosticReports/mdworker_2015-07-16-135325-1_localhost.crash
Und hier ist ein Auszug aus dem Absturzbericht (sie sind alle ziemlich identisch):
Process: mdworker [13276]
Path: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Support/mdworker
Identifier: mdworker
Version: ??? (???)
Code Type: X86-64 (Native)
Parent Process: launchd [1]
Date/Time: 2015-07-16 13:53:25.085 +0100
OS Version: Mac OS X 10.6.8 (10K549)
Report Version: 6
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000010f5d1062
Crashed Thread: 3
[...]
Thread 3 Crashed:
0 ...ple.CoreServices.CarbonCore 0x00007fff867e7f0b CSStoreGetUnit + 84
1 com.apple.LaunchServices 0x00007fff821721ab _LSContainerCheckState + 65
2 com.apple.LaunchServices 0x00007fff82188fea _LSCopyLibraryItemURLs + 419
3 mdworker 0x0000000100004305 0x100000000 + 17157
4 mdworker 0x0000000100004c22 0x100000000 + 19490
5 mdworker 0x00000001000050f3 0x100000000 + 20723
6 mdworker 0x0000000100009aa2 0x100000000 + 39586
7 libSystem.B.dylib 0x00007fff80b94fd6 _pthread_start + 331
8 libSystem.B.dylib 0x00007fff80b94e89 thread_start + 13
[...]
Ich bin ziemlich sicher, dass dies nicht durch den Inhalt der Dateien verursacht wird, die versucht werden zu scannen, da sollte in scannen /Applications/
und opensnoop
meldet nicht, dass dort Dateien berührt werden (tatsächlich ist die Liste der Dateien, die für jede abstürzende UID 89 Instanz ist identisch, AFAICT).
Es ist möglich, dass dieses Problem mit Problemen zusammenhängt, die ich mit Time Machine hatte, die ungefähr zur gleichen Zeit gestartet wurde: backupd
auch unerwartete Segfaults - nicht sofort beim Start, sondern beim Mounten meines NAS-Backup-Volumes. Hier ist ein Auszug aus einem gesicherten Absturzbericht:
Thread 5 Crashed:
0 ...ple.CoreServices.CarbonCore 0x00007fff867e7f0b CSStoreGetUnit + 84
1 com.apple.LaunchServices 0x00007fff8217f3fb _LSBundleFindWithNode + 544
2 com.apple.LaunchServices 0x00007fff82177bd1 _LSFindOrRegisterBundleNode + 219
3 com.apple.LaunchServices 0x00007fff82177a85 _LSCopyItemAttributeForRefInfoWithOptions + 201
4 com.apple.LaunchServices 0x00007fff821799cf prepareAttributeValueForKey(__CFURL const*, __FileCache*, __CFString const*, void const**, __CFError**) + 79
5 com.apple.LaunchServices 0x00007fff82179934 prepareDistinctLocalizedNameValue(__CFURL const*, __FileCache*, __CFError**) + 36
6 com.apple.LaunchServices 0x00007fff8217990b prepareLocalizedNameValue(__CFURL const*, __FileCache*, __CFError**) + 9
7 com.apple.LaunchServices 0x00007fff82179712 LSPropertyProviderPrepareValues(__CFURL const*, __FileCache*, __CFString const* const*, void const**, long, void const*, __CFError**) + 51
8 ...ple.CoreServices.CarbonCore 0x00007fff867f8dd4 prepareValuesForBitmap(__CFURL const*, __FileCache*, _FilePropertyBitmap*, __CFError**) + 264
9 ...ple.CoreServices.CarbonCore 0x00007fff867f78bd _FSURLCopyResourcePropertiesForKeys + 980
10 com.apple.CoreFoundation 0x00007fff897dc562 CFURLCopyResourcePropertiesForKeys + 98
11 com.apple.DesktopServices 0x00007fff833737af TCFURLInfo::FetchProperties(bool) + 91
12 com.apple.DesktopServices 0x00007fff8337358f TCFURLInfo::Initialize(__CFURL const*, bool, bool) + 183
13 com.apple.DesktopServices 0x00007fff833d1acd TCFURLInfo::Initialize(char const*, unsigned int) + 89
14 com.apple.DesktopServices 0x00007fff833d369c TCFURLInfo::CreateDirectory(TUString const&, TUniqueNamer*, __FSFileSecurity*, bool, TCountedPtr<TCFURLInfo>&) const + 464
15 com.apple.DesktopServices 0x00007fff833dc95a TCopyWriter::CreateNewDestinationItem() + 178
16 com.apple.DesktopServices 0x00007fff833dd136 TCopyWriter::CreateItem() + 1126
17 com.apple.DesktopServices 0x00007fff833dd41e TCopyWriter::Write() + 146
18 com.apple.DesktopServices 0x00007fff833dd6a6 TCopyWriter::WriteTaskProc(void*) + 72
19 ...ple.CoreServices.CarbonCore 0x00007fff867e40d1 PrivateMPEntryPoint + 63
20 libSystem.B.dylib 0x00007fff80b94fd6 _pthread_start + 331
21 libSystem.B.dylib 0x00007fff80b94e89 thread_start + 13
Ich habe das Festplatten-Dienstprogramm verwendet, um das Volume (live) zu überprüfen und Berechtigungen zu reparieren. Ich habe versucht, das 10.6.8 Combo Update 1.1 und das Supplemental Update neu zu installieren.
Was könnte diese Abstürze verursachen und wie kann ich sie beheben?
Das Problem wurde durch einen beschädigten Launch Services-Cache verursacht, und ich habe es gelöst, indem ich den folgenden Befehl ausgeführt habe:
sudo find /System/Library/Frameworks -type f -name lsregister -exec {} -kill -seed -r \;
CSStoreGetUnit + 84
Der Hinweis war, dass der Segfault in beiden Prozessen auftrat ; Eine schnelle Google-Suche führt zu einem Blog-Eintrag , der darauf hindeutet, dass eine Cache-Beschädigung das Problem sein könnte. Anstatt rm
die Cache-Dateien manuell zu speichern, folgte ich den Anweisungen, die ich bei The X Lab gefunden hatte , was einer detaillierten Erklärung entsprach, wie man das Terminal öffnet, um den oben genannten Befehl auszuführen, wobei Folgendes zu beachten ist:
mdworker
als UID 501 (und einige andere) gut lief, dachte ich, ich müsste root
den Startdienst-Cache von zurücksetzen; Präfix sudo
hatte den gewünschten Effekt.Zusätzliche Bemerkungen:
Unter 10.8.6 (mindestens) können Sie alle Cache-Dateien des Launch Service mit dem folgenden Befehl anzeigen:
sudo find /var/folders /Library/Caches/ -name '*LaunchServices*' -print0 |sudo xargs -0 ls -l
Aus unbekannten Gründen existiert eine kürzlich geänderte Cache-Datei für UID 501 sowohl in /Library/Caches/
als auch in /var/folders/
; andere UIDs haben nur eine unter /var/folders/
. Dies scheint keine Probleme zu bereiten.
Dies hat das Problem mit gelöst backupd
.
Ashley
cpcallen
/Applications/
Besitz von öffnenroot
würde, aber es kommt nicht einmal so weit.