From 3ba93c754bc875a2b5f1baf65ca5ba704beb0bc5 Mon Sep 17 00:00:00 2001 From: Nikolay Shirokovskiy Date: Tue, 17 May 2016 14:44:46 +0300 Subject: [PATCH] daemon: cleanup state drivers in order reverse to init order This patch aims to fix observed crash on daemon shutdown. Main thread is in the process of state drivers cleanup, network driver is cleaned up and qemu driver is not yet. Meanwhile eof event from qemu process triggers qemuProcessStop -> networkReleaseActualDevice and crash happens as network driver is already cleaned up. Signed-off-by: Nikolay Shirokovskiy --- src/libvirt.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libvirt.c b/src/libvirt.c index 0e7e435bbf..6d9dba8887 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -799,12 +799,12 @@ virStateInitialize(bool privileged, int virStateCleanup(void) { - size_t i; + int r; int ret = 0; - for (i = 0; i < virStateDriverTabCount; i++) { - if (virStateDriverTab[i]->stateCleanup && - virStateDriverTab[i]->stateCleanup() < 0) + for (r = virStateDriverTabCount - 1; r >= 0; r--) { + if (virStateDriverTab[r]->stateCleanup && + virStateDriverTab[r]->stateCleanup() < 0) ret = -1; } return ret;