RFR: 8261397: Try Catch Method Failing to Work When Dividing An Integer By 0 [v2]

Thomas Stuefe stuefe at openjdk.java.net
Wed Feb 17 19:43:42 UTC 2021


On Wed, 17 Feb 2021 19:25:59 GMT, Gerard Ziemski <gziemski at openjdk.org> wrote:

>> On Mac ARM hardware running x86 JDK under Rosetta emulation, a div by 0 instruction causes the VM to crash.
>> 
>> The proposed fix (a workaround) for hotspot is to add **FPE_FLTINV** to the signal handler.
>> 
>> The actual fix needs to be done in macOS by Apple as the expected signal type here is **FPE_FLTDIV**
>> This issue has been filed with Apple and they are tracking it.
>
> Gerard Ziemski has updated the pull request incrementally with one additional commit since the last revision:
> 
>   apply new check to macOS only

Seems reasonable. Remark below. Looks good otherwise.

Cheers, Thomas

src/hotspot/os_cpu/bsd_x86/os_bsd_x86.cpp line 475:

> 473: #ifdef AMD64
> 474:       if (sig == SIGFPE  &&
> 475:           (info->si_code == FPE_INTDIV || info->si_code == FPE_FLTDIV MACOS_ONLY(|| info->si_code == FPE_FLTINV))) {

Can you add a comment stating that MacOs (or Rosetta?) misreports FLTDIV as FLTINV?

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

Marked as reviewed by stuefe (Reviewer).

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


More information about the hotspot-runtime-dev mailing list