[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] 1.2.0 segfault on Centos 6

On 02/04/2014 05:23 PM, Jiri Denemark wrote:
On Tue, Feb 04, 2014 at 17:02:41 +0100, Franky Van Liedekerke wrote:

using libvirt 1.2.0 on a up-to-date Centos6.5 machine leads to
occasional segmentation faults (see below).
Sometimes it runs for 5 minutes, sometimes for an hour, but after that
the result is always the same: segfault after some weird qom-list, that
apparently the qemu version on centos doesn't know. Has 1.2.1 a known
fix for this?
I believe the following patch should fix the crash. I'll do some testing
tomorrow and send it as a proper patch afterwards:

I just wanted to add to this thread, that I also ran into this issue. While investigating a solution, I came across this patch. I then tried it, and this also corrected the crash issue I was getting. The environment causing the problem for me was:

CentOS 6 machine; 3 QEMU/KVM instances. 1 was using standard "stock" CentOS qemu package, the other two QEMU 1.6.2. Libvirt version: 1.2.1. After applying this patch, the crash issue is solved.

Hopefully this is a somewhat useful data point to add. Thanks for your work Jiri! I'll be following this thread for the "final" solution and will be sure to update to 1.2.2 if that version includes the final agreed upon solution. But this patch does solve the crash issue I was running into.

diff --git i/src/qemu/qemu_monitor.c w/src/qemu/qemu_monitor.c
index a968901..cdd817f 100644
--- i/src/qemu/qemu_monitor.c
+++ w/src/qemu/qemu_monitor.c
@@ -1019,7 +1019,9 @@ qemuMonitorFindBalloonObjectPath(qemuMonitorPtr mon,
                                   virDomainObjPtr vm,
                                   const char *curpath)
-    size_t i, j, npaths = 0, nprops = 0;
+    size_t i, j;
+    int npaths = 0;
+    int nprops = 0;
      int ret = 0;
      char *nextpath = NULL;
      qemuMonitorJSONListPathPtr *paths = NULL;
@@ -1045,6 +1047,8 @@ qemuMonitorFindBalloonObjectPath(qemuMonitorPtr mon,
      VIR_DEBUG("Searching for Balloon Object Path starting at %s", curpath);
npaths = qemuMonitorJSONGetObjectListPaths(mon, curpath, &paths);
+    if (npaths < 0)
+        return -1;
for (i = 0; i < npaths && ret == 0; i++) { @@ -1061,6 +1065,11 @@ qemuMonitorFindBalloonObjectPath(qemuMonitorPtr mon,
               * then this version of qemu/kvm does not support the feature.
              nprops = qemuMonitorJSONGetObjectListPaths(mon, nextpath, &bprops);
+            if (nprops < 0) {
+                ret = -1;
+                goto cleanup;
+            }
              for (j = 0; j < nprops; j++) {
                  if (STREQ(bprops[j]->name, "guest-stats-polling-interval")) {
                      VIR_DEBUG("Found Balloon Object Path %s", nextpath);

libvir-list mailing list
libvir-list redhat com

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]