[ https://issues.apache.org/jira/browse/HARMONY-4898?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexey Varlamov updated HARMONY-4898:
-------------------------------------
Attachment: H4898.diff
The rootcause is simple, wrong constant is used for handling LONG_MIN case.
> [drlvm][jit][jet] crash due to IntegerOverflow
> ----------------------------------------------
>
> Key: HARMONY-4898
> URL: https://issues.apache.org/jira/browse/HARMONY-4898
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Environment: x86_64
> Reporter: Alexey Varlamov
> Attachments: H4898.diff
>
>
> The following simple tests crash on x86_64 in JET compiler:
> public void testLDIV_min() {
> long l_min = Long.MIN_VALUE;
> long l_1 = -1;
> long res = l_min / l_1;
> assertEquals(Long.MIN_VALUE, res);
> }
> public void testLREM_min() {
> long l_min = Long.MIN_VALUE;
> long l_1 = -1;
> long res = l_min % l_1;
> assertEquals(0, res);
> }
> [junit] Windows reported exception: 0xc0000095
> [junit] Registers:
> [junit] RAX: 0x8000000000000000, RBX: 0x8000000000000000
> [junit] RCX: 0x0000000003cb0000, RDX: 0xffffffffffffffff
> [junit] RSI: 0xffffffffffffffff, RDI: 0x000000000012c220
> [junit] RSP: 0x000000000012c1e0, RBP: 0x000000000012c4b8
> [junit] R8 : 0x000000000000006c, R9 : 0x0000000003fa1390
> [junit] R10: 0x000000000012cde0, R11: 0x0000000002fa9a80
> [junit] R12: 0x000000000012cd40, R13: 0x0000000002fa98c0
> [junit] R14: 0xdeadbeefdeadbeef, R15: 0x0000000011aee790
> [junit] RIP: 0x0000000003fa149a
> [junit] Stack trace:
> [junit] 0: Jitrino::Jet::rt_h_i64_a (??:-1)
> [junit] 1: java/lang/reflect/VMReflection.invokeMethod(JLjava/lang/Object;[Ljava/lang/Object;)
> Ljava/lang/Object; (??:-2)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|