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.
This commit is contained in:
Patrick Monnerat
2025-05-12 17:36:17 +02:00
parent 4e16a47049
commit 5cceef276f

View File

@@ -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 */
{