Log4Cxx 0.10.0 在 Linux 下退出程序时导致程序中断
文章目录
最近在写 Linux 程序的时候,碰到这样的问题:Log4Cxx 0.10.0 在 Linux 下退出程序时导致程序中断,即提示出现 segmentation fault 错误。
如果你用 gdb 调试,会提示如下信息:
Program received signal SIGSEGV, Segmentation fault. 0x02fa68f3 in apr_vformatter () from /usr/lib/libapr-1.so.0
原因是因为 Log4Cxx 在退出时有非法的资源释放。
有一个解决办法:可以在程序退出时,显示地关闭 Log4Cxx 对象。
I have the same problem if I use log4cxx.AsyncAppender. I fixed the problem by calling log4cxx::LogManager::shutdown(); before the end of the process. It's not very clean but it works.
log4cxx::LogManager::shutdown();
来清理 log4cxx,而不是让它自己来清理。
注意: 需要在程序所有可能退出的地方,设置这一语句 ,否则依然会有 segmentation fault 的问题。
文章作者 cookwhy
上次更新 2012-01-17