您好,欢迎来到星星旅游。
搜索
您的当前位置:首页异常死锁问题定位

异常死锁问题定位

来源:星星旅游

一、根据log或现象初步判断表现出异常的线程

如:我遇到一起死锁的例子,现象是websocket通信突然断开,无法处理任何消息。
于是把websocker的数据处理线程的调用栈用gdb打印出来,如下:

Thread 24 (Thread 0x7f37a37fe700 (LWP 20827)):
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_/lowlevellock.S:135
#1  0x00007f37f41dbe42 in __GI___pthread_mutex_lock (mutex=0xde65a8) at ../nptl/pthread_mutex_lock.c:115
#2  0x00007f37f7b2e43b in __gthread_mutex_lock (__mutex=0xde65a8) at /usr/local/include/c++/7.4.0/x86_-pc-linux-gnu/bits/gthr-default.h:748
#3  0x00007f37f7b2e48b in __gthread_recursive_mutex_lock (__mutex=0xde65a8) at /usr/local/include/c++/7.4.0/x86_-pc-linux-gnu/bits/gthr-default.h:810
#4  0x00007f37f7b32bc8 in std::recursive_mutex::lock (this=0xde65a8) at /usr/local/include/c++/7.4.0/mutex:107
#5  0x00007f37f7b32dfa in std::lock_guard<std::recursive_mutex>::lock_guard (this=0x7f37a37fd010, __m=...) at /usr/local/include/c++/7.4.0/bits/std_mutex.h:162
#6  0x00007f37f7b31aad in RobotStateManage::isContainState (this=0xde6590, stateId=emStateId::BcsAbnormalStateId)
    at /data/weiy/RV_POS/Cpp/robotself_new/src/cphu/src/robotStateManage.cpp:302
#7  0x00007f37f7ad6eda in CentreManage::isContainState (this=0xde6570, stateId=emStateId::BcsAbnormalStateId)
    at /data/weiy/RV_POS/Cpp/robotself_new/src/cphu/src/centremanage.cpp:9
#8  0x00007f37f718056f in robotControl::on_message (this=0x10c4a20, sessionId=2, msgJson=...)
    at /data/weiy/RV_POS/Cpp/robotself_new/src/componentLib/websocketServer/src/robotControl.cpp:142
#9  0x00007f37f720d00e in std::__invoke_impl<void, void (robotControl::*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >), std::shared_ptr<robotControl>&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__invoke_memfun_deref, void (robotControl::*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >), std::shared_ptr<robotControl>&, int&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (__f=
    @0x10c4b50: (void (robotControl::*)(robotControl * const, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)) 0x7f37f71800d6 <robotControl::on_message(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)>, __t=..., 
    __args#0=<unknown type in ../lib/libwebsocketServer.so, CU 0x744a90, DIE 0x80cbc7>, 
    __args#1=<unknown type in ../lib/libwebsocketServer.so, CU 0x744a90, DIE 0x80cbd6>) at /usr/local/include/c++/7.4.0/bits/invoke.h:73
#10 0x00007f37f720c7a1 in std::__invoke<void (robotControl::*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >), std::shared_ptr<robotControl>&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(void (robotControl::*&)(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >), std::shared_ptr<robotControl>&, int&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (__fn=
    @0x10c4b50: (void (robotControl::*)(robotControl * const, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)) 0x7f37f71800d6 <robotControl::on_message(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)>, __args#0=..., 
    __args#1=<unknown type in ../lib/libwebsocketServer.so, CU 0x744a90, DIE 0x813a32>, 
    __args#2=<unknown type in ../lib/libwebsocketServer.so, CU 0x744a90, DIE 0x813a41>) at /usr/local/include/c++/7.4.0/bits/invoke.h:95
#11 0x00007f37f720c0f4 in std::_Bind<void (robotControl::*(std::shared_ptr<robotControl>, std::_Placeholde

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务