- 论坛徽章:
- 0
|
info locals截图如下:
(gdb) bt
#0 0x00000000005e2204 in _sess_process_packet (sessp=0x2aaaac02c240, sp=0x2aaaac02d380, isp=0x2aaaac02d310, transport=<value optimized out>,
opaque=<value optimized out>, olength=<value optimized out>, packetptr=0x2aaaacae5b00 "00\002\001\001\004\nthbczh2005\242\037\002\004l\260\215\232\002\001",
length=50) at snmp_api.c:5498
#1 0x00000000005e3b95 in _sess_read (sessp=0x2aaaac02c240, fdset=<value optimized out> at snmp_api.c:6043
#2 0x00000000005e4359 in snmp_sess_read2 (sessp=0x1, fdset=0x0) at snmp_api.c:6075
#3 0x00000000005e43af in snmp_sess_read (sessp=0x2aaaac02c240, fdset=0x43c2a210) at snmp_api.c:6063
#4 0x0000000000577a65 in CSnmpWrapper::recv_async_response (this=0x2aaaac02d0a0) at ../../source/snmpmanager/CSnmpWrapper.cpp:851
#5 0x0000000000506d67 in CMonDevice::process_snmp_result_new (this=0x2aaab196859 at ../../source/snmpmanager/CAsyncGetDevices.cpp:343
#6 0x0000000000508126 in CAsyncGetDevices::run (this=0x17abd580, nNow=1370069141) at ../../source/snmpmanager/CAsyncGetDevices.cpp:1002
#7 0x000000000050cd9b in CAyncGetThread::Run (this=0x17abd560) at ../../source/snmpmanager/CAsyncGetThread.cpp:41
#8 0x00000000004431c5 in CThread::_ThreadEntry (pParam=0x17abd560) at ../../source/event/Thread.cpp:27
#9 0x0000003e52e0673d in start_thread () from /lib64/libpthread.so.0
#10 0x0000003e526d3d1d in clone () from /lib64/libc.so.6
(gdb) info locals
callback = <value optimized out>
magic = <value optimized out>
pdu = 0x2aaaac10e430
rp = 0x1
orp = 0x18ee9720
sptr = <value optimized out>
ret = <value optimized out>
handled = 1
__func__ = "_sess_process_packet"
循环检查过,死锁之类的都不存在。产生的core文件,也检查不到是死循环,应该可以排除这点。
我疑惑的是堆栈中的第2,3,4帧的参数sessp,变化后,怎么又变回来了,但到第1帧时又变掉了,结果访问这个指针的内容时,就发生异常退出了。 |
|