Commit 06356a3
Remove timer-based runtime advance from interrupt handler
The approach of setting ec->runtime = ec->quantum inside
rb_threadptr_execute_interrupts caused a SystemStackError on Windows
when a timer interrupt fired during @main.transfer inside the base
Scheduler: preemption called scheduler.yield -> kernel_sleep(0) ->
block -> @main.transfer -> recursion.
Remove the timer-based advance entirely. Under YARV the back-edge
counter in rb_vm_check_ints provides preemption without this. Under
YJIT the timing-based preemption tests are already guarded with
omit/skip so they don't run.
Co-authored-by: Cursor <cursoragent@cursor.com>1 parent dcc2eaf commit 06356a3
1 file changed
Lines changed: 0 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2719 | 2719 | | |
2720 | 2720 | | |
2721 | 2721 | | |
2722 | | - | |
2723 | | - | |
2724 | | - | |
2725 | | - | |
2726 | | - | |
2727 | | - | |
2728 | | - | |
2729 | | - | |
2730 | | - | |
2731 | 2722 | | |
2732 | 2723 | | |
2733 | 2724 | | |
| |||
0 commit comments