I found this while comparing the debugs for the working case (where I
include
"view   systemonly  included   .1.3.6.1.2.1.4.1") the looping case where I
do not include
this:

In the working case, we see this (vacm:getView: , found...) and
we end up at "snmp_agent.c, 3300:" where we break out of that loop:

----
trace: vacm_check_view_contents(): mibgroup/mibII/vacm_conf.c, 1300:
mibII/vacm_vars: vacm_in_view: ver=1, community=public
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 425:
netsnmp_udp_getSecName: opaque = 0x13fdd00 (len = 60), sizeof = 60, family
= 2 (2)
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 442:
netsnmp_udp_getSecName: resolve <"public", 0x0100007f>
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 452:
netsnmp_udp_getSecName: compare <"public", 0.0.0.0/0.0.0.0>... SUCCESS
trace: netsnmp_subtree_find_first(): agent_registry.c, 313:
subtree: looking for subtree for context: ""
trace: netsnmp_subtree_find_first(): agent_registry.c, 317:
subtree: found one for: ""
trace: vacm_check_view_contents(): mibgroup/mibII/vacm_conf.c, 1431:
mibII/vacm_vars: vacm_in_view: sn=comm1, gn=grpcomm1, vn=systemonlytrace:
netsnmp_view_get(): vacm.c, 492:
vacm:getView: , found
, vt=1
trace: snmp_call_callbacks(): callback.c, 370:
callback: END calling callbacks for maj=1 min=0 (1 called)
trace: _callback_unlock(): callback.c, 170:
9:callback:lock: unlocked (APP,null)
trace: netsnmp_handle_request(): snmp_agent.c, 3300:
results: request results (status = 0):
trace: netsnmp_handle_request(): snmp_agent.c, 3303:
results:     IP-MIB::ipForwarding.0 = INTEGER: forwarding(1)
trace: _snmp_build(): snmp_api.c, 2918:
snmp_send: Building SNMPv2 message...
trace: _snmp_build(): snmp_api.c, 2921:
dumph_send: RESPONSE
trace: snmp_pdu_realloc_rbuild(): snmp_api.c, 3288:
snmp_pdu_realloc_rbuild: starting
trace: snmp_pdu_realloc_rbuild(): snmp_api.c, 3303:
dumph_send:   VarBind
trace: snmp_realloc_rbuild_var_op(): snmp.c, 339:
dumph_send:     Value
dumpx_send:      02 01 01
dumpv_send:        Integer:    1 (0x01)
trace: snmp_realloc_rbuild_var_op(): snmp.c, 440:
dumph_send:     Name
dumpx_send:      06 08 2B 06 01 02 01 04 01 00
dumpv_send:        ObjID: IP-MIB::ipForwarding.0
--------

And in the non-working case where we loop, we see
"vacm:getView: , none:"   and we loop at "snmp_agent.c, 3123":

----
trace: vacm_check_view_contents(): mibgroup/mibII/vacm_conf.c, 1300:
mibII/vacm_vars: vacm_in_view: ver=1, community=public
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 425:
netsnmp_udp_getSecName: opaque = 0x1663860 (len = 60), sizeof = 60, family
= 2 (2)
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 442:
netsnmp_udp_getSecName: resolve <"public", 0x0100007f>
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 452:
netsnmp_udp_getSecName: compare <"public", 0.0.0.0/0.0.0.0>... SUCCESS
trace: netsnmp_subtree_find_first(): agent_registry.c, 313:
subtree: looking for subtree for context: ""
trace: netsnmp_subtree_find_first(): agent_registry.c, 317:
subtree: found one for: ""
trace: vacm_check_view_contents(): mibgroup/mibII/vacm_conf.c, 1431:
mibII/vacm_vars: vacm_in_view: sn=comm1, gn=grpcomm1, vn=systemonlytrace:
netsnmp_view_get(): vacm.c, 492:
vacm:getView: , none

