[SNMP4J] NPE possible during shutdown

Frank Fock fock at agentpp.com
Sat Apr 16 11:32:18 CEST 2016


Hi Klaus,

 From the stack trace alone I cannot figure out, what is really causing this
NPE. It guess, some instrumentation code (update routine) is setting a null
value on the CombinedBitsType.
To workaround this issue, you can replace the transformFromNative method
in CombinedBitsType with the following:

public Object transformFromNative(Object nativeValue, ObjectName objectName) {
   if (nativeValue ==null) {
     return null;
   }
   byte[] bits =null;
   for (TypedAttribute a :proxyAttribute) {
     Object n = ((CompositeDataSupport)nativeValue).get(a.getName());
     n = a.transformFromNative(n,null);
     byte[] bytes = (byte[])n;
     if (bits ==null) {
       bits = bytes;
     }
     else if (bits.length < bytes.length) {
       for (int i=0; i<bits.length; i++) {
         bytes[i] |= bits[i];
       }
       bits = bytes;
     }
     else {
       for (int i=0; i<bytes.length; i++) {
         bits[i] |= bytes[i];
       }
     }
   }
   return bits;
}


Best regards,
Frank

Am 15.04.2016 um 12:37 schrieb Klaus Pittig:
> Library-Version: snmp4j-agent-2.4.2.jar (together with snmp4j-2.4.3 and
> snmp4j-agent-jmx-2.1.0)
>
> I'm facing a minor(?) problem during Shutdown
>
> On a (Windows 7) host with Java 8 (1.8.0_77) machine we use a java service
> wrapper (yajsw-12) for an application that starts a JMXTestAgent clone. Works
> fine so far, but on a Ctrl-C/SIGTERM the ShutdownHook starts and we sometimes
> (not always) see the following NPE.
>
> StackTrace:
>
> INFO|wrapper|16-04-14 18:14:57|stopping process with pid/timeout 7730 45000
> INFO|wrapper|16-04-14 18:14:57|Shutting down Wrapper INFO|7730/0|16-04-14
> 18:14:57| wrapper manager received stop command FINEST|7730/0|16-04-14
> 18:14:57|java.lang.NullPointerException FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.mo.jmx.types.CombinedBitsType.transformFromNative(CombinedBitsType.java:37)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.mo.jmx.MBeanAttributeMOTableSupport.getRow(MBeanAttributeMOTableSupport.java:174)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.mo.jmx.JMXTableModel$JMXTableRowIterator.next(JMXTableModel.java:228)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.mo.jmx.JMXTableModel$JMXTableRowIterator.next(JMXTableModel.java:194)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.mo.DefaultMOTable.save(DefaultMOTable.java:1277)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.io.MOServerPersistence.writeData(MOServerPersistence.java:225)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.io.MOServerPersistence.saveData(MOServerPersistence.java:181)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.io.DefaultMOPersistenceProvider.store(DefaultMOPersistenceProvider.java:148)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.BaseAgent.saveConfig(BaseAgent.java:292) FINEST|7730/0|16-04-14
> 18:14:57| at org.snmp4j.agent.BaseAgent$1.run(BaseAgent.java:306)
> FINEST|7730/0|16-04-14 18:14:57|Uncaught exception by Thread[Thread-12,5,main]:
> FINEST|7730/0|16-04-14 18:14:57|java.lang.NullPointerException:null
> FINEST|7730/0|16-04-14 18:14:57|java.lang.NullPointerException
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.mo.DefaultMOTable.getPersistentValues(DefaultMOTable.java:1313)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.mo.DefaultMOTable.save(DefaultMOTable.java:1286)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.io.MOServerPersistence.writeData(MOServerPersistence.java:225)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.io.MOServerPersistence.saveData(MOServerPersistence.java:181)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.io.DefaultMOPersistenceProvider.store(DefaultMOPersistenceProvider.java:148)
> FINEST|7730/0|16-04-14 18:14:57| at
> org.snmp4j.agent.BaseAgent.saveConfig(BaseAgent.java:292) FINEST|7730/0|16-04-14
> 18:14:57| at org.snmp4j.agent.BaseAgent$1.run(BaseAgent.java:306)
> INFO|wrapper|16-04-14 18:15:02|killing 7730 INFO|wrapper|16-04-14
> 18:15:02|shutdown wrapper due to exit code rule INFO|wrapper|16-04-14
> 18:15:03|process exit code: 0
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> https://oosnmp.net/mailman/listinfo/snmp4j

-- 
---
AGENT++
Maximilian-Kolbe-Str. 10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax:   +49 7024 8688231




More information about the SNMP4J mailing list