Про те, як в OS X на Mac Pro намертво впав QuickTime

Опублікував Сергій Макаренко 24-07-2013 об 15:05

Сьогодні вже в друге я зіткнувся із такою халепою. Перший раз QuickTime на рівні системи у мене впав дев'ятого липня. Помітив я це не одразу, бо симптоми були досить специфічними. По-перше, відвалився QuickTime X. При спробі відкрити ним фільм (контейнери *.mov, *.mp4 тощо) він просто падав і пропонував відправити діагностичний звіт в Apple. Раніше я з таким стикався тільки раз, коли намагався колупнути QuickTime Player.app після його оновлення і моя спроба виявилася невдалою. Вирішив я цю проблему відновленням з резервної копії Time Machine.

Тут я хотів теж скористатись цим способом, але звернув увагу на цікаву деталь. Дивно, але я не міг подивитись прев'юхи фільмів закодованих в H.264 (контейнери *.mov, *.mp4 тощо) які зазвичай відображалися без будь-яких проблем. По-друге, QuickLook сповіщав про помилку (малюнок нижче) і я не розумів, чим вона могла бути викликана. Причому така помилка з'являлася кожного разу при спробі перегляду контенту, що відтворюється за допомогою QuickTime. Тобто, відео. Всі інші типи файлів, які підтримувалися QuickLook переглядалися коректно і з ними проблем не виникало. Не довго вагаючись я помандрував в Console.app в пошуках пояснення того, що відбувається з QuickTime.

Виявилося, що після спроби перегляду фільму в QuickTime падало одразу три процеса: QuickLookSatellite, QuickLookUIHelper та QuickTime Player (crash-репорти для QuickLookSatellite, QuickLookUIHelper та QuickTime Player). А це вже було не смішно і обіцяло мені великі неприємності. Гугління за уривками записів в логах не дало якихось корисних результатів. Точніше, стало зрозуміло те, що проблема має місце і охоплює вона досить велику кількість користувачів. Але що стало її причиною поки для мене було загадкою. Тоді я вирішив проінспектувати свою систему на кшталт програм, які б, суто теоретично, могли викликати такий збій в роботі QuickTime.

Простір для маневру у мене був, оскільки в моєму розпоряджені є ще MacBook Air, на якому така проблема не спостерігалася. До того ж я мав кілька віртуальних машин і міг там поексперементувати, але все це мені в решті решт не знадобилося. Я припустив, що поламати QuickTime могло або якесь оновлення, або програма, що відповідає за відтворення відео. Нещодавно я зніс MPlayerX, тому що він як слід не грав *.m2ts файли і у нього були проблеми із синхронізацією відео та звуку на фільмах, відео в яких було закодоване за допомогою VC1. Замінив я його VLC. Спочатку я підозрював саме його. Але його видалення з усіма кешами та файлами не дало бажаного результату.

Тепер залишилося перевірити, що саме за оновлення та програми були встановлені з Mac App Store. З налаштуваннь Software Update в «Системних параметрах» можливість перевірки історії оновлень прибрали починаючи з Mountain Lion, але відстежити зміни можна. Тут є цілих три варіанти. Перший: відкрити меню «Про цей комп'ютер…» і подивитись перелік останніх встановлених програм та оновленнь.

Другий: глянути у файл /Library/Receipts/InstallHistory.plist, але це не зручно. Третій спосіб більш елегантний і найзручніший для мене. Є чудова консольна утільта system_profiler. У неї є аргумент SPInstallHistoryDataType який в консолі покаже нам у зручному вигляді всі оновлення з Mac App Store. Вивід у мене був такий:

        Оновлення підтримки формату RAW для цифрових камер:

            Version: 4,07
            Source: Apple
            Install Date: 02.07.13 16:41

        Transmit:

            Version: 4.4.1
            Source: Mac App Store
            Install Date: 04.07.13 13:55

        Оновлення системи безпеки 2013-003:

            Version: 1,0
            Source: Apple
            Install Date: 07.07.13 12:22

        Утиліта AirPort:

            Version: 6.3.1
            Source: Apple
            Install Date: 17.07.13 10:01

        Evernote:

            Version: 5.2.0
            Source: Mac App Store
            Install Date: 17.07.13 10:02

        Day One:

            Version: 1,8
            Source: Mac App Store
            Install Date: 17.07.13 10:02

        MindNode Pro:

            Version: 1.10.2
            Source: Mac App Store
            Install Date: 17.07.13 10:02

        Tweetbot:

            Version: 1.3.1
            Source: Mac App Store
            Install Date: 17.07.13 10:02

Тут перелік підозрюваних суттєво звужується. Мою увагу привернуло до себе «Оновлення системи безпеки 2013-003» і я вирішив трохи почитати про те, що там лагодили. Практично всі фікси стосувалися лагодження уразливостей в QuickTime. Не вагаючись я завантажив пакет для того, щоб покопирсатись в його нутрощах. Переглянути перелік файлів, що буде встановлено на орсткий диск можна шорткатом ⌘+1.

