Willy Tarreau
7a9699916a
MINOR: tasks: catch TICK_ETERNITY with BUG_ON() in __task_queue()
...
__task_queue() must absolutely not be called with TICK_ETERNITY or it
will place a never-expiring node upfront in the timers queue, preventing
any timer from expiring until the process is restarted. Code was found
to cause this using "task_schedule(task, now_ms)" which does this one
millisecond every 49.7 days, so let's add a condition against this. It
must never trigger since any process susceptible to trigger it would
already accumulate tasks until it dies.
An extra test was added in wake_expired_tasks() to detect tasks whose
timeout would have been changed after being queued.
An improvement over this could be in the future to use a non-scalar
type (union/struct) for expiration dates so as to avoid the risk of
using them directly like this. But now_ms is already such a valid
time and this specific construct would still not be caught.
This could even be backported to stable versions to help detect other
occurrences if any.
2021-09-30 17:09:39 +02:00
..
2021-09-30 16:37:05 +02:00
2021-06-15 16:52:42 +02:00
2021-08-28 12:04:25 +02:00
2021-04-28 10:51:08 +02:00
2021-09-30 16:37:05 +02:00
2021-05-08 12:29:51 +02:00
2021-08-30 09:39:24 +02:00
2021-08-25 16:14:14 +02:00
2021-06-18 15:48:20 +02:00
2020-09-25 17:54:48 +02:00
2021-09-23 15:27:25 +02:00
2021-08-22 00:30:24 +02:00
2021-04-26 10:42:58 +02:00
2021-09-27 09:47:40 +02:00
2021-08-31 12:13:08 +02:00
2021-09-21 14:00:07 +02:00
2021-03-18 15:51:12 +01:00
2020-09-16 20:13:13 +02:00
2021-09-03 16:15:29 +02:00
2021-02-13 09:43:17 +01:00
2021-09-21 14:00:32 +02:00
2021-04-10 19:27:41 +02:00
2021-09-17 11:50:09 +02:00
2021-05-31 10:51:04 +02:00
2021-09-16 17:45:52 +02:00
2021-04-27 14:11:26 +02:00
2021-05-07 11:51:26 +02:00
2021-04-07 18:18:37 +02:00
2021-09-17 16:08:34 +02:00
2021-08-12 00:51:45 +02:00
2021-08-16 12:37:59 +02:00
2021-09-17 17:22:05 +02:00
2021-08-04 14:49:36 +02:00
2021-08-04 14:49:36 +02:00
2021-08-04 14:49:36 +02:00
2021-08-04 14:49:36 +02:00
2021-08-04 14:49:36 +02:00
2021-04-21 09:20:17 +02:00
2021-08-16 12:37:59 +02:00
2021-09-17 12:00:27 +02:00
2021-09-10 10:35:53 +02:00
2021-08-16 12:37:59 +02:00
2021-06-10 08:57:55 +02:00
2021-09-20 18:37:32 +02:00
2021-09-20 16:06:58 +02:00
2021-08-01 17:34:06 +02:00
2021-04-01 11:06:48 +02:00
2021-09-23 16:13:17 +02:00
2021-09-28 16:21:25 +02:00
2021-08-19 23:38:18 +02:00
2021-09-23 15:27:25 +02:00
2021-09-28 11:44:31 +02:00
2021-08-25 15:53:54 +02:00
2021-09-30 16:26:51 +02:00
2021-03-03 05:07:10 +01:00
2021-04-02 17:48:42 +02:00
2021-04-10 19:27:41 +02:00
2020-11-05 19:27:09 +01:00
2021-09-02 17:06:18 +02:00
2021-09-23 16:25:47 +02:00
2021-09-26 18:19:55 +02:00
2021-08-30 06:14:32 +02:00
2021-07-08 17:11:17 +02:00
2021-07-08 17:11:17 +02:00
2021-09-02 17:06:18 +02:00
2021-09-28 16:21:25 +02:00
2021-09-23 16:19:36 +02:00
2021-04-21 09:20:17 +02:00
2021-06-22 18:43:14 +02:00
2021-06-22 18:43:14 +02:00
2021-09-22 07:24:02 +02:00
2021-08-16 12:37:59 +02:00
2021-06-22 18:43:14 +02:00
2021-09-21 14:35:42 +02:00
2021-09-30 16:37:05 +02:00
2021-04-21 09:20:17 +02:00
2021-05-09 06:45:16 +02:00
2021-05-25 08:44:45 +02:00
2021-04-15 17:05:38 +02:00
2021-06-28 16:29:44 +02:00
2021-09-28 16:39:47 +02:00
2021-09-28 16:39:47 +02:00
2021-09-23 16:25:47 +02:00
2021-09-23 16:25:47 +02:00
2021-09-23 15:27:25 +02:00
2021-07-21 10:17:02 +02:00
2021-08-03 14:17:45 +02:00
2021-09-11 19:58:45 +02:00
2021-05-08 13:55:40 +02:00
2021-09-17 16:08:34 +02:00
2021-04-07 18:18:37 +02:00
2021-09-16 09:20:16 +02:00
2021-09-23 15:27:25 +02:00
2021-09-17 11:56:25 +02:00
2021-04-07 18:07:49 +02:00
2021-05-08 13:59:56 +02:00
2021-03-18 18:30:29 +01:00
2021-09-17 11:59:15 +02:00
2021-06-11 16:57:34 +02:00
2021-09-07 17:34:29 +02:00
2021-09-23 15:27:25 +02:00
2021-09-23 15:27:25 +02:00
2021-09-23 15:27:25 +02:00
2021-08-31 18:37:13 +02:00
2020-12-23 11:57:26 +01:00
2020-12-23 11:57:26 +01:00
2021-09-23 15:27:25 +02:00
2021-09-23 15:27:25 +02:00
2021-09-23 15:27:25 +02:00
2021-04-07 18:07:49 +02:00
2020-08-14 07:53:40 +02:00
2021-08-26 15:53:17 +02:00
2021-04-21 09:20:17 +02:00
2021-09-30 16:37:05 +02:00
2021-09-11 19:58:45 +02:00
2021-09-21 14:00:32 +02:00
2021-09-08 11:10:16 +02:00
2021-06-15 16:52:42 +02:00
2021-04-21 09:20:17 +02:00
2021-09-17 16:08:34 +02:00
2021-09-24 15:07:50 +02:00
2021-04-07 18:10:36 +02:00
2021-04-07 18:10:36 +02:00
2021-07-06 10:52:19 +02:00
2021-06-18 16:42:25 +02:00
2021-05-17 10:50:24 +02:00
2021-09-30 11:04:35 +02:00
2021-09-30 11:04:35 +02:00
2021-08-26 19:48:34 +02:00
2021-09-24 08:52:45 +02:00
2021-08-24 15:05:48 +02:00
2021-09-23 16:25:47 +02:00
2021-09-17 17:22:05 +02:00
2021-09-30 17:09:39 +02:00
2021-07-06 11:44:04 +02:00
2021-09-30 16:37:29 +02:00
2021-04-19 08:31:05 +02:00
2021-09-30 16:37:05 +02:00
2021-09-27 09:47:40 +02:00
2021-04-28 17:43:55 +02:00
2021-09-20 18:37:32 +02:00
2021-05-07 11:51:26 +02:00
2021-01-04 10:09:02 +01:00
2021-05-11 17:24:32 +02:00
2021-09-30 16:37:05 +02:00
2021-05-08 12:29:01 +02:00
2021-03-19 15:33:04 +01:00
2021-09-23 15:27:25 +02:00