trace: snmp_call_callbacks(): callback.c, 370:
callback: END calling callbacks for maj=1 min=0 (1 called)
trace: _callback_unlock(): callback.c, 170:
9:callback:lock: unlocked (APP,null)
trace: handle_getnext_loop(): snmp_agent.c, 3123:
results: getnext results, before next pass:
trace: handle_getnext_loop(): snmp_agent.c, 3126:
results:     trace: sprint_realloc_by_type(): mib.c, 2008:
output: sprint_by_type, type 199
trace: sprint_realloc_by_type(): mib.c, 2068:
sprint_by_type: bad type: 199
IP-MIB::ipForwarding.0 = Wrong Type (should be INTEGER): Variable has bad
type
trace: netsnmp_add_varbind_to_cache(): snmp_agent.c, 2015:
snmp_agent: add_vb_to_cache(0x16636c0, 1, IP-MIB::ipForwarding.0, 0x14db6e0)
trace: _callback_lock(): callback.c, 136:
9:callback:lock: locked (APP,null)
trace: snmp_call_callbacks(): callback.c, 344:
callback: START calling callbacks for maj=1 min=12
trace: snmp_call_callbacks(): callback.c, 358:
callback: calling a callback for maj=1 min=12
trace: vacm_check_view_contents(): mibgroup/mibII/vacm_conf.c, 1300:
mibII/vacm_vars: vacm_in_view: ver=1, community=public
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 425:
netsnmp_udp_getSecName: opaque = 0x1663860 (len = 60), sizeof = 60, family
= 2 (2)
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 442:
netsnmp_udp_getSecName: resolve <"public", 0x0100007f>
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 452:
netsnmp_udp_getSecName: compare <"public", 0.0.0.0/0.0.0.0>... SUCCESS
trace: netsnmp_subtree_find_first(): agent_registry.c, 313:
subtree: looking for subtree for context: ""
trace: netsnmp_subtree_find_first(): agent_registry.c, 317:
subtree: found one for: ""
trace: vacm_check_view_contents(): mibgroup/mibII/vacm_conf.c, 1431:
mibII/vacm_vars: vacm_in_view: sn=comm1, gn=grpcomm1, vn=systemonly
trace: netsnmp_view_subtree_check(): vacm.c, 531:
9:vacm:checkSubtree: view systemonly
trace: netsnmp_view_subtree_check(): vacm.c, 616:
9:vacm:checkSubtree:
systemonly matched?
trace: netsnmp_view_subtree_check(): vacm.c, 629:
9:vacm:checkSubtree:  systemonly matched
trace: netsnmp_view_subtree_check(): vacm.c, 646:
vacm:checkSubtree: , unknown
trace: snmp_call_callbacks(): callback.c, 370:
callback: END calling callbacks for maj=1 min=12 (1 called)
trace: _callback_unlock(): callback.c, 170:
9:callback:lock: unlocked (APP,null)
trace: netsnmp_add_varbind_to_cache(): snmp_agent.c, 2090:
snmp_agent: tp->start IP-MIB::ipForwarding, tp->end IP-MIB::ipDefaultTTL,
trace: netsnmp_add_varbind_to_cache(): snmp_agent.c, 2110:
verbose:asp: asp 0x16636c0 reqinfo 0x164faf0 assigned to request
trace: netsnmp_add_varbind_to_cache(): snmp_agent.c, 2119:
verbose:asp: asp 0x16636c0 reqinfo 0x164faf0 assigned to request
trace: netsnmp_call_handlers(): agent_handler.c, 625:
handler:calling: main handler bulk_to_next
trace: netsnmp_call_handler(): agent_handler.c, 541:
handler:calling: calling handler bulk_to_next for mode GETNEXT
trace: netsnmp_call_handler(): agent_handler.c, 549:
handler:returned: handler bulk_to_next returned 0
trace: netsnmp_call_handler(): agent_handler.c, 541:
handler:calling: calling handler serialize for mode GETNEXT
trace: netsnmp_serialize_helper_handler(): helpers/serialize.c, 69:
helper:serialize: Got request
trace: netsnmp_call_handler(): agent_handler.c, 541:
handler:calling: calling handler scalar for mode GETNEXT
trace: netsnmp_scalar_helper_handler(): helpers/scalar.c, 178:
helper:scalar: Got request:
trace: netsnmp_scalar_helper_handler(): helpers/scalar.c, 184:
helper:scalar:   oid:IP-MIB::ipForwarding.0
trace: netsnmp_call_handler(): agent_handler.c, 541:
handler:calling: calling handler instance for mode GETNEXT
trace: netsnmp_instance_helper_handler(): helpers/instance.c, 776:
helper:instance: Got request:
trace: netsnmp_instance_helper_handler(): helpers/instance.c, 781:
helper:instance:   oid:IP-MIB::ipForwarding.0
trace: netsnmp_call_handler(): agent_handler.c, 541:
handler:calling: calling handler ipForwarding for mode GET
trace: netsnmp_call_handler(): agent_handler.c, 549:
handler:returned: handler ipForwarding returned 0
trace: netsnmp_call_handler(): agent_handler.c, 549:
handler:returned: handler instance returned 0
trace: netsnmp_call_handler(): agent_handler.c, 549:
handler:returned: handler scalar returned 0
trace: netsnmp_call_handler(): agent_handler.c, 549:
handler:returned: handler serialize returned 0
trace: _callback_lock(): callback.c, 136:
9:callback:lock: locked (APP,null)
trace: snmp_call_callbacks(): callback.c, 344:
callback: START calling callbacks for maj=1 min=0
trace: snmp_call_callbacks(): callback.c, 358:
callback: calling a callback for maj=1 min=0
trace: vacm_check_view_contents(): mibgroup/mibII/vacm_conf.c, 1300:
mibII/vacm_vars: vacm_in_view: ver=1, community=public
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 425:
netsnmp_udp_getSecName: opaque = 0x1663860 (len = 60), sizeof = 60, family
= 2 (2)
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 442:
netsnmp_udp_getSecName: resolve <"public", 0x0100007f>
trace: netsnmp_udp_getSecName(): transports/snmpUDPDomain.c, 452:
netsnmp_udp_getSecName: compare <"public", 0.0.0.0/0.0.0.0>... SUCCESS
trace: netsnmp_subtree_find_first(): agent_registry.c, 313:
subtree: looking for subtree for context: ""
trace: netsnmp_subtree_find_first(): agent_registry.c, 317:
subtree: found one for: ""
trace: vacm_check_view_contents(): mibgroup/mibII/vacm_conf.c, 1431:
mibII/vacm_vars: vacm_in_view: sn=comm1, gn=grpcomm1, vn=systemonlytrace:
netsnmp_view_get(): vacm.c, 492:
vacm:getView: , none

