RFR: 8331731: ubsan: relocInfo.cpp:155:30: runtime error: applying non-zero offset 18446744073709551614 to null pointer [v2]
Vladimir Kozlov
kvn at openjdk.org
Thu May 30 22:21:03 UTC 2024
On Wed, 29 May 2024 10:04:14 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:
>> When running on macOS with ubsan enabled, we see some issues in relocInfo (hpp and cpp); those already occur in the build quite early.
>>
>> /jdk/src/hotspot/share/code/relocInfo.cpp:155:30: runtime error: applying non-zero offset 18446744073709551614 to null pointer
>>
>> Similar happens when we add to the _current pointer
>> _current++;
>> this gives :
>> relocInfo.hpp:606:13: runtime error: applying non-zero offset to non-null pointer 0xfffffffffffffffe produced null pointer
>>
>> Seems the pointer subtraction/addition worked so far, so it might be an option to disable ubsan for those 2 functions.
>
> Matthias Baesken has updated the pull request incrementally with one additional commit since the last revision:
>
> use template functions
So you want to patch the path which introduces `nullptr`. And in addition to your suggested fix we need to adjust assert:
RelocIterator::RelocIterator(CodeSection* cs, address begin, address limit) {
initialize_misc();
- assert(((cs->locs_start() != nullptr) && (cs->locs_end() != nullptr)) ||
- ((cs->locs_start() == nullptr) && (cs->locs_end() == nullptr)), "valid start and end pointer");
+ assert(((cs->locs_start() != nullptr) && (cs->locs_end() != nullptr)), "valid start and end pointer");
_current = cs->locs_start()-1;
This seems reasonable.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19424#issuecomment-2140943802
More information about the hotspot-compiler-dev
mailing list