|
 |
438e03 |
# HG changeset patch
|
|
 |
438e03 |
# User jdowland
|
|
 |
438e03 |
# Date 1616424665 0
|
|
 |
438e03 |
# Mon Mar 22 14:51:05 2021 +0000
|
|
 |
438e03 |
# Node ID 71c0c9061867c51e4cc59c286eb1a1eae15bc6b5
|
|
 |
438e03 |
# Parent a4cb0f6662eb43880683e1c859238d0d39f07886
|
|
 |
438e03 |
8187450: JNI local refs exceeds capacity warning in NetworkInterface::getAll
|
|
 |
438e03 |
Reviewed-by: chegar, dfuchs, aph
|
|
 |
438e03 |
|
|
 |
438e03 |
diff --git a/src/java.base/unix/native/libnet/NetworkInterface.c b/src/java.base/unix/native/libnet/NetworkInterface.c
|
|
 |
438e03 |
--- a/src/java.base/unix/native/libnet/NetworkInterface.c
|
|
 |
438e03 |
+++ b/src/java.base/unix/native/libnet/NetworkInterface.c
|
|
 |
438e03 |
@@ -461,6 +461,7 @@
|
|
 |
438e03 |
|
|
 |
438e03 |
// put the NetworkInterface into the array
|
|
 |
438e03 |
(*env)->SetObjectArrayElement(env, netIFArr, arr_index++, netifObj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, netifObj);
|
|
 |
438e03 |
|
|
 |
438e03 |
curr = curr->next;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
@@ -724,12 +725,14 @@
|
|
 |
438e03 |
((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr));
|
|
 |
438e03 |
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
|
 |
438e03 |
(*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, ia2Obj);
|
|
 |
438e03 |
} else {
|
|
 |
438e03 |
return NULL;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
}
|
|
 |
438e03 |
(*env)->SetShortField(env, ibObj, ni_ib4maskID, addrP->mask);
|
|
 |
438e03 |
(*env)->SetObjectArrayElement(env, bindArr, bind_index++, ibObj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, ibObj);
|
|
 |
438e03 |
} else {
|
|
 |
438e03 |
return NULL;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
@@ -758,12 +761,14 @@
|
|
 |
438e03 |
(*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj);
|
|
 |
438e03 |
(*env)->SetShortField(env, ibObj, ni_ib4maskID, addrP->mask);
|
|
 |
438e03 |
(*env)->SetObjectArrayElement(env, bindArr, bind_index++, ibObj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, ibObj);
|
|
 |
438e03 |
} else {
|
|
 |
438e03 |
return NULL;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
}
|
|
 |
438e03 |
|
|
 |
438e03 |
(*env)->SetObjectArrayElement(env, addrArr, addr_index++, iaObj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, iaObj);
|
|
 |
438e03 |
addrP = addrP->next;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
|
|
 |
438e03 |
@@ -796,6 +801,11 @@
|
|
 |
438e03 |
(*env)->SetObjectField(env, netifObj, ni_bindsID, bindArr);
|
|
 |
438e03 |
(*env)->SetObjectField(env, netifObj, ni_childsID, childArr);
|
|
 |
438e03 |
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, name);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, addrArr);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, bindArr);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, childArr);
|
|
 |
438e03 |
+
|
|
 |
438e03 |
// return the NetworkInterface
|
|
 |
438e03 |
return netifObj;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
diff --git a/src/java.base/windows/native/libnet/NetworkInterface.c b/src/java.base/windows/native/libnet/NetworkInterface.c
|
|
 |
438e03 |
--- a/src/java.base/windows/native/libnet/NetworkInterface.c
|
|
 |
438e03 |
+++ b/src/java.base/windows/native/libnet/NetworkInterface.c
|
|
 |
438e03 |
@@ -609,8 +609,10 @@
|
|
 |
438e03 |
return NULL;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
(*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, ia2Obj);
|
|
 |
438e03 |
(*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
|
|
 |
438e03 |
(*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, ibObj);
|
|
 |
438e03 |
}
|
|
 |
438e03 |
} else /* AF_INET6 */ {
|
|
 |
438e03 |
int scope;
|
|
 |
438e03 |
@@ -635,9 +637,11 @@
|
|
 |
438e03 |
(*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj);
|
|
 |
438e03 |
(*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
|
|
 |
438e03 |
(*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, ibObj);
|
|
 |
438e03 |
}
|
|
 |
438e03 |
}
|
|
 |
438e03 |
(*env)->SetObjectArrayElement(env, addrArr, addr_index, iaObj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, iaObj);
|
|
 |
438e03 |
addrs = addrs->next;
|
|
 |
438e03 |
addr_index++;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
@@ -645,6 +649,10 @@
|
|
 |
438e03 |
(*env)->SetObjectField(env, netifObj, ni_bindsID, bindsArr);
|
|
 |
438e03 |
|
|
 |
438e03 |
free_netaddr(netaddrP);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, name);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, displayName);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, addrArr);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, bindsArr);
|
|
 |
438e03 |
|
|
 |
438e03 |
/*
|
|
 |
438e03 |
* Windows doesn't have virtual interfaces, so child array
|
|
 |
438e03 |
@@ -655,6 +663,7 @@
|
|
 |
438e03 |
return NULL;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
(*env)->SetObjectField(env, netifObj, ni_childsID, childArr);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, childArr);
|
|
 |
438e03 |
|
|
 |
438e03 |
/* return the NetworkInterface */
|
|
 |
438e03 |
return netifObj;
|
|
 |
438e03 |
@@ -875,6 +884,7 @@
|
|
 |
438e03 |
|
|
 |
438e03 |
/* put the NetworkInterface into the array */
|
|
 |
438e03 |
(*env)->SetObjectArrayElement(env, netIFArr, arr_index++, netifObj);
|
|
 |
438e03 |
+ (*env)->DeleteLocalRef(env, netifObj);
|
|
 |
438e03 |
|
|
 |
438e03 |
curr = curr->next;
|
|
 |
438e03 |
}
|
|
 |
438e03 |
diff --git a/test/jdk/java/net/NetworkInterface/Test.java b/test/jdk/java/net/NetworkInterface/Test.java
|
|
 |
438e03 |
--- a/test/jdk/java/net/NetworkInterface/Test.java
|
|
 |
438e03 |
+++ b/test/jdk/java/net/NetworkInterface/Test.java
|
|
 |
438e03 |
@@ -23,8 +23,8 @@
|
|
 |
438e03 |
|
|
 |
438e03 |
/* @test
|
|
 |
438e03 |
* @bug 4405354 6594296 8058216
|
|
 |
438e03 |
- * @run main Test
|
|
 |
438e03 |
- * @run main/othervm -Djava.net.preferIPv4Stack=true Test
|
|
 |
438e03 |
+ * @run main/othervm -Xcheck:jni Test
|
|
 |
438e03 |
+ * @run main/othervm -Xcheck:jni -Djava.net.preferIPv4Stack=true Test
|
|
 |
438e03 |
* @summary Basic tests for NetworkInterface
|
|
 |
438e03 |
*/
|
|
 |
438e03 |
import java.net.NetworkInterface;
|