2 votes

Pourquoi mdworker se met en défaut lors de l'analyse des fichiers appartenant à Root ?

En examinant un disque dont l'espace libre ne cesse de diminuer et un processeur bloqué à plus de 100 %, j'ai fini par déterminer que le problème était le suivant mdworker à plusieurs reprises, gardant syslogd et CrashReporter très occupés.

J'ai essayé de reconstruire les index de Spotlight de la manière habituelle : d'abord, via l'onglet Confidentialité dans les Préférences système -> Spotlight, puis via mdworker -i off / ; mdworker -E -i on / et de nouveau la même chose, mais avec un intercalaire. rm -rf /.Spotlight-V100 et redémarrer pour faire bonne mesure ; rien ne semblait résoudre le problème.

En utilisant l'onglet Confidentialité pour exclure à peu près tout sauf /Applications/ J'ai pu déterminer que certains fichiers sont correctement indexés (et apparaissent dans les résultats de Spotlight) mais que d'autres ne le sont pas. opensnoop -n mdworker révèle que lorsque mdworker est démarré avec l'UID 501, pour analyser les fichiers de l'application qui m'appartiennent, cela fonctionne bien (de même pour quelques autres UID qui possèdent des fichiers dans la base de données). /Applications/ ), mais lorsqu'il est lancé avec l'UID 89 ( _spotlight selon dscl . -list /Users UniqueID ) - vraisemblablement pour analyser les fichiers appartenant à Root - il y a une erreur de segmentation.

Voici un exemple d'entrée de Console :

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

Et voici un extrait du rapport d'accident (ils sont tous à peu près identiques) :

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

[...]

Je suis raisonnablement sûr que ce n'est pas causé par le contenu des fichiers qu'il tente de scanner, parce qu'il devrait scanner en /Applications/ et opensnoop ne signale pas qu'il a touché des fichiers à cet endroit (en fait, la liste des fichiers ouverts pour chaque instance d'UID 89 qui se bloque est identique, AFAICT).

Il est possible que ce problème soit lié aux problèmes que j'ai rencontrés avec Time Machine, qui ont commencé à peu près au même moment : backupd a également subi des pannes inattendues - pas instantanément au démarrage, mais au cours du processus de montage du volume de sauvegarde de mon NAS. Voici un extrait d'un rapport de panne de backupd :

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

J'ai utilisé l'utilitaire de disque pour vérifier (en direct) le volume et réparer les permissions. J'ai essayé de réinstaller la mise à jour combinée 10.6.8 Combo Update 1.1 et Supplemental Update.

Quelle pourrait être la cause de ces pannes, et comment puis-je y remédier ?

5voto

cpcallen Points 717

Le problème était causé par un cache corrompu de Launch Services, et je l'ai résolu en exécutant la commande suivante :

sudo find /System/Library/Frameworks -type f -name lsregister -exec {} -kill -seed -r \;

L'indice était que le défaut de segmentation se produisait à CSStoreGetUnit + 84 dans les deux processus ; une recherche rapide sur Google conduit à [un article de blog](http://junkheap.net/blog/2011/09/22/solving-a-login-loop-in-mac-os-x-lion-due-to-corrupt/ "Solving a "Login Loop" in Mac OS X Lion Due to Corrupt LaunchServices Cache") ce qui suggère que la corruption du cache pourrait être le problème. Plutôt que d'utiliser manuellement rm dans les fichiers de cache, j'ai suivi les instructions que j'ai trouvées à The X Lab qui se résumait à une explication détaillée de la façon d'ouvrir le terminal pour exécuter la commande susmentionnée, en notant :

  • Il y a une faute de frappe liée aux smartquotes sur cette page (signalée).
  • Depuis mdworker fonctionnait bien comme l'UID 501 (et plusieurs autres), j'ai supposé que je devais réinitialiser root le cache des services de lancement de l'entreprise ; le préfixe sudo a eu l'effet escompté.

Notes supplémentaires :

  • Sous 10.8.6 (au moins), vous pouvez voir tous les fichiers de cache de Launch Service avec la commande suivante :

    sudo find /var/folders /Library/Caches/ -name '*LaunchServices*' -print0 |sudo xargs -0 ls -l 
  • Pour une raison inconnue, un fichier de cache récemment modifié pour l'UID 501 existe dans les deux /Library/Caches/ y /var/folders/ ; les autres UIDs n'ont qu'un seul sous /var/folders/ . Cela ne semble pas poser de problème.

  • Cela a résolu le problème avec backupd .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X