On 27/11/13 06:31, Nehal J Wani wrote:
On running the command make -C tests valgrind, there used to be a
bunch of
memory leaks shown by valgrind. Specifically, one can check it by running:
libtool --mode=execute valgrind --quiet --leak-check=full --suppressions=./.valgrind.supp
qemuhotplugtest
The issue was that def->info->alias was already malloc'ed by xmlStrndup in
virDomainDeviceInfoParseXML (domain_conf.c:3439). The new alias was being
assigned again without freeing the old one in qemuAssignDeviceAliases().
This patch checks if the entity exists, and frees accordingly, hence making
valgrind cry lesser.
---
src/qemu/qemu_command.c | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 763417f..bbec1d4 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -979,6 +979,8 @@ qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCapsPtr
qemuCaps)
size_t i;
for (i = 0; i < def->ndisks; i++) {
+ if (def->disks[i]->info.alias)
+ VIR_FREE(def->disks[i]->info.alias);
Instead of free'ing it, it should be used to avoid calculate/strdup the
alias again. Since the "alias" from virDomainDeviceInfoParseXML only
works for active domain's XML:
<snip>
if (alias == NULL &&
!(flags & VIR_DOMAIN_XML_INACTIVE) &&
xmlStrEqual(cur->name, BAD_CAST "alias")) {
alias = cur;
</snip>
And I don't think using the "alias" existing in the XML could cause any
conflicts for an active domain.
Regards,
Osier