RFR: JDK-8294902: Undefined Behavior in C2 regalloc with null references [v9]
Kim Barrett
kbarrett at openjdk.org
Mon Dec 12 15:34:46 UTC 2022
On Mon, 12 Dec 2022 14:51:22 GMT, Andrew Haley <aph at openjdk.org> wrote:
>> This patch fixes the remaining null pointer dereference bugs that I know of.
>>
>> For the main bug, C2 was using a null reference to indicate an uninitialized `Node_List`. I replaced the null reference with a static sentinel.
>>
>> I also turned on `-fsanitize=null` and found and fixed a bunch of other null pointer dereferences. With this,I have run a full bootstrap and tier1 tests with `-fsanitize=null` enabled.
>>
>> I have checked that the code generated by GCC is not worse in any significant way, so I don't expect to see any performance regressions.
>>
>> I'd like to enable `-fsanitize=null` in debug builds to prevent regressions in this area. What do you think?
>
> Andrew Haley has updated the pull request incrementally with one additional commit since the last revision:
>
> Reviewer feedback
src/hotspot/share/runtime/vmStructs.hpp line 193:
> 191: // Converts any type T to a reference type.
> 192: template<typename T>
> 193: std::add_rvalue_reference_t<T> declval() noexcept;
I think I'd prefer this was in globalDefinitions.hpp rather than squirreled away in this obscure location. But maybe that can wait until someone else needs it. (And maybe by then we can use std::declval :) )
-------------
PR: https://git.openjdk.org/jdk/pull/10920
More information about the hotspot-dev
mailing list