RFR: 8335664: Parsing jsr broken: assert(bci>= 0 && bci < c->method()->code_size()) failed: index out of bounds [v2]
Matias Saavedra Silva
matsaave at openjdk.org
Wed Aug 21 21:23:03 UTC 2024
On Wed, 21 Aug 2024 19:33:46 GMT, Matias Saavedra Silva <matsaave at openjdk.org> wrote:
>> Although JSR bytecodes cannot be generated by javac anymore, a classfile generated with a tool like JASM can still contain this bytecode. Should a program end with a JSR, there will be undefined behavior since the bytecode reads the address of the next instruction. In the case of Hotspot, this leads to a crash when generating oop maps. This fixes the calculation of basic blocks.
>>
>> The early exploration of this issue was done by @eme64 who also generated a reproducer.
>
> Matias Saavedra Silva has updated the pull request incrementally with two additional commits since the last revision:
>
> - Removed incorrect comment and added copyright
> - Added regression test
Basic blocks have a property called `is_reachable` which seems to deal with unused basic blocks. The changes in my patch stop the new basic block from being marked or set to reachable. I think the current change is safe and unreachable basic blocks are already handled.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/20645#issuecomment-2303032949
More information about the hotspot-dev
mailing list