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