NPE on "return" bytecode of java.net.NetworkInterface
David M. Lloyd
david.lloyd at redhat.com
Mon Nov 14 14:47:37 UTC 2016
I'm trying to work out something a colleague has observed during testing
on an OpenJDK based on 1.8.0_111 (build 1.8.0_111-b16).
The business end of the stack trace looks like this:
Caused by: java.lang.NullPointerException
at java.net.NetworkInterface.<init>(NetworkInterface.java:80)
at java.net.NetworkInterface.getAll(Native Method)
at
java.net.NetworkInterface.getNetworkInterfaces(NetworkInterface.java:343)
According to javap, line 80 corresponds exclusively to the "return"
instruction of the constructor:
java.net.NetworkInterface();
Code:
0: aload_0
1: invokespecial #3 // Method
java/lang/Object."<init>":()V
4: aload_0
5: aconst_null
6: putfield #4 // Field
parent:Ljava/net/NetworkInterface;
9: aload_0
10: iconst_0
11: putfield #5 // Field virtual:Z
14: return
LineNumberTable:
line 79: 0
line 50: 4
line 51: 9
line 80: 14
Since this method is called from a native method, is it possible that
somehow the native method is generating an NPE, but the Java method is
still in the stack context? I assume that what is happening here is
some kind of class init order snafu, but it's pretty tricky to diagnose
exactly with this non-intuitive stack.
--
- DML
More information about the core-libs-dev
mailing list