Исследуя диск с постоянно сокращающимся свободным пространством mdworker
и частотой загрузки ЦП> 100%, я в конечном итоге определил, что проблема неоднократно была связана с ошибками, сохраняя занятость syslogd и CrashReporter.
Я попытался перестроить индексы Spotlight обычными способами: сначала через вкладку «Конфиденциальность» в «Системных настройках» -> «Spotlight», затем через mdworker -i off / ; mdworker -E -i on /
и то же самое снова, но с промежуточной rm -rf /.Spotlight-V100
загрузкой и перезагрузкой для хорошей меры; казалось, ничего не решило проблему.
Использование вкладки «Конфиденциальность» для исключения практически всего, кроме /Applications/
добавления и удаления этой папки для принудительного повторного сканирования, и я смог определить, что некоторые файлы правильно проиндексированы (и отображаются в результатах Spotlight), а некоторые нет. ; немного больше возни с обнаружением того, opensnoop -n mdworker
что при mdworker
запуске с UID 501 сканировать файлы приложений, принадлежащие мне, он работает нормально (и то же самое для нескольких других UID, у которых есть файлы /Applications/
), но когда он запускается с UID 89 ( _spotlight
, согласно to dscl . -list /Users UniqueID
) - предположительно для сканирования файлов, принадлежащих root - это segfaults.
Вот пример записи из консоли:
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
А вот отрывок из отчета о сбое (все они в значительной степени идентичны):
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
[...]
Я достаточно уверен, что это не вызвано содержимым файлов, которые он пытается сканировать, потому что должен сканировать /Applications/
, и opensnoop
не сообщает, что это касается каких-либо файлов (фактически, список файлов, открытых для каждого сбойного UID 89 экземпляр идентичен, AFAICT).
Вполне возможно, что эта проблема связана с проблемами, возникшими у меня с Time Machine, которая началась примерно в то же время: backupd
неожиданно произошла ошибка - не сразу при запуске, а в процессе монтирования тома резервного копирования NAS. Вот выдержка из отчета о сбое резервного копирования:
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
Я использовал Дисковую Утилиту для проверки работоспособности тома и разрешений. Я попытался переустановить 10.6.8 Combo Update 1.1 и Дополнительное обновление.
Что может быть причиной этих сбоев, и как я могу это исправить?
источник
/Applications/
собственностиroot
, но он даже не зашел так далеко.Ответы:
Проблема была вызвана повреждением кэша Launch Services, и я решил ее, выполнив следующую команду:
Подсказка состояла в том, что произошла ошибка
CSStoreGetUnit + 84
в обоих процессах; быстрый поиск в Google приводит к записи в блоге, которая предполагает, что проблема может быть связана с повреждением кэша. Вместо того, чтобы вручнуюrm
извлекать файлы кеша, я следовал инструкциям, которые я нашел в The X Lab , что представляло собой подробное объяснение того, как открыть терминал для запуска вышеупомянутой команды, отмечая:mdworker
работал как UID 501 (и несколько других), я догадался, что мне придется сброситьroot
кэш служб запуска; префиксsudo
имел желаемый эффект.Дополнительные примечания:
На 10.8.6 (как минимум) вы можете увидеть все файлы кэша Launch Service с помощью следующей команды:
По неизвестной причине, недавно измененный файл кэша для UID 501 существует в обоих
/Library/Caches/
и/var/folders/
; другие UID имеют только один под/var/folders/
. Это, кажется, не вызывает никаких проблем.Это действительно решило проблему с
backupd
.источник