RFR: 8276545: Fix handling of trap count overflow in Parse::Parse() [v3]

Vladimir Kozlov kvn at openjdk.org
Mon Sep 26 21:08:26 UTC 2022


On Mon, 26 Sep 2022 20:59:38 GMT, Dhamoder Nalla <duke at openjdk.org> wrote:

>> The API trap_count(reason) returns (uint)-1 == 0xFFFFFFFF in case of trap count overflow,
>> trap_count_limit()) returns (jubyte)-1 == 0xFF which leads to the failure of overflow check
>> if (md_count == md->trap_count_limit()) (which is 0xFFFFFFFF == 0xFF).
>> 
>>          uint md_count = md->trap_count(reason);
>>          if (md_count != 0) {
>>                    **if (md_count == md->trap_count_limit())**  // Trap count is overflown 
>> Trap count value is computed as 0xFFFFFFFF + overflowcount (diff after 0xFF) which is wrong.
>> md_count += md->overflow_trap_count();
>> 
>> Fix:
>> 
>> Overflow check should be either of below
>> if (md_count >= md->trap_count_limit()) or if (md_count == (uint)-1)
>> 
>> Total trap count as
>> md_count = md->trap_count_limit() + md->overflow_trap_count();
>> 
>> Test: local JTReg test for hotspot_all group.
>
> Dhamoder Nalla has updated the pull request incrementally with one additional commit since the last revision:
> 
>   address CR comments

Good.

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

Marked as reviewed by kvn (Reviewer).

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


More information about the hotspot-compiler-dev mailing list