Peter Maydell <[email protected]> writes: > 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
I'm aware some qtest stuff is lingering on the list, I came back from vacations yesterday and will give attention to it in the next few days. Reviewed-by: Fabiano Rosas <[email protected]>
