RFR (S): 8022683 : JNI GetStringUTFChars should return NULL on	allocation failure not abort the VM
    David Simms 
    david.simms at oracle.com
       
    Fri Aug 16 07:45:42 PDT 2013
    
    
  
Hello all,
Need reviewers on a JDK8 fix for: 
http://bugs.sun.com/view_bug.do?bug_id=8022683
Found the following functions need to return NULL as suggested by the 
JNI spec 
(http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html):
  * GetStringChars()
  * GetStringUTFChars()
  * Get<PrimitiveType>ArrayElements() family of array getters (same
    generating macro).
Although the specification suggests OOME may be thrown by certain 
functions, the documentation on the aforementioned functions does not 
suggest "throws". So they return NULL now without aborting the JVM as 
before.
It was assumed the meaning of "isCopy" is undefined given a NULL result, 
in keeping with the rest of jni.cpp.
Also discovered allocation.hpp macros missing proper argument bracketing 
(e.g. size passed in NEW_C_HEAP_ARRAY_RETURN_NULL()), fixed them up 
since I was there (and they caused trouble).
Webrev:
http://cr.openjdk.java.net/~dsimms/8022683/ 
<http://cr.openjdk.java.net/%7Edsimms/8022683/>
Testing:
Attached "unit test" to bug, naive test program to trigger OOM. It is 
not suitable for automated testing. Ideally require hooks into the JVM 
to simulate OOM during JNI calls.
Cheers
/David Simms
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130816/10567d61/attachment.html 
    
    
More information about the hotspot-runtime-dev
mailing list