Proposal: ModuleReferenceImpl.c to use ReleaseStringUTFChars not jvmtiDeallocate
Alan Bateman
Alan.Bateman at oracle.com
Fri Aug 25 16:16:12 UTC 2017
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
More information about the core-libs-dev
mailing list