From d9c3a39f13226cce43f54c4c074c2eda806c0196 Mon Sep 17 00:00:00 2001 From: Willow Barraco Date: Mon, 09 Dec 2024 19:42:07 +0100 Subject: [PATCH] Fix crashes when triggering events count changes over time epoll_pwait does not reset the epoll_events after the nevent index. It means we are re-triggering events. In cases the events are obsoletes, or the fd closed, we crash on: assert(pending & ~(op::READV | op::WRITEV) == 0) We could cleanup the events integer ourselves, but this fix seems better to me, and more performant anyway. Signed-off-by: Willow Barraco --- ev/+linux/loop.ha | 2 +- diff --git a/ev/+linux/loop.ha b/ev/+linux/loop.ha index c62d04426b746065e172ef44bbbead970cfc7e6b..98ff45a9033d908eb041a133a1e83665a8253b44 100644 --- a/ev/+linux/loop.ha +++ b/ev/+linux/loop.ha @@ -152,7 +152,7 @@ if (nevent == 0) { return true; }; - for (let ev &.. loop.events) { + for (let ev &.. loop.events[..nevent]) { const file = ev.data.ptr: *file; if (ev.events == 0) { continue; -- 2.48.1