From: Patrick Monnerat Date: Mon, 12 May 2025 15:36:17 +0000 (+0200) Subject: gdbsupport/event-loop: do not truncate poll timeouts to lower second X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5cceef276f36de70ac286b46721568385a1422d7;p=thirdparty%2Fbinutils-gdb.git gdbsupport/event-loop: do not truncate poll timeouts to lower second In update_wait_timeout function, microseconds were not taken into account in poll timeout computation, resulting in 100% cpu time consumption in the event loop while waiting for a sub-second timeout. The bug has been introduced in commit c2c6d25. This patch adds the microseconds converted to milliseconds in poll timeout computation. Conversion by excess (ceil) is performed to avoid the same problem with sub-millisecond timeouts too. --- diff --git a/gdbsupport/event-loop.cc b/gdbsupport/event-loop.cc index c080490f399..e7b21e786db 100644 --- a/gdbsupport/event-loop.cc +++ b/gdbsupport/event-loop.cc @@ -827,7 +827,8 @@ update_wait_timeout (void) /* Update the timeout for select/ poll. */ #ifdef HAVE_POLL if (use_poll) - gdb_notifier.poll_timeout = timeout.tv_sec * 1000; + gdb_notifier.poll_timeout = (timeout.tv_sec * 1000 + + (timeout.tv_usec + 1000 - 1) / 1000); else #endif /* HAVE_POLL */ {