现象描述:
最近在调试程序的过程中发现,在测试机器上已经执行ulimit -c 0,程序在gdb调试时中assert之后,程序直接退出;后台执行程序,发现程序中assert之后一直在写磁盘。
截图ulimit -c 0
定位问题:
- 查看/proc/pid/fd下的信息定位不到写到什么地方,
- 使用iotop查看写磁盘速度100Mbps,定位不到写到什么地方;
- 使用pstack命令一直阻塞(程序在挂掉之后,此命令就不可用); 最后查看系统日志/var/log/messages,查到一些有用的信息,好像每次挂掉之后都会有abrt信息,上网查看abrt服务,最终定位是程序中assert之后abrt一直在写core文件。
- 截图展示
解决问题:
- 关闭abrtd服务,systemctl stop abrtd.service
- 修改配置文件,参照https://blog.csdn.net/lzyzuixin/article/details/53136508