外网崩溃现象:
1.多台物理机中的多个进程消失,而且都是场景进程。
2.core文件都很小,看了 ulimit -a 和 cat proc/pid/limits (都很正常。看这个是为了以后core文件正常。)
3.场景日志中堆栈信息都是 libc.so.6 (abort 或者 malloc)
4.场景日志中在崩溃堆栈信息的前一条都是某玩家离线打印出来的日志。
gdb调试core文件后报错内容如题:Program terminated with signal 6, Aborted.
跟之前的主程交流后,可能double free,也可能内存不足,要查下最近提交代码,最后发现是数组越界。解决办法:1.查看每个崩溃堆栈信息,运气好就碰到跟代码逻辑相关的。2.查看最近提交代码,多查看数组越界,double free。
------------------------------------------------
结果已经知道了,那么分析现象,第4条是偶然,第3条的 malloc是偶然,所以有时候现象会影响自己的判断,要时刻保留疑问。
以下是堆栈信息: