RFR: 8331201: UBSAN enabled build reports on Linux x86_64 runtime error: shift exponent 65 is too large for 64-bit type 'long unsigned int' [v4]

Dean Long dlong at openjdk.org
Mon Feb 24 23:53:55 UTC 2025


On Thu, 13 Feb 2025 09:31:08 GMT, Afshin Zafari <azafari at openjdk.org> wrote:

>> The issue existed in making Fingerprints of method names. Each parameter in the methods' arguments is decoded as a 4-bits value. The 64-bits `fingertprint_t` can hold up to 14 parameters plus return type and static bit. To make the Fingerprint, the signature is iterated one parameter at a time and the corresponding code is accumulated after shifting the bits up.
>> Some compilers do not mask the shift value to the base size and UBSAN catches the case. 
>> In this PR, the number of parameters (`_param_count`) is used and compared with the max (14) to do the shift operation safely. The pre-existing `_param_size` is not reflecting the number of parameters, since it is incremented by 2 for `T_DOUBLE` and `T_LONG` types.
>
> Afshin Zafari has updated the pull request incrementally with one additional commit since the last revision:
> 
>   count member is removed. Axel's suggestion is implemented.

Looks good.

src/hotspot/share/runtime/signature.cpp line 2:

> 1: /*
> 2:  * Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.

I see no changes in this file.

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

Marked as reviewed by dlong (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/22807#pullrequestreview-2638730250
PR Review Comment: https://git.openjdk.org/jdk/pull/22807#discussion_r1968586238


More information about the hotspot-runtime-dev mailing list