记二次C++游戏服务器CPU 100% 解决过程

第一次:

top -c 查看一下进程ID : 30850

pstack 30850 查看一下当前堆栈的信息,  刷一闪, 满屏std的东西~~

一个一个线程慢慢看下来, 发现代码最终在: strText.replace(size, strlen(pszSrcText), pszDestText); 

再往上看一层 strReplace(text, "'", "''"), 字符串替换触发死循环, 解决~

 

第二次:

top -c 查看进程ID, 118947

线程信息

Thread 7 (Thread 0x7f3c5af0c700 (LWP 118990)):
#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135

Thread 4 (Thread 0x7f3c594f6700 (LWP 119003)):
#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135

 

线程4和7死锁, 把这个锁的占用者找出来, 发现是线程5出触发了网络消息回环占用了锁, BUG导致一直释放不了

解决~

 

希望不要有第三次~

 

 

posted @ 2019-12-04 20:49  manhelp  阅读(508)  评论(0编辑  收藏  举报