2 votos

¿Por qué mdworker falla al escanear archivos propiedad de Root?

Mientras investigaba un disco con un espacio libre cada vez más reducido y una CPU que estaba a más del 100%, finalmente determiné que el problema era mdworker repetidamente segfaulting, manteniendo syslogd y CrashReporter muy ocupado.

Intenté reconstruir los índices de Spotlight de las formas habituales: primero, a través de la pestaña Privacidad en Preferencias del Sistema -> Spotlight, luego a través de mdworker -i off / ; mdworker -E -i on / y lo mismo de nuevo pero con un intermedio rm -rf /.Spotlight-V100 y reiniciar por si acaso; nada parecía resolver el problema.

Usando la pestaña de Privacidad para excluir casi todo excepto /Applications/ y luego añadir/eliminar esta carpeta para forzar un nuevo escaneo, y pude determinar que algunos archivos están siendo indexados correctamente (y aparecen en los resultados de Spotlight) pero otros no; un poco más de hurgar con opensnoop -n mdworker revela que cuando mdworker se inicia con el UID 501, para escanear los archivos de aplicación que me pertenecen funciona bien (y lo mismo para algunos otros UID que poseen archivos en /Applications/ ), pero cuando se inicia con el UID 89 ( _spotlight según dscl . -list /Users UniqueID ) - presumiblemente para escanear los archivos propiedad de Root - falla.

Este es un ejemplo de entrada de la consola:

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

Y aquí hay un extracto del informe del accidente (son todos bastante idénticos):

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

[...]

Estoy razonablemente seguro de que esto no está siendo causado por el contenidos de los archivos que intenta escanear, porque debería estar escaneando en /Applications/ y opensnoop no informa de que haya tocado ningún archivo allí (de hecho, la lista de archivos abiertos para cada instancia de UID 89 que falla es idéntica, AFAICT).

Es posible que este problema esté relacionado con los problemas que he tenido con Time Machine, que comenzaron más o menos al mismo tiempo: backupd También falla inesperadamente - no instantáneamente al iniciar, sino en el proceso de montar el volumen de respaldo de mi NAS. Aquí hay un extracto de un informe de caída 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

He utilizado la Utilidad de Discos para verificar (en vivo) el volumen y reparar los permisos. He intentado reinstalar la actualización 10.6.8 Combo 1.1 y la actualización suplementaria.

¿Qué puede estar causando estos fallos y cómo puedo solucionarlo?

0 votos

Suponiendo que tengas instaladas algunas aplicaciones de terceros, aquí tienes una idea. Prueba a "dividir por la mitad" /Aplicaciones, es decir, mueve la mitad de las aplicaciones a otro lugar temporalmente, reconstruye el índice y comprueba si falla... si falla, el problema está en las aplicaciones que quedan: repite el proceso hasta que hayas reducido el problema (con suerte) a una aplicación específica. (Escribo con prisas: lo siento si esto no está claro...)

0 votos

@Ashley: que tendría sentido si alguna vez abrió cualquiera de los archivos en /Applications/ propiedad de root pero ni siquiera llega tan lejos.

5voto

Formagella Puntos 147

El problema fue causado por un caché corrupto de Launch Services, y lo resolví ejecutando el siguiente comando:

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

La pista era que el fallo de seguridad se producía en CSStoreGetUnit + 84 en ambos procesos; una rápida búsqueda en Google lleva a [una entrada del 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") que sugería que la corrupción de la caché podría ser el problema. En lugar de hacerlo manualmente rm de los archivos de la caché, he seguido las instrucciones que encontré en The X Lab , lo que suponía una explicación detallada de cómo abrir el terminal para ejecutar el mencionado comando, señalando:

  • Hay un error tipográfico relacionado con las smartquotes en esa página (reportado).
  • Desde mdworker funcionaba bien como UID 501 (y varios otros), supuse que tendría que reiniciar root de la caché de servicios de lanzamiento; prefijando sudo tuvo el efecto deseado.

Notas adicionales:

  • En 10.8.6 (al menos) puedes ver todos los archivos de caché del Servicio de Lanzamiento con el siguiente comando:

    sudo find /var/folders /Library/Caches/ -name '*LaunchServices*' -print0 |sudo xargs -0 ls -l 
  • Por alguna razón desconocida, existe un archivo de caché recientemente modificado para el UID 501 en ambos /Library/Caches/ y /var/folders/ ; los demás UID sólo tienen uno bajo /var/folders/ . Esto no parece causar ningún problema.

  • Esto resolvió el problema con backupd .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X