首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭时Boost日志中的Boost线程访问冲突

关闭时Boost日志中的Boost线程访问冲突
EN

Stack Overflow用户
提问于 2017-02-18 05:56:54
回答 1查看 1.2K关注 0票数 4

我有一个使用boost日志记录的应用程序。在关机期间,它会在null指针访问上获得访问冲突。当我单步执行代码到故障点时,似乎正在释放boost::log dll,然后boost::thread代码尝试访问日志dll曾经占用的内存。

我没有在自己的代码中使用任何boost线程,因此假设boost-thread dll由boost日志使用。

为了确保在关闭之前销毁所有接收器,我调用: core->flush()和core->remove_ all _ sinks ()

我使用的是boost 1.60,我也尝试过boost 1.63。同样的结果。

在退出/卸载dlls之前,有没有办法确保boost日志记录内核完全关闭?

EN

回答 1

Stack Overflow用户

发布于 2017-02-25 22:07:14

此问题可能与boost系统设置的区域设置对象有关。与您的情况类似,此区域设置可能会在Boost.Log取消初始化之前被销毁,这会导致崩溃。

根据boost文档,特别是日志文件轮换模块。他们为类似的case Boost known issues提供了一种解决方法

解决方案是在主循环中初始化locale,以便boost在结束时有足够的周期进行清理。

代码语言:javascript
复制
int main(int argc, char* argv[])
{
    boost::filesystem::path::imbue(std::locale("C"));
    initialize_log();

    // ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42308084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档