On 3/27/23 15:22, Pavel Begunkov wrote: > On 3/23/23 20:51, Bernd Schubert wrote: >> On 3/23/23 14:18, Bernd Schubert wrote: >>> On 3/23/23 13:35, Miklos Szeredi wrote: >>>> On Thu, 23 Mar 2023 at 12:04, Bernd Schubert <bschubert@xxxxxxx> wrote: > [...] >> Found the reason why I complete SQEs when the daemon stops - on daemon >> side I have >> >> ret = io_uring_wait_cqe(&queue->ring, &cqe); >> >> and that hangs when you stop user side with SIGTERM/SIGINT. Maybe that >> could be solved with io_uring_wait_cqe_timeout() / >> io_uring_wait_cqe_timeout(), but would that really be a good solution? > > It can be some sort of an eventfd triggered from the signal handler > and waited upon by an io_uring poll/read request. Or maybe signalfd. > >> We would now have CPU activity in intervals on the daemon side for now >> good reason - the more often the faster SIGTERM/SIGINT works. >> So at best, it should be uring side that stops to wait on a receiving a >> signal. > > FWIW, io_uring (i.e. kernel side) will stop waiting if there are pending > signals, and we'd need to check liburing to honour it, e.g. not to retry > waiting. > I'm going to check where and why it hangs, busy with something else today - by tomorrow I should know what happens. Thanks, Bernd