auto_nlist failed on cp_time at location 1

Dan Nelson dnelson at allantgroup.com
Thu Apr 24 15:57:08 UTC 2008


In the last episode (Apr 24), Tim Stoddard said:
> I applied your patch by hand and recompiled/reinstalled net-snmp,
> however I am still seeing the same error just on a different memory
> address now.
> 
> Apr 24 10:16:41 shaggy snmpd[73273]: kvm_read(*, 1, 0xbf7fe830, 20) = -1: kvm_read: Bad address
> Apr 24 10:16:41 shaggy snmpd[73273]: auto_nlist failed on cp_time at location 1
> Apr 24 10:16:46 shaggy snmpd[73273]: kvm_read(*, 1, 0xbf7fe830, 20) = -1: kvm_read: Bad address
> Apr 24 10:16:46 shaggy snmpd[73273]: auto_nlist failed on cp_time at location 1
> Apr 24 10:16:51 shaggy snmpd[73273]: kvm_read(*, 1, 0xbf7fe830, 20) = -1: kvm_read: Bad address
> Apr 24 10:16:51 shaggy snmpd[73273]: auto_nlist failed on cp_time at location 1

Hm.  It looks like net-snmp has two different pieces of code that both
do the same thing (read CPU and vmstat info).  I wonder which OIDs
trigger them on your system?  On my system, walking
enterprises.ucdavis.systemStats uses the cpu_nlist.c code.  Here's a
patch for the other file (vmstat_freebsd2.c); it's not even compiled on
my 7-stable system, so I can't verify that it's correct.  I'm not sure
why my first patch didn't apply; I attached it straight out of my
net-snmp/files/ directory.

-- 
	Dan Nelson
	dnelson at allantgroup.com
-------------- next part --------------
--- agent/mibgroup/ucd-snmp/vmstat_freebsd2.c	2008-04-24 10:25:59.834152091 -0500
+++ agent/mibgroup/ucd-snmp/vmstat_freebsd2.c	2008-04-24 10:25:59.834152091 -0500
@@ -189,13 +189,15 @@
      * Update structures (only if time has passed) 
      */
     if (time_new != time_old) {
+        int size;
         time_diff = time_new - time_old;
         time_old = time_new;
 
         /*
          * CPU usage 
          */
-        auto_nlist(CPTIME_SYMBOL, (char *) cpu_new, sizeof(cpu_new));
+        size = sizeof(cpu_new);
+        sysctlbyname("kern.cp_time", &cpu_new, &size, NULL, 0);
 
         cpu_total = 0;
 


More information about the freebsd-stable mailing list