我有这个奇怪的调用堆栈,我很难理解为什么。
在我看来,asio 调用 open ssl 的 read 然后得到一个负返回值 (-37) 。
Asio 似乎随后尝试在 memcpy 函数中使用它。
导致此调用堆栈的函数被使用了数百次而没有此错误。
它很少发生,大约每周一次。
ulRead = (boost::asio::read(spCon->socket(), boost::asio::buffer(_requestHeader, _requestHeader.size()), boost::asio::transfer_at_least(_requestHeader.size()), error_));
请注意,请求标头的大小始终为 3 个字节。
任何人都可以阐明可能的原因吗?
注意:我使用的是 boost asio 1.36
这是由于巨大的“计数”而在 memcpy 中发生的崩溃调用堆栈崩溃: