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 18:10:01 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
`RelocIterator` is used in a lot of places and not all are guarded by `has_locs()`. The code assumes that `RelocIterator::next()` will return `false` if no relocations are present.
We have to use pre-increment in `next()` with check after it because in following code there are `current()` accessing `_current`. I don't want to touch this code.
I really don't want to add `nullptr` check into this hot code which may affect performance. That is why I agreed with latest changes. Based on this discussion I am fine to keep them locally in `relocInfo.hpp` with more descriptive names. We can also add comment explaining why we need them.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19424#issuecomment-2140513107
More information about the hotspot-compiler-dev
mailing list