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

Afshin Zafari azafari at openjdk.org
Tue Mar 18 08:13:18 UTC 2025


On Wed, 18 Dec 2024 09:42:20 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.

This pull request has now been integrated.

Changeset: f4ddac5e
Author:    Afshin Zafari <azafari at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/f4ddac5e58322a801182eda005a9592c78128569
Stats:     9 lines in 2 files changed: 2 ins; 2 del; 5 mod

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

Reviewed-by: dlong, aboldtch

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

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


More information about the hotspot-runtime-dev mailing list