2

Windows 10 Home / «x64-ПК» / Dell XPS 13 9360

В Мониторе надежности у меня ежедневно происходит много "сбоев приложений". Они возвращаются к 2017-12-04 без изменений (подробности ниже идентичны), когда я считаю, что эта машина была впервые использована. Проблема помечена как сообщенная (кроме случаев возникновения проблем за последние несколько минут).

@ magicandre1981 также предложил по какой-то причине открыть общедоступную проблему в Windows Feedback Hub .

Мой вопрос: как я могу это определить? Что вызывает сбои? Могут ли они быть решены как-то?

Детали проблемы

  • Неверный путь к приложению: C:\Windows\System32\rundll32.exe
  • Название проблемного события: APPCRASH
  • Название модуля неисправности: Windows.UI.Immersive.dll
  • Версия модуля неисправности: 10.0.16299.125
  • Смещение исключения: 00000000000ac885
  • Код исключения: c0000005
  • Версия ОС: 10.0.16299.2.0.0.768.101
  • Идентификатор Bucket: ab5106f0b0020ee0d7e0c2d4f71642fb (1720589277589816059)

«Антивирус» установлен (McAfee VirusSafe) и работает без предупреждений, объектов на карантине и журналов, которые я могу найти. sfc /scannow дает системе чистый счет здоровья.

Запуск проблемы вручную

Кажется возможным вызвать сбой, войдя в систему. Это не то, что вызывало это в прошлом, потому что на машине обычно не было входа и выхода пользователя (или даже включения и выключения машины).

Process Monitor позволяет отслеживать процесс создания и выхода. Запустив его от имени второго пользователя, я вижу процесс сбоя:

  • Командная строка: "C:\WINDOWS\system32\rundll32.exe" -localserver 22d8c27b-47a1-48d1-ad08-7da7abd79617 .

Не совсем понятно, что это за UUID. Опция -localserver , похоже, не задокументирована. Google находит вопрос , единственный ответ утверждает, что это "Программа анализа производительности профилирования процессов (Программа Windows Performance Counter)". По общему признанию я вижу, что profapi.dll и powrprof.dll загружаются в этом процессе.

  • Родительский процесс: DllHost.exe ("Суррогат COM").

Описано как « Я не чувствую себя хорошо с этим кодом, поэтому я собираюсь попросить COM разместить его в другом процессе.Таким образом, если он рухнет, то вместо меня рушится жертвенный процесс COM Surrogate ».

  • Командная строка: C:\WINDOWS\system32\DllHost.exe /Processid:{133EAC4F-5891-4D04-BADA-D84870380A80}

Этот UUID в командной строке родителя можно найти в реестре. Он связан с именем "Сервер задач создания объекта оболочки". Используя отслеживание реестра в Process Monitor, я вижу, что DllHost загружает shell32.dll , расположенный через HKCR\CLSID\{133eac...}\InProcServer32).

=> Я думаю, что мы можем идентифицировать этот родительский процесс, как shell32.dll / "Shell Create Object Task Server", и что он является частью ОС.


Оба процесса выполняются от имени пользователя NT AUTHORITY\SYSTEM . Это кажется возможным местом расследования. Что делает привилегированная часть программного обеспечения GUI, которая должна быть запущена в отдельном процессе?

Откат возврата

После запуска procdump -ma -i C:\dumps я могу записывать аварийные дампы. (procdump -u чтобы остановить захват). Анализатор от DebugDiag может открыть их и запустить CrashHangAnalysis:

В rundll32.exe_171225_165805.dmp инструкция по сборке в Windows_UI_Immersive!CUserTileValidator::_ SetReadOnlyCapability+1d в C:\Windows\System32\Windows.UI.Immersive.dll от Microsoft Corporation вызвала исключение нарушения прав доступа (0xC0000005) при попытке чтения из памяти 0x00000000 в потоке 0.

Следующие потоки в rundll32.exe_171225_165805.dmp обрабатывают входящий вызов RPC через LRPC к конечной точке OLE54BFB094974A828ACE9FBFE5A353 :

(0)

