JNI_GetCreatedJavaVMs() troubles...

Bryce McKinlay mckinlay@redhat.com
Mon Jun 27 18:06:00 GMT 2005

James Lee wrote:

>I have the following function in one my JNI libraries
>JNIEnv* GetEnv() {
>        JavaVM *jvm;
>        JNIEnv *env;
>        JNI_GetCreatedJavaVMs(&jvm, 1, NULL);
>        (*jvm)->AttachCurrentThread(jvm, (void**) &env, NULL);
>        return env;
>to get a JNIEnv for a non-Java thread to use.  This code worked works well for
>me in blackdown-jdk 1.4, and worked well for me when I had GCJ 3.4.  I have
>since upgraded to 4.0, and my whole program locks up at the
>JNI_GetCreatedJavaVMs function call.  I'm not too sure how to debug it, but it's
>definitely not the expected behavior.  Has anyone else come across this?


It looks like GCJ's JNI_GetCreatedJavaVMs will crash if you give it a 
NULL n_vms pointer, where as Sun-derived implementations will accept this.

The patch below should fix the problem. You should also be able to work 
around it by giving it a non-NULL n_vms.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: libjava-jni-GetCreatedJavaVMs.patch
Type: text/x-patch
Size: 707 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/java/attachments/20050627/6e192338/attachment.bin>

More information about the Java mailing list