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]
Kim Barrett
kbarrett at openjdk.org
Mon Mar 17 16:46:23 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.
My concerns about an earlier version of this change have been addressed. The latest
version looks okay to me, but I'm not really familiar with the signature handling code,
so don't count me as a reviewer.
-------------
PR Review: https://git.openjdk.org/jdk/pull/22807#pullrequestreview-2691320069
More information about the hotspot-runtime-dev
mailing list