MN: ceil timeout milli seconds
`hrrel / RB_HRTIME_PER_MSEC` floor the timeout value and it can return wrong value by `Mutex#sleep` (return Integer even if it should return nil (timeout'ed)). This patch ceil the value and the issue was solved.
This commit is contained in:
parent
c974ee1abe
commit
a4b737213e
@ -2872,7 +2872,7 @@ timer_thread_set_timeout(rb_vm_t *vm)
|
||||
RUBY_DEBUG_LOG("th:%u now:%lu rel:%lu", rb_th_serial(th), (unsigned long)now, (unsigned long)hrrel);
|
||||
|
||||
// TODO: overflow?
|
||||
timeout = (int)(hrrel / RB_HRTIME_PER_MSEC); // ms
|
||||
timeout = (int)((hrrel + RB_HRTIME_PER_MSEC - 1) / RB_HRTIME_PER_MSEC); // ms
|
||||
}
|
||||
}
|
||||
rb_native_mutex_unlock(&timer_th.waiting_lock);
|
||||
|
Loading…
x
Reference in New Issue
Block a user