From 239916d715da62684fa64fc94a8760f054a45199 Mon Sep 17 00:00:00 2001 From: Wenkang Ji Date: Mon, 8 Dec 2025 20:38:58 +0800 Subject: [PATCH] pvpanic: Fix race condition when checking QMP events When guest triggers panic and QEMU exits quickly (especially on RHEL10), the test may fail with MonitorSocketError due to socket connection being reset while checking QMP events. Signed-off-by: Wenkang Ji --- qemu/tests/pvpanic.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/qemu/tests/pvpanic.py b/qemu/tests/pvpanic.py index afe17a71d1..82b117fb8f 100644 --- a/qemu/tests/pvpanic.py +++ b/qemu/tests/pvpanic.py @@ -4,6 +4,7 @@ import aexpect from avocado.utils.wait import wait_for from virttest import error_context, utils_misc, utils_test +from virttest.qemu_monitor import MonitorSocketError LOG_JOB = logging.getLogger("avocado.test") @@ -51,11 +52,18 @@ def check_qmp_events(vm, event_names, timeout=360): """ def _do_check(vm, event_names): - for name in event_names: - if vm.monitor.get_event(name): - LOG_JOB.info("Receive qmp %s event notification", name) - vm.monitor.clear_event(name) - return True + try: + events = vm.monitor.get_events() + for event in events: + if event.get("event") in event_names: + LOG_JOB.info( + "Receive qmp %s event notification", event.get("event") + ) + vm.monitor.clear_event(event.get("event")) + return True + except MonitorSocketError: + LOG_JOB.warning("QMP connection closed") + return None return False LOG_JOB.info("Try to get qmp events %s in %s seconds!", event_names, timeout)