为了在我的应用程序中基于Liv555库搜索内存泄漏,我尝试使用valgrind运行它.它会导致以下错误:
vex amd64->IR: unhandled instruction bytes: 0xC5 0xF9 0x57 0xC0 0xC5 0xFA 0x10 0x15
Run Code Online (Sandbox Code Playgroud)
在另一台计算机上运行它不会导致此错误(它运行正常),所以我希望这是一些库版本的结果.这可能是问题吗?如果是这样,有谁知道哪个库可能导致错误?valgrind带有-v -v选项的输出位于此处.
作为项目的一部分,我正在编写记录器功能.当程序想要记录某些内容时,此记录器功能会发送电子邮件.由于SMTP服务器没有响应,我决定在单独的线程中发送邮件.该线程从std :: deque读取消息,该消息由日志记录函数填充.该线程设置如下:
while (!boost::this_thread::interruption_requested())
{
EmailItem emailItem;
{
boost::unique_lock<boost::mutex> lock(mMutex);
while (mEmailBuffer.empty())
mCond.wait(lock);
bufferOverflow = mBufferOverflow;
mBufferOverflow = false;
nrOfItems = mEmailBuffer.size();
if (nrOfItems > 0)
{
emailItem = mEmailBuffer.front();
mEmailBuffer.pop_front();
}
}
if (nrOfItems > 0)
{
bool sent = false;
while(!sent)
{
try
{
..... Do something with the message .....
{
boost::this_thread::disable_interruption di;
boost::lock_guard<boost::mutex> lock(mLoggerMutex);
mLogFile << emailItem.mMessage << std::endl;
}
sent = true;
}
catch (const std::exception &e)
{
// Unable to send mail, an …Run Code Online (Sandbox Code Playgroud)