Bug 977961

Summary: libvirtd leaks URI on destination when migrating
Product: Red Hat Enterprise Linux 6 Reporter: Ján Tomko <jtomko>
Component: libvirtAssignee: Jiri Denemark <jdenemar>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: high    
Version: 6.4CC: acathrow, ajia, cpelland, cwei, dallan, dyuan, jdenemar, jsvarova, weizhan, xuzhang, ydu, zpeng
Target Milestone: rcKeywords: ZStream
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libvirt-0.10.2-20.el6 Doc Type: Bug Fix
Doc Text:
When migrating, libvirtd leaked migration URI (Uniform Resource Identifier) on destination. A patch has been provided to fix this bug and the migration URI is now freed correctly.
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-21 09:03:54 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 984578    
Attachments:
Description Flags
valgrind
none
valgrind msg 0723 none

Description Ján Tomko 2013-06-25 16:49:47 UTC
Description of problem:
libvirtd leaks URI on destination when migrating

Version-Release number of selected component (if applicable):
libvirt-0.10.2-18.el6_4.9

How reproducible:
100 %

Steps to Reproduce:
1. (on host A): migrate a domain:
virsh migrate dom qemu+ssh://hostB/system tcp://hostB
2. (on host B): URI is not freed, as shown by valgrind

Actual results:
Valgrind on the destination shows a leak:
==2435== 84 (80 direct, 4 indirect) bytes in 1 blocks are definitely lost in loss record 517 of 717
==2435==    at 0x4A0577B: calloc (vg_replace_malloc.c:593)
==2435==    by 0x4E7877D: virAlloc (memory.c:100)
==2435==    by 0x4E9E9D9: virURIParse (viruri.c:170)
==2435==    by 0x47806E: qemuMigrationPrepareDirect (qemu_migration.c:1610)
==2435==    by 0x454743: qemuDomainMigratePrepare3 (qemu_driver.c:10021)
==2435==    by 0x4F00F6E: virDomainMigratePrepare3 (libvirt.c:6131)
==2435==    by 0x42E1EE: remoteDispatchDomainMigratePrepare3Helper (remote.c:3534)
==2435==    by 0x4F5E0E1: virNetServerProgramDispatch (virnetserverprogram.c:431)
==2435==    by 0x4F5F3CD: virNetServerProcessMsg (virnetserver.c:170)
==2435==    by 0x4F5FA6B: virNetServerHandleJob (virnetserver.c:191)
==2435==    by 0x4E8337B: virThreadPoolWorker (threadpool.c:144)
==2435==    by 0x4E82C68: virThreadHelper (threads-pthread.c:161)

Expected results:
URI is freed properly.

Additional info:
Fixed upstream by:
commit ddf8ad82eb5f638d6153f4b1869af17dca572e67
Author:     Jiri Denemark <jdenemar>
AuthorDate: 2013-06-18 13:38:55 +0200
Commit:     Jiri Denemark <jdenemar>
CommitDate: 2013-06-18 14:49:20 +0200

    qemu: Avoid leaking uri in qemuMigrationPrepareDirect

git describe: v1.0.6-91-gddf8ad8 contains: v1.1.0-rc1~75

Comment 1 Ján Tomko 2013-06-25 16:54:57 UTC
Downstream patch posted:
http://post-office.corp.redhat.com/archives/rhvirt-patches/2013-June/msg00608.html

Comment 7 zhpeng 2013-07-10 02:58:27 UTC
Created attachment 771355 [details]
valgrind

Comment 8 Ján Tomko 2013-07-10 11:36:37 UTC
There's a double free in the logs in comment 7:
==15763== Invalid free() / delete / delete[] / realloc()
==15763==    at 0x4A063F0: free (vg_replace_malloc.c:446)
==15763==    by 0x4E768B8: virFree (memory.c:419)
==15763==    by 0x4AAE37: qemuMigrationPrepareDirect (qemu_migration.c:1656)
==15763==    by 0x454893: qemuDomainMigratePrepare3 (qemu_driver.c:10039)
...
==15763==  Address 0x13a72ea0 is 0 bytes inside a block of size 11 free'd
==15763==    at 0x4A063F0: free (vg_replace_malloc.c:446)
==15763==    by 0x4E768B8: virFree (memory.c:419)
==15763==    by 0x4E9CBD6: virURIFree (viruri.c:325)
==15763==    by 0x4AAE2D: qemuMigrationPrepareDirect (qemu_migration.c:1655)

Moving back to POST:
http://post-office.corp.redhat.com/archives/rhvirt-patches/2013-July/msg00214.html

Comment 9 Jiri Denemark 2013-07-10 12:50:35 UTC
*** Bug 982544 has been marked as a duplicate of this bug. ***

Comment 12 zhpeng 2013-07-16 05:30:15 UTC
because of Bug 984793, i can't start a guest. so need to verify it later when that bug fixed.

Comment 14 zhpeng 2013-07-23 03:09:45 UTC
Created attachment 777147 [details]
valgrind msg 0723

Comment 15 Ján Tomko 2013-08-28 08:48:38 UTC
None of the leaks in the log in comment 14 seem significant to me.

Comment 16 yanbing du 2013-10-22 05:34:19 UTC
Retest this bug with libvirt-0.10.2-29.el6.x86_64, valgrind result is same with comment 13, so move this bug to VERIFIED.

Comment 17 yanbing du 2013-10-22 05:55:50 UTC
(In reply to yanbing du from comment #16)
> Retest this bug with libvirt-0.10.2-29.el6.x86_64, valgrind result is same
> with comment 13, so move this bug to VERIFIED.

Should be comment 14

Comment 19 errata-xmlrpc 2013-11-21 09:03:54 UTC
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.

http://rhn.redhat.com/errata/RHBA-2013-1581.html