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