Bug 341

Summary: JNI Global Reference in native code prevents clean applet termination
Product: [JogAmp] Jogl Reporter: Sven Gothel <sgothel>
Component: coreAssignee: Sven Gothel <sgothel>
Status: VERIFIED FIXED    
Severity: normal    
Priority: P3    
Version: 1   
Hardware: All   
OS: all   
Type: DEFECT SCM Refs:
Workaround: ---

Description Sven Gothel 2010-03-24 07:51:14 CET


---- Reported by kbr 2008-02-02 22:53:20 ----

The JNI global reference in JAWT_DrawingSurfaceInfo.c which is used to help
construct the Java-side mirror for the JAWT "platformInfo" struct is preventing
clean termination of JOGL applets. This global reference keeps the
platform-specific PlatformInfo class (such as
com.sun.opengl.impl.windows.JAWT_Win32DrawingSurfaceInfo) alive, and therefore
its class loader alive, preventing unloading of the native library.

This may also be the root cause of mysterious ClassCastExceptions seen with JOGL
applets on Mac OS X, although it is likely that either a bug in the Java
implementation or misunderstood semantics of the dynamic linker on that platform
is the reason that problem has only been seen there.



---- Additional Comments From kbr 2008-02-02 22:57:27 ----

Simplified the native code in JAWT_DrawingSurfaceInfo.c to only
fabricate the direct ByteBuffer wrapping the JAWT "platformInfo"
struct, moving the construction of the wrapping JAWT_PlatformInfo up
to Java.

Verified fix with reloading of JOGL applets via the new JNLP applet
launching support in the new Java Plug-In.




--- Bug imported by sgothel@jausoft.com 2010-03-24 07:51 EDT  ---

This bug was previously known as _bug_ 341 at https://jogl.dev.java.net/bugs/show_bug.cgi?id=341