Le problème existe à 017D0B5F call eax
:Est-il possible de déduire quelle ligne dans la source a le problème selon le démontage?
017D0B56 mov esi,esp
017D0B58 mov edx,dword ptr [ebp-20h]
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]
017D0B71 push eax
017D0B72 push offset string "Deliver() returned %08x; stoppin"... (17F7278h)
est ici la source correspondante:
// Virtual function user will override.
hr = FillBuffer(pSample);
if (hr == S_OK) {
hr = Deliver(pSample);
pSample->Release();
// downstream filter returns S_FALSE if it wants us to
// stop or an error if it's reporting an error.
if(hr != S_OK)
{
DbgLog((LOG_TRACE, 2, TEXT("Deliver() returned %08x; stopping"), hr));
return S_OK;
}
Est-il possible de déduire quelle ligne source a le problème selon le démontage?
MISE À JOUR
Qu'est-ce que cela signifie __RTC_CheckEsp
?
MAJ2
Reproduire débogueur
Update3
Avez-vous essayé de le reproduire dans un débogueur? – sbi
Oui, je viens de joindre la capture d'écran pour cela. – ollydbg
1. Êtes-vous sûr que Deliver ne le "libère" pas pour vous? C'est à dire une erreur de double libération. 2. Vérifiez que le vtable semble correct. 3. Il est également possible que Release soit mal implémentée dans ce cas. – FuleSnabel