On 25/08/2017 15:59, Steve Groeger wrote:
Hello,
I would like to propose the change below to src/jdk.jdwp.agent/share/native/libjdwp/ModuleReferenceImpl.c native code so that the getName function use ReleaseStringUTFChars() to release the memory obtained using GetStringUTFChars() instead of the current jvmtiDeallocate() method.
This change seems to be inline with documented use of these functions in the Oracle documentation for JNI Functions (http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html)
The code as is seems to cause a potential memory leak as the memory may not be released correctly (as the correct Release/Deallocate is not being used).
diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/ModuleReferenceImpl.c b/src/jdk.jdwp.agent/share/native/libjdwp/ModuleReferenceImpl.c
--- a/src/jdk.jdwp.agent/share/native/libjdwp/ModuleReferenceImpl.c
+++ b/src/jdk.jdwp.agent/share/native/libjdwp/ModuleReferenceImpl.c
@@ -57,7 +57,7 @@
}
(void)outStream_writeString(out, name);
if (name != NULL) {
- jvmtiDeallocate(name);
+ JNI_FUNC_PTR(env, ReleaseStringUTFChars)(env, namestr, name);
}
return JNI_TRUE;
}
I would appreciate any feedback please, and how I would go about obtaining a sponsor and contributor
Ugh, this shouldn't be using jvmtiDeallocate here. Can you bring this to
serviceability-dev where the debugger agent is maintained and get you a
sponsor there.
-Alan