trace: snmp_call_callbacks(): callback.c, 370:
callback: END calling callbacks for maj=1 min=0 (1 called)
trace: _callback_unlock(): callback.c, 170:
9:callback:lock: unlocked (APP,null)
trace: handle_getnext_loop(): snmp_agent.c, 3123:
results: getnext results, before next pass:
trace: handle_getnext_loop(): snmp_agent.c, 3126:
results:     trace: sprint_realloc_by_type(): mib.c, 2008:
output: sprint_by_type, type 199
trace: sprint_realloc_by_type(): mib.c, 2068:
sprint_by_type: bad type: 199
IP-MIB::ipForwarding.0 = Wrong Type (should be INTEGER): Variable has bad
type
---

And in looking at the MIBs themselves, I see that the
IP-MIB (ip from mib-2 4)  defines an ipForwarding object as { ip 1 }
an ipDefaultTTL ( ip 2 } skips to ipReasmTimeout { ip 13 }...and skips over
to ipv6IpForwarding { ip 25 }.

ipForward is actually found in a different mib IP-FORWARD-MIB::ipForward
{ ip 24 }.  So even though this MIB explicitly imports ip from IP-MIB,
maybe this is
where the registration breaks down.

Is it possible that an explicit

"view   systemonly  included   .1.3.6.1.2.1.4.1 "

must be included in order to see a a table from a different (but related)
MIB IP-FORWARD-MIB::ipForward?

It seems that only a

"view   systemonly  included   .1.3.6.1.2.1.4.24"

is not enough to register the IP-FORWARD-MIB::ipForward table.

(I hesitated in attaching the logs as the working case is 10M and the
nonworking
case is 24M).
--Sam


On Tue, Sep 20, 2016 at 12:56 PM, Sam Tannous <stann...@gmail.com> wrote:

