Исключение в user32.dll!UserCallWinProcCheckWow
От: Aniskin  
Дата: 04.08.18 16:46
Оценка:
Есть мое расширение оболочки, включающее NSE+BHO+ContextMenu+PropertyStore+многочегоеще. NSE свои функции выполняет, объекты в проводнике отображает, копирует туда-сюда и т.д., в общем с функциональностью проблем нет. Проблема в странном поведении Проводника после установки моих расширений. После того, как пользователь попользовался NSE, и закрыл окно Проводника, через некоторое время система выгружает мою dll. Если после этого пользователь откроет окно Проводника, то система повторно загружает мою dll (что бы использовать BHO, ContextMenu и т.д.), и при этом в Win10 x64 с высокой (примерно 20%) вероятностью Проводник падает. Стек всегда выглядит так:

     0000000009170fd8()    Unknown
>    user32.dll!UserCallWinProcCheckWow()    Unknown
     user32.dll!DispatchMessageWorker()    Unknown
     windows.storage.dll!CShellTaskScheduler::_TT_MsgWaitForMultipleObjects()    Unknown
     windows.storage.dll!CShellTaskScheduler::TT_TransitionThreadToRunningOrTerminating()    Unknown
     windows.storage.dll!CShellTaskThread::ThreadProc()    Unknown
     windows.storage.dll!CShellTaskThread::s_ThreadProc()    Unknown
     SHCore.dll!ExecuteWorkItemThreadProc()    Unknown
     ntdll.dll!RtlpTpWorkCallback()    Unknown
     ntdll.dll!TppWorkerThread()    Unknown
     kernel32.dll!BaseThreadInitThunk()    Unknown
     ntdll.dll!RtlUserThreadStart()    Unknown


Моего кода в стеке нет. При дебаге (незапланированных) исключений в моем коде нет.

В DebugOutput появляются следующие строки:

  Лог
onecoreuap\shell\windows.storage\shelllnk.cpp(124)\windows.storage.dll!00007FFE6FF2DE0E: (caller: 00007FFE6FF2DCD4) ReturnHr(311) tid(278c) 80070490 Element not found.
'explorer.exe' (Win32): Loaded 'D:\Delphi\Projects\TCIntegrationPack\Bin\TC4ShellExt.64.dll'. Module was built without symbols.
'explorer.exe' (Win32): Unloaded 'D:\Delphi\Projects\TCIntegrationPack\Bin\TC4ShellExt.64.dll'
'explorer.exe' (Win32): Loaded 'D:\Delphi\Projects\TCIntegrationPack\Bin\TC4ShellExt.64.dll'. Module was built without symbols.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\comdlg32.dll'. Symbols loaded.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\winspool.drv'. Symbols loaded.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\winspool.drv'. Symbols loaded.
'explorer.exe' (Win32): Unloaded 'C:\Windows\System32\winspool.drv'
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x000000001753D110, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\twext.dll'. Symbols loaded.
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A3090CA, 0x00000000007C2C40, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
onecoreuap\shell\windows.storage\shelllnk.cpp(124)\windows.storage.dll!00007FFE6FF2DE0E: (caller: 00007FFE6FF2DCD4) ReturnHr(312) tid(278c) 80070490 Element not found.
onecoreuap\shell\windows.storage\shelllnk.cpp(124)\windows.storage.dll!00007FFE6FF2DE0E: (caller: 00007FFE6FF2DCD4) ReturnHr(313) tid(278c) 80070490 Element not found.
    CallContext:[\InvokeAssociatedProgram] 
onecoreuap\shell\windows.storage\shelllnk.cpp(124)\windows.storage.dll!00007FFE6FF2DE0E: (caller: 00007FFE6FF2DCD4) ReturnHr(314) tid(278c) 80070490 Element not found.
    CallContext:[\InvokeAssociatedProgram] 
