*****.exe 中 0x00000000772CA267 (ntdll.dll) 的未处理异常:0xC0000005:访问冲突写入位置 0xFFFFFCA800000000

Unhandled exception at 0x00000000772CA267 (ntdll.dll) in *****.exe : 0xC0000005: Access violation writing location 0xFFFFFCA800000000

我遇到了这个异常

Unhandled exception at 0x00000000772CA267 (ntdll.dll) in ******.exe: 0xC0000005: Access violation writing location 0xFFFFFCA800000000.

当我查看调用堆栈时,我没有在堆栈中看到我的代码,而是在下面:

ntdll.dll!RtlFreeHeap() Unknown
kernel32.dll!HeapFree() Unknown
winhttp.dll!CAuthData::Clear(void)  Unknown
winhttp.dll!HTTP_USER_REQUEST::_AdjustCredentialStates(unsigned short,int *)    Unknown
winhttp.dll!HTTP_USER_REQUEST::_ResponseProcessingLoop(class PENDING_API_CALL *)    Unknown
winhttp.dll!HTTP_USER_REQUEST::OnRecvResponse(unsigned long)    Unknown
winhttp.dll!WEBIO_REQUEST::OnIoComplete(unsigned long,unsigned __int64,class HTTP_ASYNC_OVERLAPPED *)   Unknown
winhttp.dll!HTTP_THREAD_POOL::_WorkItemCallback(void)   Unknown
ntdll.dll!TppWorkpExecuteCallback() Unknown
ntdll.dll!TppWorkerThread() Unknown
kernel32.dll!BaseThreadInitThunk()  Unknown
ntdll.dll!RtlUserThreadStart()  Unknown

我们使用 SOAP req/res。但是我们已经将几个 req/res 更新为 REST,而不是我们使用 json req/res。进行此更改后,我们遇到了上述问题。有时一切正常你可以说失败是 50% 次。

找到了这个问题的解决方案。实际上在这个调用之前有缓冲区溢出破坏了我的堆。修复缓冲区溢出解决了我的问题。