RFR: 8293660: Fix frame::sender_for_compiled_frame frame size assert [v3]

Aleksey Shipilev shade at openjdk.org
Wed Sep 14 05:44:47 UTC 2022


On Tue, 13 Sep 2022 07:56:18 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> The condition and assert messages are contradicting each other here:
>> 
>> 
>> frame frame::sender_for_compiled_frame(RegisterMap* map) const {
>>   ...
>>   assert(_cb->frame_size() >= 0, "must have non-zero frame size");
>>   intptr_t* sender_sp = unextended_sp() + _cb->frame_size();
>> 
>> 
>> I found this in x86_32 Loom port, where a entry generator bug caused zero-sized frames. I believe the assert message is correct, and the condition is not: sender SP should be different from (unextended) SP. In fact, if allowed to proceed, the tests can then fail the later assert, assuming `sp() == unextended_sp()`:
>> 
>> 
>>   assert(sender_sp != sp(), "must have changed");
>> 
>> 
>> This code predates OpenJDK history, and assert was copy-pasted in this form to many arches. 
>> 
>> Additional testing:
>>  - [x] Linux x86_64 fastdebug `tier1`
>
> Aleksey Shipilev has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Wrong PR :)
>  - AArch64 part

Thank you!

-------------

PR: https://git.openjdk.org/jdk/pull/10242


More information about the hotspot-dev mailing list