replay: fix processing async events

Asynchronous events saved at checkpoints may invoke
callbacks when processed. These callbacks may also generate/read
new events (e.g. clock reads). Therefore event processing flag must be
reset before callback invocation.

Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20180227095203.1060.70831.stgit@pasha-VirtualBox>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
This commit is contained in:
Pavel Dovgalyuk 2018-02-27 12:52:03 +03:00 committed by Paolo Bonzini
parent 5f3bdfd4fa
commit 1a96e3c1e7

View file

@ -295,13 +295,13 @@ void replay_read_events(int checkpoint)
if (!event) {
break;
}
replay_finish_event();
read_event_kind = -1;
replay_mutex_unlock();
replay_run_event(event);
replay_mutex_lock();
g_free(event);
replay_finish_event();
read_event_kind = -1;
}
}