- 论坛徽章:
- 0
|
5可用积分
无缘无故的崩溃
(gdb) bt
#0 0x007bd9fb in sem_wait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#1 0x08052648 in DownDataPool::getData (this=0x0) at DownDataPool.h:44
#2 0x08050596 in CWASZBClientServer::deliver (this=0xb555900 at WASZBClientServer.cpp:322
#3 0x08055fe9 in WASClientServer:eliverData (pvthis=0xb555900 at ../was/WASClientServer.cpp:57
#4 0x007b93ae in start_thread () from /lib/tls/libpthread.so.0
#5 0x00649aee in clone () from /lib/tls/libc.so.6
(gdb) f 2
#2 0x08050596 in CWASZBClientServer::deliver (this=0xb555900 at WASZBClientServer.cpp:322
322 WASDownData dn_data = _downdatapool.getData();
(gdb) p this->_downdatapool
$1 = (DownDataPool & @0x8a261b8: {_sem_datapool = {__sem_lock = {__status = 0,
__spinlock = 6985784}, __sem_value = -1, __sem_waiting = 0x0}, _lock = {__m_reserved = 0,
__m_count = 0, __m_owner = 0x0, __m_kind = 0, __m_lock = {__status = 0, __spinlock = 0}},
_datapool = {<std::_List_base<WASDownData,std::allocator<WASDownData> >> = {
_M_impl = {<std::allocator<std::_List_node<WASDownData> >> = {<__gnu_cxx::new_allocator<std::_List_node<WASDownData> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x8a261e0,
_M_prev = 0x8a261e0}}}, <No data fields>}}
(gdb) f 1
#1 0x08052648 in DownDataPool::getData (this=0x0) at DownDataPool.h:44
44 while( 0 != sem_wait(&_sem_datapool) )
(gdb) p this
$2 = (DownDataPool * const) 0x0
(gdb)
实在不理解这是什么原因造成的,在f 2中p this->_downdatapool是正常的,但是进入f 1后 p this就是空了,这是什么原因造成的?请高手指点
刚才整理了一下,发现崩溃的地方改变了,而且同一地址打印的内容却不一样(最下两行红字),这是为哈?百思不得其解
(gdb) p cdp
$6 = (CacheDataPool *) 0x9be1180
(gdb) p cserver->_cachedatapool
$7 = (CacheDataPool *) 0x9be1180
(gdb) p cserver->_cachedatapool->_cache
$8 = {_M_t = {
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, WASDownData> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, WASDownData> > >> = {<No data fields>}, <No data fields>},
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, _M_header = {
_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x9c000000, _M_right = 0x9c09be11}, _M_node_count = 638481}}}
(gdb) p cdp->_cache
$9 = {_M_t = {
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, WASDownData> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, WASDownData> > >> = {<No data fields>}, <No data fields>},
_M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>}, <No data fields>}, _M_header = {
_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x9be119c, _M_right = 0x9be119c}, _M_node_count = 0}}}
(gdb)
[ 本帖最后由 rain_fish 于 2009-10-14 21:56 编辑 ] |
|