RFR: JDK-8294902: Undefined Behavior in C2 regalloc with null references [v6]
Aleksey Shipilev
shade at openjdk.org
Fri Dec 2 10:54:03 UTC 2022
On Fri, 2 Dec 2022 10:19:33 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:
>
> Feedback from reviewers
src/hotspot/share/opto/postaloc.cpp line 259:
> 257: if (!can_change_regs) {
> 258: return blk_adjust; // Only check stupid copies!
> 259: }
Style nit here and in other places: weren't these blocks separated by newline before?
src/hotspot/share/utilities/globalDefinitions_gcc.hpp line 155:
> 153: char* c = (char*)(void*)&dummyObj->field; \
> 154: return (size_t)(c - space); \
> 155: }()
I am very surprised this does not produce any warnings! Let me test this on different GCCs...
-------------
PR: https://git.openjdk.org/jdk/pull/10920
More information about the hotspot-dev
mailing list