简体   繁体   中英

Flash crashes when stopping directshow source filter

Here's the callstack :

0480b000()
vcam.ax!CSourceStream::DoBufferProcessingLoop() + 0xe1 bytes
vcam.ax!CSourceStream::ThreadProc() + 0x13e bytes
vcam.ax!CAMThread::InitialThreadProc() + 0x51 bytes
kernel32.dll!7c80b713()

The callstack is from this thread:

0    >    0x000015b8    Worker Thread    CAMThread::InitialThreadProc    0480b000    Normal    0

disassembly code:

017D0B5B  push        edx 
017D0B5C  mov         eax,dword ptr [ecx+8]
017D0B5F  call        eax 
017D0B61  cmp         esi,esp
017D0B63  call        @ILT+2525(__RTC_CheckEsp) (17C49E2h)
017D0B68  cmp         dword ptr [ebp-2Ch],0
017D0B6C  je          CSourceStream::DoBufferProcessingLoop+10Ah (17D0B8Ah)
017D0B6E  mov         eax,dword ptr [ebp-2Ch]

Problem exists at the line 017D0B5F call eax

This problem exists for most directshow filters ,how to fix?

I believe vcam.ax's source code is here , so probably the best option is to compile the source code locally and then attach to the process that's crashing in the debugger. Then you can put a breakpoint in the DoBufferProcessingLoop() implementation, recreate the crash, and you should be able figure out why you're crashing.

I'v used vcom.ax and encountered the same problem as yours. I solve it by following step. Add CAutoLock cAutoLock(&m_cSharedState); on the first Line of following function:

  • CVCamStream::CVCamStream() //constructor
  • CVCamStream::~CVCamStream() //distructor
  • HRESULT CVCamStream::FillBuffer(IMediaSample *pms)
  • HRESULT CVCamStream::OnThreadCreate()

This may solve your problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM