From 18ef5eee77c063bd2b835d528431c924e27d1e39 Mon Sep 17 00:00:00 2001 From: Marcus Comstedt <marcus@mc.pp.se> Date: Sun, 24 Jan 2021 14:05:27 +0100 Subject: [PATCH] Backend: Fix timed wait on backend_signal The timeout argument to co_wait_interpreter_timeout is relative, not absolute. --- src/backend.cmod | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/backend.cmod b/src/backend.cmod index f49645ef17..98a2d5115b 100644 --- a/src/backend.cmod +++ b/src/backend.cmod @@ -2192,9 +2192,12 @@ PIKECLASS Backend if (next_timeout->tv_sec < 0) { co_wait_interpreter(&me->backend_signal); } else { - co_wait_interpreter_timeout(&me->backend_signal, - next_timeout->tv_sec, - next_timeout->tv_usec * 1000); + struct timeval timeout = *next_timeout; + my_subtract_timeval(&timeout, &now); + if (timeout.tv_sec >= 0) + co_wait_interpreter_timeout(&me->backend_signal, + timeout.tv_sec, + timeout.tv_usec * 1000); } SWAP_IN_CURRENT_THREAD(); if (me->done_counter == old_done_counter) { -- GitLab