Сегодня я хотел бы обсудить довольно специфическую проблему, которая долгое время не давала покоя техническому отделу, скажем так условного корпоративного клиента. Не то что бы она была какой-то уж чрезвычайно сложной, скорее просто никому не интересной (как в том анекдоте про Джо), и решалась местным персоналом при помощи полной "перезаливки" станции пользователя. Кстати, к слову сказать, проблема, которая будет описана в данной статье, мне уже встречалась, но всё никак не появлялось возможности обстоятельного её изучения. Благо, не так давно возникший аналогичный инцидент явился отправной точкой для написания этой заметки. Надо заметить, что для детального описания сбоев, в будущем хотелось бы все же разработать какой-нибудь единый диагностический шаблон, то есть собрать с проблемной станции именно ту информацию, которая представляла бы собой наиболее точное описание всех необходимых конфигураций и однозначно идентифицировала проблему, что бы пользователи могли находить решения по проблемам со схожими симптомам.
Описание проблемы
Рабочее окружение:
- Корпоративная доменная среда;
- Пользовательская станция под управлением Windows 7 Professional x64 6.1.7601 SP1;
- Агент SCCM 2012 версия 5.00.8239.1403.
Иногда (на самом деле редко) при введении в эксплуатацию свежеперезалитой/сохранившейся от другого пользователя рабочей станции, счастливый обладатель начинал жаловался на чрезвычайно низкую работоспособность: многие программы запускались крайне медленно (на протяжении десятков минут!). Работать же в уже запущенных приложениях было совершенно невозможно. При удаленном подключении к станции и попытке удалить произвольное программное обеспечение, было зафиксировано, что процессы инсталляций/деинсталляций "виснут", то есть сам процесс установки/удаления может длиться бесконечно, не завершаясь в течении приемлемого временного интервала. Когда удавалось запустить какое-либо диагностическое ПО (Process Hacker / Process Explorer и подобные), была зафиксирована активность с базой (хранилищем) компонентов. Кроме этого никаких отличительных симптомов обнаружить не удалось.
Диагностика
Убедившись в том, что пользовательская станция действительно ОЧЕНЬ СИЛЬНО тормозит, я решил не прибегать к внешнему инструментарию, а начать с использования встроенного Монитора ресурсов (resmon), благо интерфейс я все же увидел минут через 20 (!) после запуска приложения. С трудом переключаясь между элементами интерфейса, я прошелся по вкладкам ЦП, Память, Диск, Сеть и зафиксировал аномальную дисковую активность: на вкладке Диск, в разделе Работа диска, наблюдалось "повышенная" активность процесса WERFault.exe, который активно работал несколькими с файлами вида C:\ProgramData\Microsoft\Windows\WER\ReportQueue\Critical_6.1.7601_xxxx...xxxx_cab_xxxxxxxx. При этом поток данных был действительно большим, скорость превышала несколько мегабайт/секунду. Судя по всему (подтвердить снимком экрана не могу, просто забыл заскриншотить удаленный рабочий стол внешним скринером) похожих процессов было несколько, и все они работали с аналогичными файлами в дереве директорий с корнем в C:\ProgramData\Microsoft\Windows\WER\ReportQueue\. Никакой другой нетипичной активности в системе не наблюдалось, поскольку и этого системе хватало сполна, отсюда был сделан вывод, что причиной торможения системы является сильно нагруженная дисковая подсистема (шина SATA, модель винчестера ST3500413AS).
Затем я попытался устранить лишнюю нагрузку на систему и удалить один установленный компонент командой:
msiexec /uninstall {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} /q UNINSTALLPASSWORD=""
.. процесс msiexec.exe
наглухо вис, показывая, что работает с хранилищем. При этом процессы, относящийся к деинсталлируемому ПО успешно были выгружены из памяти, однако сам msiexec упорно не хотел завершать свою работу. Все попытки инсталляции различных дистрибутивов заканчивались тем же "подвисанием" установщика, который просто стопорился на каком-нибудь из окон процесса установки, одним словом приложения не устанавливались. Общая производительность станции была, как уже отмечалось, очень низкая, низкая настолько, что порой невозможно было переключиться из окна в окно (!), окна приходилось просто сворачивать, только что бы добраться до находящегося на заднем плане окна :)
Тем не менее, первая подсказка у нас уже есть, сперва я попытался открыть в проводнике каталог C:\ProgramData\Microsoft\Windows\WER\ReportQueue\, с которым так активно работали процессы WERFault. Директория относилась к системному механизму WER.
WER используется разделенные пути очередей отладочных данных:
- %PROGRAMDATA%\Microsoft\Windows\WER -- для дампов процессов, запущенных в контексте Система или с повышенными привилегиями.
- %LOCALAPPDATA%\Microsoft\Windows\WER -- для дампов всех остальных процессов (в том числе уровня пользователя);
Очевидно, что в нашем случае используется второй (системный) вариант. Далее, в каталоге ReportQueue было обнаружено большое количество подкаталогов такого вот примерно вида:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
. . . 17:01 Critical_6.1.7601_611719bc8c958ee029bd821f1cbf8976dc48e19e_cab_0432462c 17:01 Critical_6.1.7601_f7c1a62785c27c37895624a1e0914d52d6babb59_cab_05693a1b 16:58 Critical_6.1.7601_edf6969c3df03c68916bf5301fdce93d0f17439_cab_1a6bea18 16:55 Critical_6.1.7601_ab5b84dee2860282f2f18d5c1c72d10b7347d6_cab_108cbc64 16:52 Critical_6.1.7601_f6b0b093ee2987b7a5ebc5ccfc6974d4b343fd9_cab_196ddf20 16:49 Critical_6.1.7601_7741d8ed44a66d7284860628e7d485e75c39fe6_cab_070b8389 16:46 Critical_6.1.7601_25117b4b29598aff144c871c0b44bb2b654f5e5_cab_182d50f5 16:44 Critical_6.1.7601_3b36ab119a98ead3f0dcf139e4803b63a2e9b9c_cab_044367a0 16:42 Critical_6.1.7601_d36be3a8dc839164d825260aa6ed7ff3b54f52_cab_1aed7d62 16:40 Critical_6.1.7601_b595f413050f721c36ffc1bbfe959626184f492_cab_0b6b97b5 16:38 Critical_6.1.7601_bb799d36cb716847a7ecc93725e5d2973df47_cab_1189efd2 16:36 Critical_6.1.7601_f444cfea412b4c6ae8474dfdc7f6a53962a6d6c_cab_1854549d 16:34 Critical_6.1.7601_e8bd6e92658e5d325743c0c05a12896b6b49439f_cab_0e169bd9 16:32 Critical_6.1.7601_4abf9c957f75e74eee70fec0299c85dc6a32116_cab_02711fa8 16:30 Critical_6.1.7601_184f84c96db923bf7af8cc8998221ff6af37e93_cab_123add8a 16:28 Critical_6.1.7601_2a8afd93e5e1177c113ddae8499a95b60daa_cab_1678828f 16:25 Critical_6.1.7601_967787dcb77ca14cb0df4a62301538e64af51cc5_cab_1582b5fe 16:24 Critical_6.1.7601_7e2d9a55c159a1f4bc248c5824388c4e398dcb7a_cab_1bdc8e81 16:21 Critical_6.1.7601_f725199d918dad7bd77dbce6ccd3fd152032e69a_cab_082edf01 16:19 Critical_6.1.7601_ff4b3d3df23bbf099c55262d236be652cafe71c_cab_135cf1d5 16:17 Critical_6.1.7601_e4fb3aa8e9fb74ce8529d9655cd4ef7984785b_cab_0deb1405 16:15 Critical_6.1.7601_721bf9309571793f98f1f923dd695dd87acb379_cab_1330ec3a 16:13 Critical_6.1.7601_36d48e37d7aec0c0cc5ddd5e28ebbbaec8da6374_cab_18c70af0 16:11 Critical_6.1.7601_377672f136f6fd789c7252d72d4b406df517b6d9_cab_0de541f7 16:09 Critical_6.1.7601_5a9c1a812eb614bda9770a6135f4371d1fe2578_cab_04876697 16:07 Critical_6.1.7601_e37aae387e7b405888297d24c526a6b95a1baad_cab_0c15dc71 16:05 Critical_6.1.7601_ae66fbda3fa9e3a4c0432d297a658f8c5129bffc_cab_1b8bf4c1 16:03 Critical_6.1.7601_ebdf48659eff3c4f8cbbedd5d1590ad1ec06a_cab_19aa6cfc 16:02 Critical_6.1.7601_104038ae50a0bf6ab29925d7c587821f2ecf364b_cab_173cda5f 16:00 Critical_6.1.7601_28a73b5321f363fe28f3b0f231a2b28917b8758e_cab_0e02f2de 15:58 Critical_6.1.7601_5fb4662b68cb586f99a8dbc570eb22b923bd9b62_cab_14196a6d 15:56 Critical_6.1.7601_503ab9743b26f9c24aa75a19843e69893638145_cab_109ba53b 15:54 Critical_6.1.7601_33a13c8243337739154f9c9f80786a388128ba4_cab_0629f944 15:52 Critical_6.1.7601_5579df73468da57b26731c4bcf13e2c86fa58_cab_19707ac2 15:51 Critical_6.1.7601_c8c782b86febfacf79903116ea49bfa7531e754e_cab_0c028887 15:49 Critical_6.1.7601_9f48f5305e4998837342785b6d93bf41b4978a0_cab_1494fa0e 15:47 Critical_6.1.7601_cf85cd8a6e709c0a8c848dcd8f8b3a8ce8d42d7_cab_010351af 15:45 Critical_6.1.7601_307ce66c886cb23bd02d3963c1c0ecd55912319a_cab_16156ced 15:43 Critical_6.1.7601_408decc94fcc5a6d65c516493bac814693731cd8_cab_19eff4ff 15:41 Critical_6.1.7601_33945b354422eb1530ffaec0bab73a08bb4c4_cab_1aae2aee . . . |
Обратите внимание на время, отраженное в левом столбце, такое впечатление, что директории создавались механизмом WER со скоростью одна директория в одну-две минуты, при этом происходила запись огромного количества данных в файлы внутри каждой из указанных директорий. С чего бы это механизму WER вести себя подобным образом? Получается, если WER у нас с большой скоростью собирает данные для отправки, то в системе у нас с большой частотой что то падает!! Что еще добавляло нагрузки на систему в целом, так это то, что папки в каталоге ReportQueue обозначались синим цветом, что намекает на использование сжатия NTFS. Но не смотря на жуткие тормоза, спустя продолжительное время, мне все же удалось войти в одну из перечисленных директорий и взглянуть на её содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1 014 042 181 CBS.log 4 952 546 CbsPersist_20161212063219.cab 5 590 284 CbsPersist_20161214063539.cab 9 290 798 CbsPersist_20161215072328.cab 1 392 044 CbsPersist_20161229150211.cab 5 290 663 CbsPersist_20170112111614.cab 296 FilterList.log 5 450 poqexec.log 5 608 Report.wer 425 984 SCM.EVM 5 409 889 Sessions.xml 43 285 469 WER4BA8.tmp.hdmp 883 337 WER5644.tmp.mdmp |
Вот так выглядит комплект данных для отправки отчета разработчикам. Глядя на размер файла CBS.log, я начал смутно догадываться о причинах медленной работы системы :) ведь файл журнала компонентной модели присутствовал в каждой поддиректории и каждый раз копировался в новую. В последствии, в зависимости от системных настроек, вся эта гигантская прорва информации еще и пытается каким-либо образом закачаться на локальный/удаленный сервер отчетов. Попытаемся разобраться в предназначении каждого файла из комплекта отправки:
Файл(ы) | Описание |
---|---|
CBS.log CbsPersist_20161212063219.cab CbsPersist_20161214063539.cab CbsPersist_20161215072328.cab CbsPersist_20161229150211.cab CbsPersist_20170112111614.cab FilterList.log |
Копия части содержимого директории журнала компонентной модели, который размещается в системе по пути %WinDir%\Logs\CBS\. В копию входит сам файл журнала компонентной модели, а так же упакованные файлы предыдущих периодов. |
poqexec.log | Журнал очереди незавершенных операций. Файл содержит ошибки для части процесса инсталляции, которая производится после перезагрузки операционной системы. Каждый сбой отображается в файле в виде отдельной строки. Оригинальный файл располагается по пути %WinDir%\winsxs\poqexec.log. |
Report.wer | Файл отчета для пакета WER. |
SCM.EVM | Журнал сессии трассировки событий Диспетчера управления службами (Service Control Manager, SCM). Оригинальный файл располагается по пути %WinDir%\system32\LogFiles\Scm |
Sessions.xml | Журнал транзакций стека обслуживания в формате XML. Содержит данные трассировки о всей активности стека обслуживания (идентификатор сессии, клиент, статус, задачи, и действия). Оригинал располагается по пути %WinDir%\servicing\sessions\ |
WER4BA8.tmp.hdmp | Дамп кучи (HeapDump). Дамп сбойного процесса, содержащий, вдобавок к данным минидампа, еще и данные кучи (heap). |
WER5644.tmp.mdmp | Минидамп (Minidump). Дамп сбойного процесса, содержащий информацию о потоках и стеках потоков. |
После изучения содержимого каталога отправки становится очевидным, что WER готовит "отчет" об инциденте, куда включает все необходимые (?) файлы для передачи разработчику. Однако, почему происходило бесконечное создание фактически одинаковых пакетов отсылки? Вероятно, WER действовал в пределах нормы, просто в системе в тот момент что-то очень часто "падало", что и приводило к постоянной генерации отчетов. Давайте попытаемся разобраться что именно. Под рукой у нас для этого имеется все необходимое, а именно пара файлов с именами WER4BA8.tmp.hdmp и WER5644.tmp.mdmp, которые являются ничем иным как разными версиями дампа приложения. Не очень хорошо пока разбираюсь в структуре памяти процесса и не понимаю, что мне могут дать в данной ситуации данные кучи, поэтому откроем любой из этих файлов в отладчике WinDbg, благо в версии 6.12.0002.633 отладчик позволяет открывать и расширение .mdmp
и .hdmp
(в более ранних версиях могли иметься ограничения). При анализе дампа через команду !analyze -v
мы видим имя сбойного процесса (PROCESS_NAME: TrustedInstaller.exe) и ниже по тексту стек вызовов момента падения:
1 2 3 4 5 6 7 8 9 10 |
STACK_TEXT: ntdll!NtWaitForSingleObject+0xa KERNELBASE!WaitForSingleObjectEx+0x79 sechost!ScSendResponseReceiveControls+0x13b sechost!ScDispatcherLoop+0x121 sechost!StartServiceCtrlDispatcherW+0x14e TrustedInstaller!wmain+0xc2 TrustedInstaller!TextizeJetErrorHresult+0x193d kernel32!BaseThreadInitThunk+0xd ntdll!RtlUserThreadStart+0x1d |
Как мы помним, TrustedInstaller.exe является ключевым модулем для выполнения операций со стеком обслуживания. Судя по стеку вызовов, процесс TrustedInstaller.exe (Установщик модулей Windows) находился в момент сбоя в ожидании какого-то внешнего события, быть может ждал запуска/готовности какого-то сервиса (службы) посредством функций библиотеки sechost.dll (Host for SCM/SDDL/LSA Lookup APIs). В стеке мы видим функцию StartServiceCtrlDispatcherW
, которая устанавливает связь главного потока процесса службы с Диспетчером управления службами (SCM), и вызывается в тот самый момент, когда SCM запускает процесс службы. Но вот какой именно службы (вероятно, имеется в виду одноименная служба Установщик модулей Windows) и нормально ли завершился процесс запуска, можно сказать только отлаживая код.
Двигаемся далее, мы выяснили что падает TrustedInstaller.exe, вопрос почему он падает с завидным постоянством? Ну упало один раз, с кем не бывает :) но зачем же так часто? Выходит, что бы часто падать, необходимо часто запускаться, кто-то постоянно создает задачи на установку пакетов. Вот тут то мы вспоминаем, что у нас в нашей корпоративной среде используется агент SCCM 2012. Что это такое? Выдержка из Wikipedia:
System Center Configuration Manager (SCCM, ранее SMS) — продукт для управления ИТ-инфраструктурой на основе Microsoft Windows и смежных устройств. Предоставляет такие возможности, как: управление обновлениями, развёртывание ПО и операционных систем, интеграция с NAP, инвентаризация аппаратного и программного обеспечения, удалённое управление, управление виртуализированными и мобильными системами на базе Windows.
Очень модная в данный момент штука, чрезвычайно громоздкая, написанная на старом бейсике начала 90-х годов и скомпилированная с опциями максимизации размера бинарного файла (шутка) :) Так вот этот самый агент SCCM и спамил нам постоянно задачи на установку обновлений операционной системы. Вроде как разобрались что именно падает и кто постоянно создает эти падающие впоследствии задачи. Но почему TrustedInstaller.exe падает? Первое что приходит на ум, так это проанализировать файл журнала компонентной модели CBS.log и поискать ответ в нем. Приведу основные, самые интересные (на мой взгляд), выдержки из этого файла, поскольку целиком файл занял порядка 1 гигабайта, вставлять его полностью не вижу возможности да и смысла, поэтому перечислим лишь основные моменты:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
. . . 2017-01-12 14:16:17, Info CBS Session: 30567621_1261213569 initialized by client WindowsUpdateAgent. 2017-01-12 14:16:17, Info CBS Session: 30567621_1261213570 initialized by client WindowsUpdateAgent. 2017-01-12 14:16:17, Info CBS Failed to internally open package. [HRESULT = 0x800f0805 - CBS_E_INVALID_PACKAGE] 2017-01-12 14:16:17, Info CBS Session: 30567621_1261837573 initialized by client WindowsUpdateAgent. 2017-01-12 14:16:17, Info CBS Failed to internally open package. [HRESULT = 0x800f0805 - CBS_E_INVALID_PACKAGE] 2017-01-12 14:16:17, Info CBS Session: 30567621_1261837574 initialized by client WindowsUpdateAgent. . . . 2017-01-12 14:19:47, Info CBS Session: 30567621_3364731053 initialized by client WindowsUpdateAgent. 2017-01-12 14:19:47, Info CBS Read out cached package applicability for package: Package_for_RollupFix~31bf3856ad364e35~amd64~~7601.23586.1.5, ApplicableState: 112, CurrentState:101 2017-01-12 14:19:47, Info CBS Session: 30567621_3365823060 initialized by client WindowsUpdateAgent. 2017-01-12 14:19:47, Info CBS Read out cached package applicability for package: Package_for_KB3203884~31bf3856ad364e35~amd64~~6.1.1.2, ApplicableState: 112, CurrentState:0 2017-01-12 14:19:47, Info CBS Session: 30567621_3365979061 initialized by client WindowsUpdateAgent. 2017-01-12 14:19:47, Info CBS Read out cached package applicability for package: Package_for_KB3192321~31bf3856ad364e35~amd64~~6.1.1.0, ApplicableState: 112, CurrentState:0 . . . 2017-01-12 14:22:38, Info CSI 00000013 Performing 1 operations; 1 are not lock/unlock and follow: Stage (1): flags: 8 app: [48a47f34053b9044f349525872c7ca4f, Version = 6.1.7601.23614, pA = PROCESSOR_ARCHITECTURE_AMD64 (9), Culture neutral, VersionScope = 1 nonSxS, PublicKeyToken = {l:8 b:31bf3856ad364e35}, Type neutral, TypeName neutral, PublicKey neutral]) comp: (null) man: @0x1e3a8e8 2017-01-12 14:22:38, Info CBS Exec: Resolving Package: Package_1_for_KB3210131~31bf3856ad364e35~amd64~~6.1.1.0, Update: 3210131-2_neutral_LDR 2017-01-12 14:22:38, Info CBS Exec: Resolving Package: Package_1_for_KB3210131~31bf3856ad364e35~amd64~~6.1.1.0, Update: 3210131-2_neutral_LDR, PinDeployment: amd64_e40f776f2d7f85948938e60176c11c44_31bf3856ad364e35_6.1.7601.23614_none_bce57472c20511a3 2017-01-12 14:22:38, Info CSI 00000014 Performing 1 operations; 1 are not lock/unlock and follow: AddCat (14): flags: 0 catfile: @0x1e39d18 . . . 2017-01-12 14:24:38, Info CBS Appl: Evaluating package applicability for package Package_240_for_KB3205394~31bf3856ad364e35~amd64~~6.1.1.3, applicable state: Absent 2017-01-12 14:24:38, Info CBS Plan: Skipping package since its start state and target state are both absent for package: Package_240_for_KB3205394~31bf3856ad364e35~amd64~~6.1.1.3, current: Absent, pending: Default, start: Absent, applicable: Absent, targeted: Absent, limit: Installed . . . 2017-01-12 14:26:43, Info CBS Exec: Installing Package: Package_179_for_KB3205394~31bf3856ad364e35~amd64~~6.1.1.3, Update: 3205394-723_neutral_LDR 2017-01-12 14:26:43, Info CBS Exec: Installing Package: Package_179_for_KB3205394~31bf3856ad364e35~amd64~~6.1.1.3, Update: 3205394-723_neutral_LDR, InstallDeployment: amd64_e298f9889dc60b46e0bd0df74cf8b007_31bf3856ad364e35_6.1.7601.23593_none_f5d3ddcb5debc593 2017-01-12 14:26:43, Info CBS Exec: Package creation time stamp: 2016-12-2 - Watchlist processing: 0 2017-01-12 14:26:43, Info CBS Exec: The Package or one of its Updates required a reboot so transaction commit was skipped, Package's changes need to be pended. 2017-01-12 14:26:43, Info CBS Setting ExecuteState key to: CbsExecuteStateFailed . . . 2017-01-26 08:52:26, Info CBS Appl: Package: Package_96_for_KB2973351~31bf3856ad364e35~amd64~~6.1.1.1, Update: Trigger_1, Applicable: NotApplicable, Disposition: Staged 2017-01-26 08:52:26, Info CBS Failed to get session package state for package: Package_96_for_KB2973351~31bf3856ad364e35~amd64~~6.1.1.1 [HRESULT = 0x80070490 - ERROR_NOT_FOUND] . . . 2017-01-26 16:19:32, Error CSI 000002cb@2017/1/26:13:19:32.189 (F) d:\w7rtm\base\wcp\componentstore\csd_transact.cpp(3576): Store corruption detected in function CCSDirectTransaction::ShouldKeepAliveFromInstallmap expression: (null) MissingWinningComponentKey on resource [102]"wow64_microsoft-windows-i..texplorer.resources_31bf3856ad364e35_11.2.9600.16428_ru-ru_7359482aef3955ac"[gle=0x80004005] . . . |
Во-первых, бросается в глаза код ошибки 0x800f0805
, намекая на битые пакеты (?). Далее в файле можно увидеть интересные сообщения: "Store corruption detected" и "MissingWinningComponentKey on resource", что сразу же наводит нас на мысль о повреждении хранилища компонентов.
Решение
Скорее по привычке, нежели обоснованно, первой я запустил команду Sfc с ключом /verifyonly и тут же получил следующую ошибку:
1 2 |
В данный момент выполняется другая операция обслуживания или восстановления. Дождитесь ее завершения и повторно запустите SFC. |
Эта лишняя (в данной ситуации) команда дала понять, что стек обслуживания кем-то занят. Скорее всего, со стеком одновременно невозможно работать нескольким источникам. Вспоминаем, про TrustedInstaller.exe, однако его снятие нам ничего не даст, поскольку работает агент SCCM, который постоянно создает задачи на установку. Поэтому, при помощи диспетчера задач рекомендуется снимать следующие процессы (в заданной последовательности):
CcmExec.exe
;CmRcService.exe
;msiexec.exe
;TrustedInstaller.exe
;wermgr.exe
- если присутствует;
Поле этого вся активность со стеком обслуживания прекратилась. Далее была выполнена команда:
DISM /Online /Cleanup-Image /ScanHealth
результатом выполнения которой было следующее сообщение "Выполнение операции scanhealth завершено, см. журнал по адресу %windir%\logs\CBS\Checksur.log. Операция успешно завершена.":
с рекомендацией проверить файл %WinDir%\Logs\CBS\CheckSUR.log. Привожу выдержку ключевых моментов содержимого данного файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
================================= Checking System Update Readiness. Binary Version 6.1.7601.23471 2017-01-26 17:32 Checking Windows Servicing Packages Checking Package Manifests and Catalogs Checking Package Watchlist Checking Component Watchlist Checking Packages Checking Component Store (f) CSI Missing Winning Component Key 0x00000000 amd64_microsoft-windows-i..ringmedia.resources_31bf3856ad364e35_11.2.9600.16428_ru-ru_2920874ec6458292 (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.16428 (f) CSI Missing Winning Component Key 0x00000000 amd64_microsoft-windows-ie-f12resources_31bf3856ad364e35_11.2.9600.17843_none_6499b3d9226362cb (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.17843 (f) CSI Missing Winning Component Key 0x00000000 wow64_microsoft-windows-ie-feeds-platform_31bf3856ad364e35_11.2.9600.17843_none_4c697c5e840377b3 (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.17843 (f) CSI Missing Winning Component Key 0x00000000 amd64_microsoft-windows-ie-f12_31bf3856ad364e35_11.2.9600.17843_none_cfe282fefd8f2f2c (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.17843 (f) CSI Missing Winning Component Key 0x00000000 amd64_microsoft-windows-ie-htmlediting_31bf3856ad364e35_11.2.9600.17843_none_2a5731275891160e (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.17843 (f) CSI Missing Winning Component Key 0x00000000 amd64_microsoft-windows-ie-behaviors.resources_31bf3856ad364e35_11.2.9600.16428_ru-ru_52ef3e8711cb9316 (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.16428 . . . (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.16428 (f) CSI Missing Winning Component Key 0x00000000 amd64_microsoft-windows-i..ngsupport.resources_31bf3856ad364e35_11.2.9600.16428_ru-ru_623b8d15e1c94cd5 (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.16428 (f) CSI Missing Winning Component Key 0x00000000 wow64_microsoft-windows-ie-htmlediting_31bf3856ad364e35_11.2.9600.17843_none_34abdb798cf1d809 (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.17843 (f) CSI Missing Winning Component Key 0x00000000 wow64_microsoft-windows-i..texplorer.resources_31bf3856ad364e35_11.2.9600.16428_en-us_2a3830769e345a05 (fix) CSI Missing Winning Component Key CSI Registry Item Repaired Deleted winners map value 11.2.9600.16428 Summary: Seconds executed: 1070 Found 376 errors Fixed 376 errors CSI Missing Winning Component Key Total count: 376 Fixed: CSI Missing Winning Component Key. Total count: 376 |
Видно, что DISM исправил 376 ошибок. После этого была произведена перезагрузка системы и SCCM продолжил штатную установку обновлений. Более проблем у пользователя не возникало.
Выводы
Инцидент породил слишком большое количество вопросов.
- Почему у нас агент обновления ругается на битые пакеты? Приходят ли они действительно битые с сервера обновлений или причина в другом?
- Почему TrustedInstaller не отслеживает повреждения хранилища пакетов/компонентов и падает вместо завершения с кодом ошибки? Ошибка в коде модуля?
- Почему WER копирует в ReportQueue большие объемы данных, тем самым сильно нагружая систему? А если устроить циклическое падение множества процессов в системе, то WER просто "положит" станцию, как в этом случае?
Я думаю, что все эти вопросы останутся без ответов, поскольку мы не докопались до сути проблемы. Ну а исключить возможность возникновения подобных ситуаций в будущем можно через консоль Configuration Manager Console. Как один из вариантов: Software Library - Software Updates - Software Update Groups, задать для требуемой группы Alert, а вот уже на Alert'ы потом повесить необходимые действия. Возникает вопрос в более тонкой интеграции агента SCCM со стеком обслуживания с целью отслеживания ситуации с падающим процессом TrustedInstaller.exe на клиентской машине и остановке задач по установке компонентов. В нашем случае он продолжал ставить задания на запуск установки обновлений.
Тоже периодически сталкиваюсь с проблемами обновления компьютеров в локальной сети с сервера WSUS - более-менее помогает сброс сервера WSUS - не самый лучший вариант, но всё остальное работает не всегда. Еще как вариант - обновить проблемные компьютеры с Windows Update - но это же ломает саму идею WSUS. Вообще - есть чёткое ощущение, что WSUS - как всегда у M$ - придумано хорошо, реализовано как получилось, поэтому и возникают постоянные проблемы с обновлениями.
да, проблемы разработки у MS сплошь и рядом.. может это и к счастью, не зря её некоторые называют "Винда-кормилица" :) Без многочисленных глюков и недоработок хлеб насущный потеряли бы многие тысячи специалистов :)