【问题标题】:Unhandled exception at 0x00000000772CA267 (ntdll.dll) in *****.exe : 0xC0000005: Access violation writing location 0xFFFFFCA800000000*****.exe 中 0x00000000772CA267 (ntdll.dll) 处的未处理异常:0xC0000005:访问冲突写入位置 0xFFFFCA800000000
【发布时间】:2019-03-16 04:32:52
【问题描述】:

我遇到了这个异常

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

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

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 更新为 REST,而不是我们使用 json req/res。在此更改之后,我们得到了上述问题。有时一切正常 你可以说失败是 50% 次。

【问题讨论】:

  • 你需要调试你的代码。您没有在此处发布的代码出现问题,可能是某个地方的缓冲区溢出,ntdll.dll!RtlFreeHeap() 建议这样做..
  • 您的代码似乎损坏了堆
  • 我只能从 VS 获得调用堆栈上方
  • 有什么技术/工具可以找出缓冲区溢出发生在哪里?
  • TppWorkerThread - 这是来自系统线程池的工作线程。它执行 winhttp 库回调。 (WEBIO_REQUEST::OnIoComplete) - 这里没有你的代码和错误。堆已经在另一个地方损坏了

标签: c++ windows winapi visual-studio-debugging winhttp


【解决方案1】:

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

【讨论】:

  • 感谢您在这里分享您的解决方案,您可以Accept it as an Answer。这对阅读此主题的其他社区成员可能会有所帮助,我们可以关闭此主题,谢谢。
猜你喜欢
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多