> No message in the logs....and increasing the timeout doesn't help.
> The daemon is off in la-la land...
>
> My forwarding file is empty:
>
> ----
> root@debian-stable:/home/stannous# cat /proc/sys/net/ipv4/conf/all/
> forwarding
> 0
> root@debian-stable:/home/stannous# netstat -rn
> Kernel IP routing table
> Destination     Gateway         Genmask         Flags   MSS Window  irtt
> Iface
> 0.0.0.0         10.50.10.1      0.0.0.0         UG        0 0          0
> eth0
> 10.50.0.11      10.50.10.1      255.255.255.255 UGH       0 0          0
> eth0
> 10.50.10.0      0.0.0.0         255.255.255.0   U         0 0          0
> eth0
> 169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0
> eth0
> root@debian-stable:/home/stannous#
> ----------
>
> The problem seems to be only in the implementation of 1.3.6.1.2.1.3
> (The address translation table: 1.3.6.1.2.1.3)
>
> If I skip this part of the walk (add 1.3.6.1.2.1.2 and skip directly to
> 1.3.6.1.2.1.4.24,  e.g.
>
> view   systemonly  included   .1.3.6.1.2.1.1
> view   systemonly  included   .1.3.6.1.2.1.2
> view   systemonly  included   .1.3.6.1.2.1.4.24
>
> I do not see snmpd hanging.
> I'm poking around in agent/mibgroup/mibII/at.c.
>
> Thanks,
>
>
> On Tue, Sep 20, 2016 at 8:52 AM, Robert Story <rst...@freesnmp.com> wrote:
>
>> On Wed, 7 Sep 2016 14:07:42 -0400 Sam wrote:
>> ST> Any ideas on how to resolve this?   The problem seems to be
>> ST> in "transitioning" from one mib to the next.
>> ST>
>> ST> On Mon, Jan 25, 2016 at 4:32 PM, Sam Tannous <stann...@users.sf.net>
>> wrote:
>> ST>
>> ST> > ------------------------------
>> ST> >
>> ST> > * [bugs:#2693] <http://sourceforge.net/p/net-snmp/bugs/2693/>
>> snmpwalk
>> ST> > causes snmpd hang and CPU spike*
>> ST> >
>> ST> > On latest debian (Jessie, snmpd 5.7.2.1, also seen on 5.7.3) we
>> noticed a
>> ST> > nasty bug where the snmpd
>> ST> > CPU spikes (to around 100%) and snmpd becomes completely
>> unresponsive.
>> ST> > Only way to recover is a restart.
>> ST> >
>> ST> > The problem appears to be in the transition (snmpwalk) from
>> .1.3.6.1.2.1.3
>> ST> > to .1.3.6.1.2.1.4
>> ST> >
>> ST> > The bug occurs only when we have "-V systemonly" on our community
>> string
>> ST> >
>> ST> >    rocommunity public default -V systemonly
>> ST> >
>> ST> > *and* we expose these tables:
>> ST> >
>> ST> >   view   systemonly  included   .1.3.6.1.2.1.1
>> ST> >   view   systemonly  included   .1.3.6.1.2.1.2
>> ST> >   view   systemonly  included   .1.3.6.1.2.1.3
>> ST> >   view   systemonly  included   .1.3.6.1.2.1.4.24
>> ST> >
>> ST> >              (Adding a view for .1.3.6.1.2.1.4.1 fixes this
>> problem!)
>> ST> >
>> ST> > The output we see before the freeze is this:
>> ST> >
>> ST> > root@jessie-1:/home/stannous# snmpwalk -v2c -cpublic localhost .1
>> ST> > ...
>> ST> > <output snipped>
>> ST> > ...
>> ST> > SNMPv2-SMI::mib-2.3.1.1.3.2.1.10.50.10.23 = IpAddress: 10.50.10.23
>> ST> > Timeout: No Response from localhost
>>
>> Does increasing the timeout help any? e.g.
>>
>>   snmpgetnext -v2c -cpublic -r 0 -t 300 localhost \
>>      SNMPv2-SMI::mib-2.3.1.1.3.2.1.10.50.10.23
>>
>> How big is the forwarding file?
>>
>>   cat /proc/sys/net/ipv4/conf/all/forwarding | wc -l
>>
>> Any log messages in the log while it's spinning its wheels?
>>
>>
>> \
>> --
>> Robert
>>
>
>
------------------------------------------------------------------------------
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to