Just in case there is anyone interested in this issue, here's a follow-up.
I found that the SNMP agent built from the same software on two
different machines behaved differently: one would core on startup
while processing the override, the other would not.
The only relevant difference I could find between the machines
(i.e., the only difference reported by the configure script) was
that one producing the crashing agent had g77 installed, while
the good one (which used gfortran) did not.
Also, the crash went away when I built at optimization level 1
instead of the default level 2. That is, I gave the configure
script "--with-cflags=-1 -O1".
So the crashes seem to be related to using the legacy g77 fortan
compiler and C optimization level 2.
Cheers.
On 5/9/11 9:16 AM, John Hardin wrote:
> I'm experiencing a segfault when I use the "override" command
> in the snmpd.conf file to set sysDescr. I'm running Net-SNMP
> version 5.4.2.1 built for a 64-bit RHEL5 system.
>
> When it dies, it always dies at the same spot (see back trace below),
> but it doesn't always die. Sometimes it works. But if I set it up to
> kill and restart every 60 seconds, I'll come back in an hour and
> have a bunch of cores.
>
> I notice there was a bug a while back (bug #432181) that was closed
> as ERRATA and seemed to think the problem had been fixed. This
> from the bug history:
>
> > crash was fixed for 5.1.3 release line, however the token failed to
> > actually override. Fixed for 5.1.4. Should already be working in
> 5.2.x and
> > later releases.
> Apparently it's still a problem in 5.4.2.1. Is anyone else seeing
> this problem?
>
>
> Here's verification of the version I'm running:
>
> $ snmpwalk -c public -v2c 10.51.6.201 UCD-SNMP-MIB::versionTag
> UCD-SNMP-MIB::versionTag.0 = STRING: 5.4.2.1
>
>
> Here's the line in the snmpd.conf file that triggers the problem:
>
> override sysDescr.0 octet_str "Venturi VVO VenturiVVO1000 2.1.0.35"
>
>
> If I comment out that line, I can start and stop for hours with no cores, so
> it's definitely related to the override command.
>
> Here's the backtrace:
>
> Core was generated by `/usr/local/vvo/snmp/sbin/snmpd -c
> /usr/local/vvo/snmp/snmpd.conf -Lf /usr/local'.
> Program terminated with signal 11, Segmentation fault.
> #0 get_module_node (fname=<value optimized out>, module=<value
> optimized out>, objid=0x7fff15f16330,
> objidlen=0x7fff15f16738) at mib.c:5002
> 5002 mib.c: No such file or directory.
> in mib.c
> (gdb) bt
> #0 get_module_node (fname=<value optimized out>, module=<value
> optimized out>, objid=0x7fff15f16330,
> objidlen=0x7fff15f16738) at mib.c:5002
> #1 0x00007ffe0d4ae440 in get_node (name=0x7523b9 "",
> objid=0x7fff15f16330, objidlen=0x7fff15f16738)
> at mib.c:5485
> #2 0x00007ffe0d4b18d5 in snmp_parse_oid (argv=0x7fff15f14330
> "sysDescr.0", root=0x7fff15f16330,
> rootlen=0x7fff15f16738) at mib.c:5860
> #3 0x00007ffe0d7d2477 in netsnmp_parse_override (token=<value
> optimized out>, line=<value optimized out>)
> at utilities/override.c:133
> #4 0x00007ffe0d4e05d0 in run_config_handler (lptr=0x6d2e90,
> token=0x7fff15f16fd0 "override",
> cptr=0x7fff15f173d9 "sysDescr.0 octet_str \"Venturi VVO
> VenturiVVO1000 2.1.0.35\"",
> when=<value optimized out>) at read_config.c:507
> #5 0x00007ffe0d4e07d9 in read_config (filename=0x7bf430
> "/usr/local/vvo/snmp/snmpd.conf",
> line_handler=0x608a20, when=0) at read_config.c:797
> #6 0x00007ffe0d4e216b in read_configs_optional
> (optional_config=<value optimized out>, when=0)
> at read_config.c:844
> #7 0x00007ffe0d4e2464 in read_configs () at read_config.c:871
> #8 0x0000000000403e3e in main ()
>
>
> Here's the code in mib.c where it dies:
>
> static int
> node_to_oid(struct tree *tp, oid * objid, size_t * objidlen)
> {
> int numids, lenids;
> oid *op;
>
> if (!tp || !objid || !objidlen)
> return 0;
>
> lenids = (int) *objidlen;
> op = objid + lenids; /* points after the last element */
>
> for (numids = 0; tp; tp = tp->parent, numids++) {
> if (numids>= lenids)
> continue;
> --op;
> *op = tp->subid;<--- it dies right here
> }
>
> *objidlen = (size_t) numids;
> if (numids> lenids) {
> return 0;
> }
>
> if (numids< lenids)
> memmove(objid, op, numids * sizeof(oid));
>
> return (numids);
> }
>
>
> Thanks in advance for any light anyone can throw on this.
>
> -John
>
>
> ------------------------------------------------------------------------------
> WhatsUp Gold - Download Free Network Management Software
> The most intuitive, comprehensive, and cost-effective network
> management toolset available today. Delivers lowest initial
> acquisition cost and overall TCO of any competing solution.
> http://p.sf.net/sfu/whatsupgold-sd
> _______________________________________________
> Net-snmp-users mailing list
> [email protected]
> Please see the following page to unsubscribe or change other options:
> https://lists.sourceforge.net/lists/listinfo/net-snmp-users
>
------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Discover what all the cheering's about.
Get your free trial download today.
http://p.sf.net/sfu/quest-dev2dev2
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users