TC4Shell: DLL THREAD ATTACH
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x0000000005C8EB30, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
TC4Shell: DLL THREAD ATTACH
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x000000001E300C50, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
onecoreuap\shell\windows.storage\shelllnk.cpp(124)\windows.storage.dll!00007FFE6FF2DE0E: (caller: 00007FFE6FF2DCD4) ReturnHr(315) tid(278c) 80070490 Element not found.
    CallContext:[\InvokeAssociatedProgram] 
'explorer.exe' (Win32): Loaded 'C:\Program Files\WinRAR\RarExt.dll'. Cannot find or open the PDB file.
'explorer.exe' (Win32): Loaded 'C:\Program Files\PowerArchiver\pashlext64.dll'. Module was built without symbols.
'explorer.exe' (Win32): Unloaded 'C:\Program Files\PowerArchiver\pashlext64.dll'
'explorer.exe' (Win32): Loaded 'C:\Program Files\PowerArchiver\pashlext64.dll'. Module was built without symbols.
'explorer.exe' (Win32): Loaded 'C:\Program Files\PowerArchiver\pa_lang2_x64.dll'. Module was built without symbols.
'explorer.exe' (Win32): Loaded 'C:\Program Files\PowerArchiver\PASHLEXT.DLL'. Module was built without symbols.
'explorer.exe' (Win32): Unloaded 'C:\Program Files\PowerArchiver\PASHLEXT.DLL'
'explorer.exe' (Win32): Loaded 'C:\Program Files\7-Zip-ZStandard\7-zip.dll'. Module was built without symbols.
'explorer.exe' (Win32): Loaded 'C:\7-Zip\7-zip.dll'. Module was built without symbols.
onecoreuap\shell\windows.storage\shelllnk.cpp(124)\windows.storage.dll!00007FFE6FF2DE0E: (caller: 00007FFE6FF2DCD4) ReturnHr(316) tid(278c) 80070490 Element not found.
    CallContext:[\InvokeAssociatedProgram\InvokeAssociatedProgram] 
onecoreuap\shell\windows.storage\shelllnk.cpp(124)\windows.storage.dll!00007FFE6FF2DE0E: (caller: 00007FFE6FF2DCD4) ReturnHr(317) tid(278c) 80070490 Element not found.
    CallContext:[\InvokeAssociatedProgram\InvokeAssociatedProgram] 
TC4Shell: DLL THREAD ATTACH
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x000000001753DEB0, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
'explorer.exe' (Win32): Unloaded 'C:\Program Files\7-Zip-ZStandard\7-zip.dll'
'explorer.exe' (Win32): Unloaded 'C:\Program Files\PowerArchiver\pa_lang2_x64.dll'
'explorer.exe' (Win32): Unloaded 'C:\Program Files\PowerArchiver\pashlext64.dll'
TC4Shell: DLL PROCESS DETACH
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x0000000017398B90, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
'explorer.exe' (Win32): Unloaded 'C:\Windows\System32\comdlg32.dll'
'explorer.exe' (Win32): Unloaded 'C:\Windows\System32\winspool.drv'
'explorer.exe' (Win32): Unloaded 'D:\Delphi\Projects\TCIntegrationPack\Bin\TC4ShellExt.64.dll'
'explorer.exe' (Win32): Unloaded 'C:\Program Files\WinRAR\RarExt.dll'
'explorer.exe' (Win32): Unloaded 'C:\7-Zip\7-zip.dll'
'explorer.exe' (Win32): Unloaded 'C:\Windows\System32\twext.dll'
The thread 0x278c has exited with code 0 (0x0).
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\msftedit.dll'. Symbols loaded.
'explorer.exe' (Win32): Loaded 'C:\Program Files\Common Files\microsoft shared\ink\tiptsf.dll'. Symbols loaded.
'explorer.exe' (Win32): Loaded 'D:\Delphi\Projects\TCIntegrationPack\Bin\TC4ShellExt.64.dll'. Module was built without symbols.
'explorer.exe' (Win32): Unloaded 'D:\Delphi\Projects\TCIntegrationPack\Bin\TC4ShellExt.64.dll'
'explorer.exe' (Win32): Loaded 'D:\Delphi\Projects\TCIntegrationPack\Bin\TC4ShellExt.64.dll'. Module was built without symbols.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\comdlg32.dll'. Symbols loaded.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\winspool.drv'. Symbols loaded.
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\winspool.drv'. Symbols loaded.
'explorer.exe' (Win32): Unloaded 'C:\Windows\System32\winspool.drv'
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x000000001739C6F0, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
'explorer.exe' (Win32): Loaded 'C:\Windows\System32\UIRibbon.dll'. Symbols loaded.
onecoreuap\shell\windows.storage\basedatadrivencommand.cpp(62)\windows.storage.dll!00007FFE6FE13AA2: (caller: 00007FFE6FEF3EB6) ReturnHr(318) tid(1c74) 80004001 Not implemented
onecoreuap\shell\windows.storage\basedatadrivencommand.cpp(89)\windows.storage.dll!00007FFE6FE13AEE: (caller: 00007FFE6FEF386A) ReturnHr(319) tid(1c74) 80004005 Unspecified error
TC4Shell: DLL THREAD ATTACH
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x000000001E24CBE0, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
TC4Shell: DLL THREAD DETACH
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x000000001E1CBDE0, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
The thread 0xb30 has exited with code 0 (0x0).
onecoreuap\shell\windows.storage\homefolder.cpp(506)\windows.storage.dll!00007FFE6FF91FE2: (caller: 00007FFE6FEBB123) ReturnHr(320) tid(43c) 80070490 Element not found.
    CallContext:[\DefView_Sort] 
