RFR: 8292674: ReportJNIFatalError should print all java frames [v2]

David Holmes dholmes at openjdk.org
Wed Dec 7 22:53:37 UTC 2022


> When JNI reports errors and warnings and produces a stack trace, we need to see the exact Java code that was being executed. The existing `JavaThread::print_stack` that is used is only for platform/carrier threads and doesn't show any mounted virtual thread. So we introduce a new `JavaThread::print_virtual_stack_on` method to print the mounted virtual thread's stack, and we add `JavaThread::print_jni_stack` as a utility for JNI to call that dispatches to the appropriate function based on the thread type.
> 
> The existing test `hotspot/jtreg/runtime/jni/checked/TestPrimitiveArrayCriticalWithBadParam.java` was modified to test regular and virtual threads, and to expect to see the specific stack frame of the Java native method.
> 
> Additional manual testing of the JNI `FatalError` method was done by direct fault injection in modified JDK code.
> 
> Sanity testing: Oracle tiers 1-4 (to include our -Xcheck:jni run in tier4)
> 
> Thanks,
> David

David Holmes has updated the pull request incrementally with one additional commit since the last revision:

  Changed RegisterMap to include process_frame and update, for object monitor examination.
  Updated stack printing for exception checks.

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/11503/files
  - new: https://git.openjdk.org/jdk/pull/11503/files/249dc2fb..fa1d7b0c

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=11503&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=11503&range=00-01

  Stats: 3 lines in 2 files changed: 0 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/11503.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11503/head:pull/11503

PR: https://git.openjdk.org/jdk/pull/11503


More information about the hotspot-dev mailing list