Дело об ошибке печати
Самые интересные случаи, рассказы о которых я получаю, связаны с демонстрацией уникальной техники поиска неисправностей или раскрывают интересную основную причину. Данный случай объединяет оба случая. Началось все с того, что системный администратор получил отчет от пользователя, в котором говорилось о том, что он не может произвести печать документов с их компьютера. Не было никакой видимой реакции на нажатие кнопки OK в диалоге печати или пункта меню, тогда как обычно они наблюдали сообщение диалогового окна об отправке документа на принтер и появление значка в системное трее, сообщающем об активности очереди печати.
Первое, что сделал администратор, это просмотрел все журналы на компьютере пользователя в поиске любых событий, связанных с печатью. Он быстро нашел два из них, связанные с последней попыткой пользователя начать печать:
Они появлялись при запуске службы очереди печати (Spooler Service), когда пользователь пытался начать печать, но сталкивался с отменой задачи с исключением (неожиданно) спустя приблизительно минуту. Вопрос был в том, почему это происходило?
Администратор обратился к
Он знал, что у него в распоряжении есть некоторый промежуток времени для запуска Procdump после старта службы очереди печати. Потому он запустил Notepad, попытался начать печать и затем запустил Procdump с параметром -e и именем процесса Spooler Service (Spoolsv), чтобы Procdump ожидал выхода службы до того, как записать файл дампа. Несколькими секундами позже Procdump сообщал о завершении работы и сохранении файла дампа:
Он открыл дамп в Windbg и выполнил команду "k", которая вызывает дамп стека потока, вызвавшего сбой, в Windbg. Трассировка стека, которая по существу заключается в перечислении записей вызовов функций, выполненных перед сбоем, показала, что процесс "умер" в последовательности вызовов, включающих несколько функций Ldr, в том числе LdrpLoadDll:
Поиск в сети показал, что
Он предположил, что данный DLL должен быть там. Когда он посмотрел в другой идентичной конфигурации системы Windows XP в его сети, он обнаружил Localspl.dll в директории WindowsSystem32, но в проблемной системе его там не было:
Описание файла сообщало, что он был библиотекой локального диспетчера очереди (Local Spooler DLL), что объясняло неспособность диспетчера печати поддерживать операцию печати. После того, как он скопировал данный файл из рабочей системы, он смог удачно напечатать документ.
Проблема была решена и пользователь смог вернуться к работе, но у администратора оставался один вопрос - что же случилось с оригинальным DLL? На форумах в сети он нашел темы, описывающие похожую проблему, с которой сталкивались другие пользователи. В
Он не мог сказать наверняка, имела ли место похожая ситуация на данной конкретной системе, поскольку пользователь не мог вспомнить, удалял ли он программное обеспечение для печати или факса, но данная тема на форуме по крайней мере дала ему теорию о возможной причине загадочного удаления данных файлов из его систем. Он смог решить проблему с помощью Procdump и Process Monitor.
Если вы смогли разрешить интересные проблемы с помощью инструментальных средств Sysinternals, пожалуйста, отправьте мне скриншоты (предпочтительно .PNG) и файлы журналов, чтобы я смог поделиться этой информацией с остальными в этом блоге и в моих презентациях.
Источник:
Перевод: Dazila
Комментарии
Утилиты Sysinternals в очередной раз на высоте....
А права на папку с ОС, а еще лучще для всего диска С делать обычным пользователям только на чтение....Так надежнее будет..
Правда для некоторых программ придется кое-где даться доступ на запись, но для этого и существует Procmon
По теме
- Устраняем конфликт подписей дисков
- Дело о загадочных звуках
- Дело об ооооочень долгом входе в систему
- Дело об ошибке службы установки
- Дело о загадочных перезагрузках
- Дело о зависшей программе запуска игры
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.3)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.2)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.1)
- Дело о нерабочей системе