Commit bcef706
scheduler: rewind CFP after EC_PUSH_TAG on non-local jumps
Both rb_fiber_scheduler_unblock and rb_fiber_scheduler_fiber_interrupt
used EC_PUSH_TAG but did not capture ec->cfp beforehand nor call
rb_vm_rewind_cfp in the non-TAG_NONE branch. Without this, stale call
frames can remain on the stack after an exception or other non-local
jump, matching the structure rb_protect uses for the same pattern.
Co-authored-by: Cursor <cursoragent@cursor.com>1 parent eb053e7 commit bcef706
1 file changed
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
680 | 680 | | |
681 | 681 | | |
682 | 682 | | |
| 683 | + | |
683 | 684 | | |
684 | 685 | | |
685 | 686 | | |
686 | 687 | | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
687 | 691 | | |
688 | 692 | | |
689 | 693 | | |
| |||
1145 | 1149 | | |
1146 | 1150 | | |
1147 | 1151 | | |
| 1152 | + | |
1148 | 1153 | | |
1149 | 1154 | | |
1150 | 1155 | | |
1151 | 1156 | | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
1152 | 1160 | | |
1153 | 1161 | | |
1154 | 1162 | | |
| |||
0 commit comments