./Library/Audio/Plug-Ins/HAL/iSightAudio.driver
./Library/Internet Plug-Ins/QuickTime Plugin.plugin
./System/Library/Automator/Add Color Profile.action
./System/Library/Automator/Enable or Disable Tracks.action
./System/Library/Automator/Hint Movies.action
./System/Library/Frameworks/QTKit.framework
./System/Library/Frameworks/QuickTime.framework
./System/Library/QuickTime/QuickTimeComponents.component
./System/Library/QuickTime/QuickTimeH264.component
./System/Library/QuickTime/QuickTimeIIDCDigitizer.component
./System/Library/QuickTime/QuickTimeImporters.component
./System/Library/QuickTime/QuickTimeMPEG.component
./System/Library/QuickTime/QuickTimeMPEG4.component
./System/Library/QuickTime/QuickTimeStreaming.component
./System/Library/QuickTime/QuickTimeVR.component
./System/Library/XPCServices/com.apple.qtkitserver.xpc
./System/Library/XPCServices/qtkittrustedmoviesservice.xpc

Вище приведений перелік частини бінарників і фреймворків які оновлювали під час встановлення «Оновлення системи безпеки 2013-003». Після цього я не вагаючись встановив його ще раз і QuickTime запрацював так, як треба. Причина, за якої він впав на рівні системи в друге для мене поки що загадка. Дуже багато вільного часу у мене на пошуки проблеми немає, а тому тут є кілька варіантів: чекати чергового оновлення системи безпеки (а вони виходять дуже не часто, історію можна подивитись тут), яке виправить все те, що поламали в цьому; чекати чергового оновлення OS X Mountain Lion, яке все полагодить або чекати виходу OS X Mavericks. Далі буде видно. Але це другий за масштабами глюк, який я спіймав в OS X.


Оновлено 15 вересня 2013 р.: я з цією проблемою добряче натрахався. Оновлення OS X Mountain Lion цієї проблеми з крешами QuickTime не вирішило, не дивлячись на те, що до пакету оновлення операційної системи входили також файли, що змінювалися під час встановлення «Оновлення системи безпеки 2013-003». Цікаво те, що проблема сама по собі виникала не на кожному комп'ютері під керуванням OS X Mountain Lion, а виключно на деяких. Наприклад, у мене чудово працював MacBook Air і з QuickTime на ньому було все добре. Чому так, а не інакше я не здогадуюся але і не було бажання розбиратися в цьому. Тому я зробив наступне — просто взяв і переніс ось цей перелік файлів з MacBook Air на Mac Pro:

/Library/Audio/Plug-Ins/HAL/iSightAudio.driver
/Library/Internet Plug-Ins/QuickTime Plugin.plugin
/Library/Internet Plug-Ins/nsIQTScriptablePlugin.xpt
/System/Library/Automator/Add Color Profile.action
/System/Library/Automator/Enable or Disable Tracks.action
/System/Library/Automator/Encode Media.action
/System/Library/Automator/Hint Movies.action
/System/Library/Automator/New Audio Capture.action
/System/Library/Automator/New Screen Capture.action
/System/Library/Automator/New Video Capture.action
/System/Library/Automator/Pause Capture.action
/System/Library/Automator/Play Movies.action
/System/Library/Automator/Resume Capture.action
/System/Library/Automator/Start Capture.action
/System/Library/Automator/Stop Capture.action
/System/Library/Components/QuickTimeAudioComponents.component
/System/Library/Frameworks/QTKit.framework
/System/Library/Frameworks/QuickTime.framework
/System/Library/Java/Extensions/QTJava.zip
/System/Library/Java/Extensions/libQTJNative.jnilib
/System/Library/QuickTime/AppleVAH264HW.component
/System/Library/QuickTime/QuickTime3GPP.component
/System/Library/QuickTime/QuickTimeComponents.component
/System/Library/QuickTime/QuickTimeFireWireDV.component
/System/Library/QuickTime/QuickTimeH264.component
/System/Library/QuickTime/QuickTimeIIDCDigitizer.component
/System/Library/QuickTime/QuickTimeImporters.component
/System/Library/QuickTime/QuickTimeMPEG.component
/System/Library/QuickTime/QuickTimeMPEG4.component
/System/Library/QuickTime/QuickTimeStreaming.component
/System/Library/QuickTime/QuickTimeVR.component
/System/Library/QuickTimeJava/QuickTimeJava.bundle
/System/Library/Sandbox/Profiles/com.apple.qtkitserver.sb
/System/Library/Sandbox/Profiles/com.apple.qtkittrustedmoviesservice.sb
/System/Library/Services/Encode Selected Video Files.workflow
/System/Library/XPCServices/com.apple.qtkitserver.xpc
/System/Library/XPCServices/qtkittrustedmoviesservice.xpc
/usr/bin/qtdefaults
/usr/share/man/man1/qtdefaults.1

Отримати його можна або за допомогою команди lsbom -p MUGsf шлях_до_bom-файла, або за допомогою шортката ⌘+i в програмі Installer.app, запустивши інсталяцію *.pkg файла оновлення. Перший спосіб зручніший, оскільки вивід команди можна скопіювати і довести до зручного для сприйняття вигляду. Вже три доби QuickTime працює як годинник. До цього після встановлення «Оновлення системи безпеки 2013-003» проблема з'являлася вже через добу. Архів з необхідними файлами можна скачати тут. Після того, як рознесете файли з архіву по вказаних теках треба буде полагодити права доступу за допомогою Дискової утіліти. Все. Насолоджуйтесь.