Поток 0 - системный идентификатор 4332

  • Точка входа rundll32!wWinMainCRTStartup
  • Время создания 25.12.2017 16:58:04
  • Время, проведенное в режиме пользователя 0 дней 00:00:00.000
  • Время, проведенное в режиме ядра 0 дней 00:00:00.000

ntdll!NtWaitForMultipleObjects+14 
ntdll!WerpWaitForCrashReporting+a8 
ntdll!RtlReportExceptionHelper+33e 
ntdll!RtlReportException+9d 
combase!ServerExceptionFilter+71 
combase!AppInvokeExceptionFilterWithMethodAddress+62 
combase!`ObjectMethodExceptionHandlingAction<<lambda_76d9e92c799d246a4afbe64a2bf5673d> >'::`1'::filt$0+77 
ucrtbase!_C_specific_handler+a0 
ntdll!RtlpExecuteHandlerForException+d 
ntdll!RtlDispatchException+358 
ntdll!KiUserExceptionDispatch+2e 
Windows_UI_Immersive!CUserTileValidator::_SetReadOnlyCapability+1d 
Windows_UI_Immersive!CUserTileValidator::_GenerateLargeFromDynamicAndReset+23 
Windows_UI_Immersive!CUserTileValidator::ValidateUserTile+141 
rpcrt4!Invoke+73 
rpcrt4!NdrStubCall2+3a5 
rpcrt4!NdrStubCall3+e3 
combase!CStdStubBuffer_Invoke+62 
rpcrt4!CStdStubBuffer_Invoke+3b 
combase!ObjectMethodExceptionHandlingAction<<lambda_76d9e92c799d246a4afbe64a2bf5673d> >+53 
combase!DefaultStubInvoke+2d2 
combase!ServerCall::ContextInvoke+492 
combase!AppInvoke+99e 
combase!ComInvokeWithLockAndIPID+55b 
combase!ComInvoke+210 
combase!ThreadDispatch+d4 
combase!ThreadWndProc+e8 
user32!UserCallWinProcCheckWow+2ad 
user32!DispatchMessageWorker+19f 
rundll32!_InvokeLocalServer+1b9 
rundll32!wWinMain+168 
rundll32!operator delete+2eb 
kernel32!BaseThreadInitThunk+14 
ntdll!RtlUserThreadStart+21 

Inbound RPC Call:

Protocol Sequence    ncalrpc 
Endpoint OLE54BFB094974A828ACE9FBFE5A353 
Source Process ID 1160 
Source Thread ID 2624

PID 1160 - это экземпляр svchost.exe для "RPC" и "сопоставителя конечных точек RPC", согласно Process Explorer.

1 ответ1

2

Что вызывает сбои? Могут ли они быть решены как-то?

По-видимому, сбои вызваны проверкой UserTile этого конкретного пользователя.

Я считаю, что это относится к картинке, которая отображается при входе в систему. После установки изображения пользователя в произвольный файл изображения, взятый из Pictures/ , сбой больше не вызывался, когда я переключался между пользователями и входил в систему как определенный пользователь.

Как я могу это определить?

Похоже, "Смещение исключения" - это смещение кода внутри DLL/EXE (то есть, избегая эффекта перемещения / рандомизации адреса). Таким образом, место сбоя можно определить по "Смещению исключения" + определенное содержимое DLL/EXE -

  • Название модуля неисправности: Windows.UI.Immersive.dll
  • Версия модуля неисправности: 10.0.16299.125
  • «x64-based PC» (64-битная версия DLL, а не 32-битная "x86").

Если у вас есть символы отладки для DLL/EXE, вы можете предпринять дополнительные усилия для поиска этого места. Используйте procdump как описано, чтобы захватить аварийный дамп. Откройте дамп с помощью любого отладчика, который поддерживает Microsoft Symbol Service, если DLL/EXE-файл от Microsoft. Имена символов с меньшей вероятностью будут меняться со временем (или на разных аппаратных платформах), чем числовые адреса. Отладчик также покажет полную трассировку вызовов вложенных функций, приводящих к сбою.

  • Символическое расположение: Windows_UI_Immersive!CUserTileValidator::_SetReadOnlyCapability+1d и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .