2010-05-05 153 views
1

当我快速翻转媒体元素时,我的WPF应用程序似乎崩溃了。 调试使用WinDbg显示它与下面的堆栈跟踪崩溃:Windows媒体播放器崩溃

0:028:x86> k 20 
ChildEBP RetAddr 
15aff648 07acb2a9 wmp!CMGSessionHost::GetPDFromTopologySourceNode0+0xb 
15aff670 07a080fc wmp!CMGSessionHost::IsWindowsMediaContent+0x8a 
15aff688 07acd838 wmp!CMGPlayer::HandleOnError+0x2b 
15aff6d8 07c9270c wmp!CMGSessionHost::HandleTopologySet+0x583 
15aff714 07c928b9 wmp!CMGSessionHost::OnDShowSourceCreated+0x82 
15aff720 6e701f7b wmp!CMGSessionHost::OnDShowSourceCreatedAsyncCallback::Invoke+0x16 
15aff730 6e701b3c MFPlat!CCompletionPort::InvokeCallback+0x12 
15aff838 6e708cab MFPlat!CWorkQueue::CThread::ThreadMain+0xa5 
15aff840 74e71287 MFPlat!CWorkQueue::CThread::ThreadFunc+0xd 
15aff878 74e71328 msvcrt!_endthreadex+0x44 
15aff880 76473677 msvcrt!_endthreadex+0xce 
15aff88c 76f79d72 KERNEL32!BaseThreadInitThunk+0xe 
15aff8cc 76f79d45 ntdll_76f40000!__RtlUserThreadStart+0x70 
15aff8e4 00000000 ntdll_76f40000!_RtlUserThreadStart+0x1b 
0:028:x86> u 7a00881 
wmp!CMGSessionHost::GetPDFromTopologySourceNode0: 
07a00881 8bff   mov  edi,edi 
07a00883 55    push ebp 
07a00884 8bec   mov  ebp,esp 
07a00886 83ec0c   sub  esp,0Ch 
07a00889 8b4508   mov  eax,dword ptr [ebp+8] 
07a0088c 8b08   mov  ecx,dword ptr [eax] 
07a0088e 56    push esi 
07a0088f 57    push edi 
0:028:x86> r 
eax=00000000 ebx=00000000 ecx=15aff668 edx=00010000 esi=00000000 edi=05c53460 
eip=07a0088c esp=15aff63c ebp=15aff648 iopl=0   nv up ei pl nz ac pe nc 
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b    efl=00010216 
wmp!CMGSessionHost::GetPDFromTopologySourceNode0+0xb: 
07a0088c 8b08   mov  ecx,dword ptr [eax] ds:002b:00000000=???????? 

这对我来说看起来就像Windows媒体播放器的内部回调它开辟了媒体翻倒与空指针因为我之后已经很快改变了来源。

我在更改源代码之前停止了当前视频,但是我想知道是否应该等到我再次更改源代码之前找回MediaOpened事件。

其他人碰到这个,如果是的话他们是如何解决它?

回答

0

我为此在Microsoft上打开了一个支持案例,并找回了一个热修复程序,注意在我的情况下,它特定于播放XVID/DIVX文件。

http://support.microsoft.com/kb/981880

我的猜测是,XVID编码解码器打开两次一切,关闭它曾经留下一些三分球落后,一些打开的文件句柄为好。

+0

你可以接受你自己的答案。 – 2015-07-30 14:40:21