Hello coders!

Now I'm hundred percent positively sure, that has to be some bug in handling
SET requests between starting/killing subagent because I built new master
agent from the tarbal 5.3.0.1 (subagents were the same), the same test case
already described in mail 'Master agent goes dead' and after few ten times
of starting and killing agent together with WALKing and SETing only one
parameter (registered in handler in master agent) it hapens always, that
master becomes unresponsive to the SNMP request.

And this is because every further request is added to the queue instead of
processed immediatly. Bellow is the listing of from gdb with marked key
points.

So, what is going wrong before that event, that set is processed in wrong
way?


Nice weekend,
Igor G.




> -----Original Message-----
> From: Robert Story [mailto:[EMAIL PROTECTED]
> Sent: 9. januar 2006 19:36
> To: Grasic Igor
> Cc: net-snmp-coders@lists.sourceforge.net
> Subject: Re: Master agent goes dead
>
>
> On Mon, 9 Jan 2006 08:34:09 +0100 Grasic wrote:
> GI>     Hello Dave,
>
> Hmppf. Despite the way that it sometimes appears, Dave is not
> the only person
> who helps out on this list.
>
> GI> > Have you tried 5.3?
> GI>
> GI> I have to admit that I did not [...]
> GI>



============================================================================
=======
Breakpoint 1, _sess_process_packet (sessp=0xb4a70, sp=0xb4a70, isp=0xb4cf0,
    transport=0xb4cd8, opaque=0xb4d28, olength=0, packetptr=0xbffffb6c "\t",
    length=65536) at snmp_api.c:5093
5093      netsnmp_request_list *rp, *orp = NULL;
(gdb) n
5090    {
(gdb)
5101      if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
(gdb)
5093      netsnmp_request_list *rp, *orp = NULL;
(gdb)
5095      int             ret = 0, handled = 0;
(gdb)
5090    {
(gdb)
5101      if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
(gdb)
5121      if (isp->hook_pre) {
(gdb)
5122        if (isp->hook_pre(sp, transport, opaque, olength) == 0) {
(gdb)
5131      if (isp->hook_create_pdu) {
(gdb)
5134        pdu = snmp_create_sess_pdu(transport, opaque, olength);
(gdb)
5136      if (pdu == NULL) {
(gdb)
5134        pdu = snmp_create_sess_pdu(transport, opaque, olength);
(gdb) n
5136      if (pdu == NULL) {
(gdb)
5144      if (isp->hook_parse) {
(gdb)
5147        ret = snmp_parse(sessp, sp, pdu, packetptr, length);
(gdb)
5154      if (isp->hook_post) {
(gdb)
5147        ret = snmp_parse(sessp, sp, pdu, packetptr, length);
(gdb)
5154      if (isp->hook_post) {
(gdb)
5155        if (isp->hook_post(sp, pdu, ret) == 0) {
(gdb)
5161      if (ret != SNMP_ERR_NOERROR) {
(gdb)
5186      if (pdu->flags & UCD_MSG_FLAG_RESPONSE_PDU) {
(gdb)
5329        if (sp->callback) {
(gdb)
5334          sp->callback(NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE,
(gdb)
5333          handled = 1;
(gdb)
5334          sp->callback(NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE,
(gdb)
5333          handled = 1;
(gdb)
5334          sp->callback(NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE,
(gdb)

Breakpoint 2, netsnmp_handle_request (asp=0x2f7a28, status=988768)
    at snmp_agent.c:3001
3001        if ((0 == netsnmp_check_delegated_chain_for(asp)) &&
(gdb) n
3007            if (netsnmp_processing_set) {
(gdb) p netsnmp_processing_set
$1 = (struct netsnmp_agent_session_s *) 0x1035a8
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                                  |||||||||||||||
                                   I THINK THIS SHOULD BE SET TO NULL,
NORMALY

(gdb) p *netsnmp_processing_set
$2 = {mode = 0, session = 0xb4d28, pdu = 0x4d60e8, orig_pdu = 0x4c1058,
  rw = 1, exact = 1, status = 0, index = 0, oldmode = 0, next = 0xfe4f8,
  reqinfo = 0x118e30, requests = 0x0, treecache = 0x0, bulkcache = 0x0,
  treecache_len = 0, treecache_num = -1, cache_store = 0x0, vbcount = 0}
(gdb) p *netsnmp_processing_set->pdu
$3 = {version = 1, command = 163, reqid = 1682479793, msgid = 0,
  transid = 73837, sessid = 0, errstat = 0, errindex = 0, time = 0, flags =
0,
  securityModel = 2, securityLevel = 1, msgParseModel = 0,
  transport_data = 0x4d37c0, transport_data_length = 16, tDomain = 0x7c894,
  tDomainLen = 7, variables = 0x501df8, community = 0x102c58 "public",
  community_len = 6, enterprise = 0x0, enterprise_length = 0, trap_type = 0,
  specific_type = 0, agent_addr = "\000\000\000", contextEngineID = 0x0,
  contextEngineIDLen = 0, contextName = 0x0, contextNameLen = 0,
  securityEngineID = 0x0, securityEngineIDLen = 0, securityName = 0x0,
  securityNameLen = 0, priority = 0, range_subid = 0, securityStateRef =
0x0}
(gdb) p *netsnmp_processing_set->orig_pdu
$4 = {version = 1, command = 163, reqid = 1682479793, msgid = 0,
  transid = 73837, sessid = 0, errstat = 0, errindex = 0, time = 0, flags =
0,
  securityModel = 2, securityLevel = 1, msgParseModel = 0,
  transport_data = 0x135288, transport_data_length = 16, tDomain = 0x7c894,
  tDomainLen = 7, variables = 0x4ec120, community = 0x4b0350 "public",
  community_len = 6, enterprise = 0x0, enterprise_length = 0, trap_type = 0,
  specific_type = 0, agent_addr = "\000\000\000", contextEngineID = 0x0,
  contextEngineIDLen = 0, contextName = 0x0, contextNameLen = 0,
  securityEngineID = 0x0, securityEngineIDLen = 0, securityName = 0x0,
  securityNameLen = 0, priority = 0, range_subid = 0, securityStateRef =
0x0}
(gdb) p *netsnmp_processing_set->session
$5 = {version = -1, retries = 5, timeout = 1000000, flags = 0,
  subsession = 0x0, next = 0x0, peername = 0x0, remote_port = 0,
  localname = 0x0, local_port = 0, authenticator = 0,
  callback = 0x24db8 <handle_snmp_packet>, callback_magic = 0x0, s_errno =
0,
  s_snmp_errno = 0, sessid = 4, community = 0xb4e28 "", community_len = 0,
  rcvMsgMaxSize = 65507, sndMsgMaxSize = 0, isAuthoritative = 1 '\001',
  contextEngineID = 0x0, contextEngineIDLen = 0, engineBoots = 0,
  engineTime = 0, contextName = 0xb4e98 "", contextNameLen = 0,
  securityEngineID = 0x0, securityEngineIDLen = 0, securityName = 0x0,
  securityNameLen = 0, securityAuthProto = 0xb4e38, securityAuthProtoLen =
10,
  securityAuthKey = '\0' <repeats 31 times>, securityAuthKeyLen = 0,
  securityAuthLocalKey = 0x0, securityAuthLocalKeyLen = 0,
  securityPrivProto = 0xb4e68, securityPrivProtoLen = 10,
  securityPrivKey = '\0' <repeats 31 times>, securityPrivKeyLen = 0,
  securityPrivLocalKey = 0x0, securityPrivLocalKeyLen = 0, securityModel =
3,
  securityLevel = 1, paramName = 0x0, securityInfo = 0x0, myvoid = 0x0}
(gdb) p *netsnmp_processing_set->reqinfo
$6 = {mode = 0, asp = 0x0, agent_data = 0x0}
(gdb) p netsnmp_processing_set
$7 = (struct netsnmp_agent_session_s *) 0x1035a8
(gdb) p asp
$8 = (struct netsnmp_agent_session_s *) 0x2f7a28
(gdb) n
3029                    netsnmp_add_queued(asp);
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                          ||||||||||||
                                   I THINK THIS SHOULD BE SET TO NULL,
NORMALY

(gdb)
3030                    return 1;
(gdb)
3071    }
(gdb)
_sess_process_packet (sessp=0xb4cd8, sp=0xb4d28, isp=0xb4cf0,
    transport=0xf1660, opaque=0xe9f08, olength=16,
    packetptr=0x4689d8
"0)\002\001\001\004\006public|\034\002\004G/|\"\002\001", length=43) at
snmp_api.c:5345
============================================================================
=======




















-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to