我們有一個相當大的應用程序,用C++編寫,運行在Windows Server 2003和Windows Server 2008 R2上。它使用GetOpenFileName API調出打開文件對話框,以選擇視頻文件。Windows Server 2008 R2上的常見對話框:GetOpenFileName中的崩潰
我們看到,在Windows Server 2008 R2上,我們偶爾會在打開文件對話框中發生崩潰。主GUI線程正在等待工作線程,並且工作線程正在獲取訪問衝突異常。堆棧跟蹤看起來是這樣的:
[email protected]()
shell32.dll!LinkInfo_LoadFromStream() + 0x7d bytes
shell32.dll!CShellLink::_LoadFromStream() + 0x14b bytes
shell32.dll!CShellLink::Initialize() + 0x1a bytes
shell32.dll!InitializeFileHandlerWithStream() + 0xc4 bytes
shell32.dll!CFileSysItemString::HandlerCreateInstance() + 0x13b bytes
shell32.dll!CFileSysItemString::LoadHandler() - 0x9f1d bytes
shell32.dll!CFSFolder::_CreatePerInstanceDefExtIcon() + 0x9b bytes
shell32.dll!CFSFolder::_CreateDefExtIcon() + 0xb6 bytes
shell32.dll!CFSFolder::s_GetExtractIcon() + 0x1e bytes
shell32.dll!CFSFolder::_BindHandler() - 0xd759 bytes
shell32.dll!CFSFolder::GetThumbnailHandler() + 0x51 bytes
shell32.dll!_CreateThumbnailHandler() + 0x61 bytes
shell32.dll!CShellItem::BindToHandler() - 0x20a93 bytes
[email protected]() + 0x63 bytes
shell32.dll!_GetILIndexFromItem() + 0x5f bytes
[email protected]() - 0x3857d bytes
shell32.dll!CFSFolder::GetIconOf() + 0xa57c3 bytes
[email protected]() + 0x24 bytes
[email protected]() + 0x3d bytes
shell32.dll!CRegFolder::GetIconOf() + 0x10a892 bytes
[email protected]() + 0x24 bytes
[email protected]() + 0x3d bytes
explorerframe.dll!CNscIconTask::_Extract() + 0x1f bytes
explorerframe.dll!CNscOverlayTask::InternalResumeRT() + 0x31 bytes
explorerframe.dll!CRunnableTask::Run() + 0xa2 bytes
shell32.dll!CShellTask::TT_Run() + 0x5b bytes
shell32.dll!CShellTaskThread::ThreadProc() + 0x99 bytes
shell32.dll!CShellTaskThread::s_ThreadProc() + 0x1b bytes
[email protected]() + 0xe bytes
[email protected]() + 0xdf bytes
[email protected]() - 0x1185 bytes
[email protected]@12() + 0x12 bytes
[email protected]() + 0x27 bytes
[email protected]() + 0x1b bytes
看來,其他一些人遇到了類似的問題:MSDN thread from 2011。
「我有一個打開普通對話框(8R2)的應用程序崩潰了同樣的情況。有時,它有助於重新啓動應用程序並嘗試again..sometimes沒有。因爲這種情況發生的一對夫婦的應用來自不同的供應商,這更可能是一個共同對話的問題。「
「我想在這裏發現我們遇到了與2008 R2機器相同的問題,它可以是任何程序(並且我曾在Notepad.exe中看到過它)當您查看事件查看器,您會發現崩潰發生在通用對話框調用的不同模塊中,它發生在32位程序和64位,它不是100%的時間發生,而是發生在50%左右。看到了何時何地發生的任何模式。「
我們的假設是,打開文件對話框試圖從視頻文件中獲取一些縮略圖信息,但視頻解碼器崩潰。
有沒有其他人遇到這個問題?如果是這樣,你能找出根源是什麼嗎?你知道爲什麼IsValidLinkInfo會得到訪問衝突嗎?
是否有任何可以應用的解決方法?我們計劃嘗試刪除此特定文件類型(.ts)的文件關聯。有什麼辦法可以告訴打開文件對話框不要創建縮略圖嗎?