
On 2/23/22 11:01, Daniel P. Berrangé wrote:
On Wed, Feb 23, 2022 at 10:47:20AM +0100, Michal Prívozník wrote:
On 2/23/22 10:33, Daniel P. Berrangé wrote:
On Wed, Feb 23, 2022 at 10:16:57AM +0100, Michal Privoznik wrote:
After v8.0.0-466-g08101bde5d we unconditionally regenerate per domain NVRAM path even though it might have been parsed earlier from domain XML. The way we do that leads to a memleak:
43 bytes in 1 blocks are definitely lost in loss record 330 of 682 at 0x483F7E5: malloc (vg_replace_malloc.c:381) by 0x50D5B18: g_malloc (in /usr/lib64/libglib-2.0.so.0.7000.2) by 0x50EFA4F: g_strdup (in /usr/lib64/libglib-2.0.so.0.7000.2) by 0x49E774E: virXPathString (virxml.c:88) by 0x4A3F0E4: virDomainDefParseBootLoaderOptions (domain_conf.c:18226) by 0x4A3F49C: virDomainDefParseBootOptions (domain_conf.c:18298) by 0x4A448C3: virDomainDefParseXML (domain_conf.c:19598) by 0x4A487A1: virDomainDefParseNode (domain_conf.c:20404) by 0x117FCF: testCompareXMLToArgv (qemuxml2argvtest.c:726) by 0x142124: virTestRun (testutils.c:142) by 0x1423D4: virTestRunLog (testutils.c:197) by 0x140A76: mymain (qemuxml2argvtest.c:3406)
If we parsed NVRAM path from domain XML we must refrain from generating new path.
Hmm, so we honour the 'nvram' path from the XML, even when doing firmware auto-select ?
That is contrary to the qemuDomainUndefineFlags method expectations which unconditionally uses the qemuDomainNVRAMPathFormat result when deleting nvram, ignoring 'nvram' path in the XML
Good point. I think the question boils down to, what should happen when FW autoselection is enabled and user told use where they want to have NVRAM stored? It's a tricky situation because if the NVRAM file does exist we won't overwrite it. And yet, if we ever selected a different FW image the pre-existing NVRAM might be incompatible with the new FW image.
The new RESET_NVRAM flag can recover from this last scenario now.
So we need to make the qemuDomainUndefineFlags method honour the nvram path, if it was provided.
Fair enough. So do you prefer a follow up patch for fixing qemuDomainUndefineFlags() or reverting this patch and regenerating NVRAM path always? Michal