YJIT: Prevent making a branch from a dead block to a live block
I'm seeing some memory corruption in the wild on blocks in IseqPayload::dead_blocks. While I unfortunately can't recreate the issue, (For all I know, it could be some external code corrupting YJIT's memory.) establishing a link between dead blocks and live blocks seems fishy enough that we ought to prevent it. When it did happen, it might've had bad interacts with Code GC and the optimization to immediately free empty blocks.
YJIT: Prevent making a branch from a dead block to a live block
I'm seeing some memory corruption in the wild on blocks in
IseqPayload::dead_blocks
. While I unfortunately can't recreate theissue, (For all I know, it could be some external code corrupting YJIT's
memory.) establishing a link between dead blocks and live blocks seems
fishy enough that we ought to prevent it. When it did happen, it might've
had bad interacts with Code GC and the optimization to immediately
free empty blocks.