Bug 892079 - Libvirtd crash when destroyed the windows guest which was excuting s3/s4 operation
Libvirtd crash when destroyed the windows guest which was excuting s3/s4 oper...
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: libvirt (Show other bugs)
x86_64 Linux
high Severity high
: rc
: ---
Assigned To: Michal Privoznik
Virtualization Bugs
: TestBlocker, ZStream
: 915653 (view as bug list)
Depends On: 890648 1080376
Blocks: 896690 915344
  Show dependency treegraph
Reported: 2013-01-05 00:28 EST by zhenfeng wang
Modified: 2014-03-25 05:59 EDT (History)
13 users (show)

See Also:
Fixed In Version: libvirt-0.10.2-19.el6
Doc Type: Bug Fix
Doc Text:
Previously, libvirtd was unable to execute an s3/s4 operation for a Microsoft Windows guest which ran the guest agent service. Consequently, this resulted in a "domain s4 fail" error message, due to the domain being destroyed. With this update, the guest is destroyed successfully and the libvirtd service no longer crashes.
Story Points: ---
Clone Of: 890648
Last Closed: 2013-11-21 03:36:27 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
libvirtd crash log (64.06 KB, text/plain)
2013-01-18 05:32 EST, zhpeng
no flags Details

  None (edit)
Comment 2 zhenfeng wang 2013-01-05 01:44:05 EST
after step 5 ,i did some further check
# service libvirtd status
libvirtd dead but pid file exists

# virsh list
error: Failed to reconnect to the hypervisor
error: no valid connection
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Connection refused

# ps aux|grep qemu
root     59813  0.0  0.0 103244   856 pts/5    S+   01:29   0:00 grep qemu

start the libvirtd service ,then check the guest's status,the guest has been destroyed

# service libvirtd start
Starting libvirtd daemon:                                  [  OK  ]
# service libvirtd status
libvirtd (pid  60193) is running...

# virsh list  --all
 Id    Name                           State
 -     win7-32                        shut of
Comment 5 Michal Privoznik 2013-01-09 09:35:32 EST
Patch proposed upstream:

Comment 9 zhpeng 2013-01-18 05:32:38 EST
Created attachment 682311 [details]
libvirtd crash log
Comment 10 zhpeng 2013-01-18 05:33:02 EST
crash log attached.
Comment 11 EricLee 2013-01-18 08:18:32 EST
I can also still reproduce this bug with libvirt-0.10.2-16.el6.x86_64.
Comment 12 Michal Privoznik 2013-01-21 14:07:38 EST
Okay guys, I've created a scratch build before claiming I fixed this:


Can you please give it a try?
Comment 14 Michal Privoznik 2013-01-22 04:55:04 EST
Patch proposed upstream:

Comment 16 Michal Privoznik 2013-01-23 09:37:43 EST
Since this is targeted for 6.5 now, and I've  just pushed the patch upstream, I am moving this one to POST:

commit d960d06fc06a448f495c465caf06d3d0c74ea587
Author:     Michal Privoznik <mprivozn@redhat.com>
AuthorDate: Mon Jan 21 11:52:44 2013 +0100
Commit:     Michal Privoznik <mprivozn@redhat.com>
CommitDate: Wed Jan 23 15:35:44 2013 +0100

    qemu_agent: Ignore expected EOFs
    One of my previous patches (f2a4e5f176c408) tried to fix crashing
    libvirtd on domain detroy. However, we need to copy pattern from
    qemuProcessHandleMonitorEOF() instead of decrementing reference
    counter. The rationale for this is, if qemu process is dying due
    to domain being destroyed, we obtain EOF on both the monitor and
    agent sockets. However, if the exit is expected, qemuProcessStop
    is called, which cleans both agent and monitor sockets up. We
    want qemuAgentClose() to be called iff the EOF is not expected,
    so we don't leak an FD and memory. Moreover, there could be race
    with qemuProcessHandleMonitorEOF() which could have already
    closed the agent socket, in which case we don't want to do

Comment 18 Jiri Denemark 2013-02-26 08:33:15 EST
*** Bug 915653 has been marked as a duplicate of this bug. ***
Comment 19 Jakub Libosvar 2013-03-13 05:15:50 EDT
Marking with TestBlocker since it fails our Jenkins Jobs testing RHEV
Comment 20 Dave Allan 2013-03-13 10:34:13 EDT
(In reply to comment #19)
> Marking with TestBlocker since it fails our Jenkins Jobs testing RHEV

Fair enough, thank you for the explanation of what's failing.
Comment 22 zhenfeng wang 2013-08-13 06:15:50 EDT
Verify this bug on libvirt-0.10.2-21.el6.x86_64, the following was my verification steps

pkg info
1. prepare the test environment as step1 and step2 in coment 0
2 Excute the s3 in the host, quit the command before it was finshed
#  virsh dompmsuspend win7 --target mem

3 Excute the s4 in the host ,quit the command  before it was finished
# virsh dompmsuspend win7 --target disk

4 Then destroy the guest in the host
# virsh destroy win7
Domain win7 destroyed

5.check the libvirtd status
# ps aux|grep libvirtd
root      5251  0.0  0.0 103244   836 pts/0    S+   18:13   0:00 grep libvirtd
root     30067  1.7  0.1 1027604 15896 ?       Sl   16:18   1:58 libvirtd --daemon
# service libvirtd status
libvirtd (pid  30067) is running...

since the libvirtd was not crashed, also i can reproduce this bug in libvirt-0.10.2-13.el6.x86_64, so mark this bug verified
Comment 24 errata-xmlrpc 2013-11-21 03:36:27 EST
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


Note You need to log in before you can comment on or make changes to this bug.