[libvirt] 1.2.0 segfault on Centos 6

Scott Sullivan ssullivan at liquidweb.com
Thu Feb 20 15:00:10 UTC 2014


On 02/04/2014 05:23 PM, Jiri Denemark wrote:
> On Tue, Feb 04, 2014 at 17:02:41 +0100, Franky Van Liedekerke wrote:
>> Hi,
>>
>> 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 at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list




More information about the libvir-list mailing list