RFR: 8258077: Using -Xcheck:jni can lead to a double-free after JDK-8193234

David Holmes dholmes at openjdk.java.net
Thu Dec 17 11:54:12 UTC 2020


The fix in JDK-8193234 had an unintended consequence for the Release<X>ArrayElements API, which is now fixed in this issue. 

I'd like to thank Mauro Lacy and Dmitry Timofeev for raising, analysing and discussing this issue. You can follow the thread here:

http://mail.openjdk.java.net/pipermail/hotspot-dev/2020-December/047248.html

Although the fix itself is very basic I found a couple of other issues along the way, so I have staged the commits as follows for ease of understanding:

Step 1: added a regression test for the current double-free problem
Step 2: Only try to print the GuardedMemory info in debug builds as it can lead to secondary crashes
Step 3: Fix incorrect function names in the error messages and cleanup formatting
Step 4: Revert the change from JDK-8193234
Step 5: Add the memory-leak test from JDK-8193234 as a manual test
Step 6: Fix the JNI_COMMIT memory leak only for the case of ReleasePrimitiveArrayCritical

Finally I had to tweak the test to fix a nativepath problem. 

Testing:
 - tiers 1-4 (tier 4 includes the test run with -Xcheck:jni)
 - local testing of the new tests

Thanks,
David

-------------

Commit messages:
 - Updated test to fix nativepath problem.
 - Step 6: Fix the JNI_COMMIT memory leak only for the case of ReleasePrimitiveArrayCritical
 - Step 5: Add the memory-leak test from JDK-8193234 as a manual test
 - Step 4: Revert the change from JDK-8193234
 - Step 3: Fix incorrect function names in the error messages and cleanup formatting.
 - Step 2: Only try to print the GuardedMemory info in debug builds as it can trigger a secondary crash.
 - 8258077: Using -Xcheck:jni can lead to a double-free after JDK-8193234

Changes: https://git.openjdk.java.net/jdk/pull/1816/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1816&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8258077
  Stats: 321 lines in 5 files changed: 303 ins; 6 del; 12 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1816.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1816/head:pull/1816

PR: https://git.openjdk.java.net/jdk/pull/1816


More information about the hotspot-runtime-dev mailing list