RFR: 8365937: post_method_exit might incorrectly set was_popped_by_exception and value in the middle of stack unwinding

Leonid Mesnik lmesnik at openjdk.org
Thu Aug 21 15:56:32 UTC 2025


The void `JvmtiExport::post_method_exit(JavaThread* thread, Method* method, frame current_frame) `calculates
  `bool exception_exit = state->is_exception_detected() && !state->is_exception_caught();`
to find if method exit normally or by exception.
However, JvmtiExport::post_method_exit( method is not called at all in the case of exception. See
`void JvmtiExport::notice_unwind_due_to_exception(JavaThread *thread, Method* method, address location, oop exception, bool in_handler_frame)`
where post_method_exit_inner is called directly.

The `exception_exit` is true when exception is processed and the current method is called in the middle of stack unwinding. 


The fix was a part of
https://github.com/openjdk/jdk/pull/26713
for
https://bugs.openjdk.org/browse/JDK-8365192

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

Commit messages:
 - more comments in the test
 - fixed ident
 - bugid fixed:
 - updated to fix 8365937
 - fixed comment.
 - test renamed.
 - Update test/hotspot/jtreg/serviceability/jvmti/events/MethodExit/ExceptionOccurred/libExceptionOccurred.cpp
 - Update src/hotspot/share/prims/jvmtiExport.cpp
 - added comments to the test
 - Update test/hotspot/jtreg/serviceability/jvmti/events/MethodExit/ExceptionOccurred.java
 - ... and 13 more: https://git.openjdk.org/jdk/compare/e04a3103...e8343e08

Changes: https://git.openjdk.org/jdk/pull/26886/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26886&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8365937
  Stats: 334 lines in 5 files changed: 319 ins; 7 del; 8 mod
  Patch: https://git.openjdk.org/jdk/pull/26886.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26886/head:pull/26886

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


More information about the hotspot-dev mailing list