Ping for code review? thanks -- PMM
On Fri, 7 Nov 2025 at 17:43, Peter Maydell <[email protected]> wrote: > > In the qtest_event() QEMUChrEvent handler, we create a timer > and log OPENED on CHR_EVENT_OPENED, and we destroy the timer and > log CLOSED on CHR_EVENT_CLOSED. However, the chardev subsystem > can send us more than one CHR_EVENT_CLOSED if we're reading from > a file chardev: > * the first one happens when we read the last data from the file > * the second one happens when the user hits ^C to exit QEMU > and the chardev is finalized: char_fd_finalize() > > This causes us to call g_timer_elapsed() with a NULL timer > (which glib complains about) and print an extra CLOSED log line > with a zero timestamp: > > [I +0.063829] CLOSED > qemu-system-aarch64: GLib: g_timer_elapsed: assertion 'timer != NULL' failed > [I +0.000000] CLOSED > > Avoid this by ignoring a CHR_EVENT_CLOSED if we have already > processed one. > > Signed-off-by: Peter Maydell <[email protected]> > --- > system/qtest.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/system/qtest.c b/system/qtest.c > index baef06d4d1b..67e2385f4b0 100644 > --- a/system/qtest.c > +++ b/system/qtest.c > @@ -815,6 +815,10 @@ static void qtest_event(void *opaque, QEMUChrEvent event) > } > break; > case CHR_EVENT_CLOSED: > + if (!qtest_opened) { > + /* Ignore CLOSED events if we have already closed the log */ > + break; > + } > qtest_opened = false; > if (qtest_log_fp) { > fprintf(qtest_log_fp, "[I +" FMT_timeval "] CLOSED\n", > g_timer_elapsed(timer, NULL)); > -- > 2.43.0
