Windows Server 2003 및 Windows Server 2008 R2에서 실행되는 C++로 작성된 상당한 규모의 응용 프로그램이 있습니다. 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.
"나는이 응용 프로그램의 몇 일이 있기 때문에 때로는. 응용 프로그램을 다시 시작하고 그렇지 않은 again..sometimes 시도하는 데 도움이됩니다. 일반 대화 (8R2) 응용 프로그램이 충돌을 여는 같은 상황이 여러 공급 업체가 공통 대화의 문제가 될 가능성이 큽니다. "
"2008 R2 시스템에서 동일한 문제가 발생한다는 것을 여기에서 확인하고 싶습니다. 어떤 프로그램이든 (그리고 나는 Notepad.exe에서 한 번 봤습니다.) 이벤트 뷰어를 보면 , 당신은 충돌이 common dialog에 의해 호출되는 다른 모듈에서 일어나는 것을 볼 수 있습니다. 그것은 32 비트 프로그램과 64 비트에서 발생합니다. 그것은 100 %의 시간이 아니라 50 % 정도입니다. 언제 어떤 패턴을 보았고 왜 그런 일이 일어 났는가. "
우리의 가설은 파일 열기 대화 상자가 비디오 파일에서 일부 축소판 정보를 가져 오려고하지만 비디오 디코더가 충돌하고 있다는 것입니다.
이 문제가 발생한 사람이 있습니까? 그렇다면 근본 원인을 파악할 수 있었습니까? IsValidLinkInfo에서 액세스 위반이 발생하는 이유에 대해 알고 있습니까?
여기에 적용 할 수있는 해결 방법이 있습니까? 이 특정 파일 형식 (.ts)에 대한 파일 연결을 제거하려고합니다. 파일 열기 대화 상자에 미리보기 이미지를 만들지 말라고 할 수 있습니까?