1

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)에 대한 파일 연결을 제거하려고합니다. 파일 열기 대화 상자에 미리보기 이미지를 만들지 말라고 할 수 있습니까?

답변

0

업데이트 :

우리는 비슷한 문제를보고 another thread on ServerFault 발견은 ("당신은 파일/열기 또는 파일/저장,하지만 모든 시간을 클릭하면 일반적으로는 충돌"). 다른 사용자 (PG)는 Microsoft의 권고에 따라 데이터 실행 방지에서 응용 프로그램을 제외하여 문제를 해결할 수있었습니다.

데이터 실행 방지 설정에서 "선택한 프로그램을 제외한 모든 프로그램과 서비스에 대해 DEP를 설정"으로 설정되어있는 것으로 나타났습니다. "필수 Windows 프로그램 및 서비스 전용 DEP 켜기"로 변경 한 후에는 더 이상 문제가 발생하지 않습니다.

관련 문제