> Hi,
> 
> ~This is part 2 of a two part upstreaming process of the patch mentioned in 
> the subject line. The patch was split into 2 in order to document 2 separate 
> specification changes that arose from a change in the implementation, with 2 
> separate CSRs. The first patch can be found here: 
> https://github.com/openjdk/jdk/pull/4395~
> 
> This patch adds uniform exception handling for exceptions thrown during FLA 
> upcalls. Currently, these exceptions are either handled similarly to the VMs 
> `CATCH` macro, or ignored after which control returns to unsuspecting native 
> code, until control returns to Java, which will then handle the exception. 
> The handling depends on the invocation mode.
> 
> Both of these are bad. The former because a stack trace is not printed and 
> instead the VM exits with a fatal error. The latter is bad because an upcall 
> completing abruptly and returning to native code which has no idea an 
> exception occurred is unsafe, in the sense that invariants about the state of 
> the program that the native code depends on might no longer hold.
> 
> This patch adds uniform exception handling that replaces both of these cases 
> (see `SharedUtils::handleUncaughtException`), which prints the exception 
> stack trace, and then unconditionally exits the VM, which is the only safe 
> course of action at that point.
> 
> Exceptions thrown by upcalls should instead be handled during the upcall 
> itself, for instance by translating the exception into an error code that is 
> then returned to the native caller, which can deal with it appropriately.
> 
> See also the original review for panama-foreign: 
> https://github.com/openjdk/panama-foreign/pull/543
> 
> Thanks,
> Jorn
> 
> Testing: `jdk_foreign` test suite.
> 
> Thanks,
> Jorn

Jorn Vernee has updated the pull request incrementally with one additional 
commit since the last revision:

  Suggest try/catch Throwable in upcallStub javadoc

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/4396/files
  - new: https://git.openjdk.java.net/jdk/pull/4396/files/a9e652e7..fd691628

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4396&range=04
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4396&range=03-04

  Stats: 4 lines in 1 file changed: 3 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4396.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4396/head:pull/4396

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

Reply via email to