onecoreuap\shell\windows.storage\regfldr.cpp(1242)\windows.storage.dll!00007FFE6FF8EA95: (caller: 00007FFE6FEB7FA8) ReturnHr(321) tid(43c) 80070490 Element not found.
    CallContext:[\DefView_Sort] 
TC4Shell: DLL THREAD ATTACH
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x000000001E1C9FE0, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
shell\shell32\banners\bannersettings.h(9)\SHELL32.dll!00007FFE71EF5A04: (caller: 00007FFE71EF4F9B) LogHr(34) tid(1c74) 80070002 The system cannot find the file specified.
shell\shell32\banners\datamodel.cpp(979)\SHELL32.dll!00007FFE72008D9C: (caller: 00007FFE71EF54CF) LogHr(35) tid(1c74) 80070057 The parameter is incorrect.
shell\shell32\banners\datamodel.cpp(809)\SHELL32.dll!00007FFE71EF5C1F: (caller: 00007FFE71EF5D8C) ReturnHr(136) tid(1c74) 80070490 Element not found.
shell\shell32\banners\datamodel.cpp(994)\SHELL32.dll!00007FFE71EF5DA6: (caller: 00007FFE71EF54CF) ReturnHr(137) tid(1c74) 80070490 Element not found.
shell\shell32\syncproviderrecyclebin.cpp(92)\SHELL32.dll!00007FFE71EF4958: (caller: 00007FFE71EF4B1D) ReturnHr(138) tid(1c74) 80070490 Element not found.
TC4Shell: DLL THREAD ATTACH
Exception thrown at 0x00007FFE6FAFA388 (KernelBase.dll) in explorer.exe: 0x0EEDFADE (parameters: 0x000000001A1DD02E, 0x0000000017539190, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000).
onecoreuap\shell\windows.storage\basedatadrivencommand.cpp(89)\windows.storage.dll!00007FFE6FE13AEE: (caller: 00007FFE6FEF386A) ReturnHr(322) tid(1c74) 80004005 Unspecified error
Exception thrown at 0x0000000008BE0FD8 in explorer.exe: 0xC0000005: Access violation executing location 0x0000000008BE0FD8.

Куча Exception-ов с кодом 0x0EEDFADE - это дельфовая специфика обработки DllMain.



В Windows 10 x64 проблема воспроизводится гарантированно, в том числе и не у меня, В Windows 7 x64 не удается воспроизвести. Куда копать?

(Я уже готов купить платную поддержку у MS, но они так медленно работают. По другому вопросу купил, прошел месяц — до сих пор нет решения.)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.