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