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