Memory grows over time, likely due to a memory leak in PCI data collection. Can only reproduce on hardware environments, may be particular to specific PCI devices that supply VPD data.
Valgrind stacks after a couple of hours:
==3411871== 7,559,541 (407,160 direct, 7,152,381 indirect) bytes in 16,965 blocks are definitely lost in loss record 2,846 of 2,846
==3411871== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3411871== by 0x4D53C50: g_malloc0 (gmem.c:161)
==3411871== by 0x49A2832: virPCIVPDParse (virpcivpd.c:672)
==3411871== by 0x4983BD8: virPCIDeviceGetVPD (virpci.c:2694)
==3411871== by 0x4A2CEB7: UnknownInlinedFun (node_device_conf.c:3032)
==3411871== by 0x4A2CEB7: virNodeDeviceGetPCIDynamicCaps (node_device_conf.c:3065)
==3411871== by 0x4A2D03D: virNodeDeviceUpdateCaps (node_device_conf.c:2636)
==3411871== by 0xFC8CD35: nodeDeviceGetXMLDesc (node_device_driver.c:370)
==3411871== by 0x4B7E9D1: virNodeDeviceGetXMLDesc (libvirt-nodedev.c:275)
==3411871== by 0x15519A: UnknownInlinedFun (remote_daemon_dispatch_stubs.h:15507)
==3411871== by 0x15519A: remoteDispatchNodeDeviceGetXMLDescHelper.lto_priv.0 (remote_daemon_dispatch_stubs.h:15484)
==3411871== by 0x4A59785: UnknownInlinedFun (virnetserverprogram.c:428)
==3411871== by 0x4A59785: virNetServerProgramDispatch (virnetserverprogram.c:302)
==3411871== by 0x4A60067: UnknownInlinedFun (virnetserver.c:140)
==3411871== by 0x4A60067: virNetServerHandleJob (virnetserver.c:160)
==3411871== by 0x499B982: virThreadPoolWorker (virthreadpool.c:164)
==3411871== by 0x499A4D8: virThreadHelper (virthread.c:241)
==3411871== by 0x514CB42: start_thread (pthread_create.c:442)
==3411871== by 0x51DDBB3: clone (clone.S:100)
==3411871== 1,608,514 (134,160 direct, 1,474,354 indirect) bytes in 5,590 blocks are definitely lost in loss record 2,844 of 2,846
==3411871== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3411871== by 0x4D53C50: g_malloc0 (gmem.c:161)
==3411871== by 0x49A2832: virPCIVPDParse (virpcivpd.c:672)
==3411871== by 0x4983BD8: virPCIDeviceGetVPD (virpci.c:2694)
==3411871== by 0x4A2CEB7: UnknownInlinedFun (node_device_conf.c:3032)
==3411871== by 0x4A2CEB7: virNodeDeviceGetPCIDynamicCaps (node_device_conf.c:3065)
==3411871== by 0x4A2D03D: virNodeDeviceUpdateCaps (node_device_conf.c:2636)
==3411871== by 0x4A2D075: virNodeDeviceCapsListExport (node_device_conf.c:2707)
==3411871== by 0xFC8D10F: nodeDeviceListCaps (node_device_driver.c:459)
==3411871== by 0x4B7EE68: virNodeDeviceListCaps (libvirt-nodedev.c:402)
==3411871== by 0x1554FE: UnknownInlinedFun (remote_daemon_dispatch_stubs.h:15688)
==3411871== by 0x1554FE: remoteDispatchNodeDeviceListCapsHelper.lto_priv.0 (remote_daemon_dispatch_stubs.h:15655)
==3411871== by 0x4A59785: UnknownInlinedFun (virnetserverprogram.c:428)
==3411871== by 0x4A59785: virNetServerProgramDispatch (virnetserverprogram.c:302)
==3411871== by 0x4A60067: UnknownInlinedFun (virnetserver.c:140)
==3411871== by 0x4A60067: virNetServerHandleJob (virnetserver.c:160)
==3411871== by 0x499B982: virThreadPoolWorker (virthreadpool.c:164)
==3411871== by 0x499A4D8: virThreadHelper (virthread.c:241)
==3411871== by 0x514CB42: start_thread (pthread_create.c:442)
==3411871== by 0x51DDBB3: clone (clone.S:100)
Memory grows over time, likely due to a memory leak in PCI data collection. Can only reproduce on hardware environments, may be particular to specific PCI devices that supply VPD data.
Valgrind stacks after a couple of hours: valgrind/ vgpreload_ memcheck- amd64-linux. so) conf.c: 3032) tPCIDynamicCaps (node_device_ conf.c: 3065) dateCaps (node_device_ conf.c: 2636) LDesc (node_device_ driver. c:370) tXMLDesc (libvirt- nodedev. c:275) daemon_ dispatch_ stubs.h: 15507) odeDeviceGetXML DescHelper. lto_priv. 0 (remote_ daemon_ dispatch_ stubs.h: 15484) ogram.c: 428) gramDispatch (virnetserverpr ogram.c: 302) c:140) dleJob (virnetserver. c:160) c:164) create. c:442)
==3411871== 7,559,541 (407,160 direct, 7,152,381 indirect) bytes in 16,965 blocks are definitely lost in loss record 2,846 of 2,846
==3411871== at 0x484DA83: calloc (in /usr/libexec/
==3411871== by 0x4D53C50: g_malloc0 (gmem.c:161)
==3411871== by 0x49A2832: virPCIVPDParse (virpcivpd.c:672)
==3411871== by 0x4983BD8: virPCIDeviceGetVPD (virpci.c:2694)
==3411871== by 0x4A2CEB7: UnknownInlinedFun (node_device_
==3411871== by 0x4A2CEB7: virNodeDeviceGe
==3411871== by 0x4A2D03D: virNodeDeviceUp
==3411871== by 0xFC8CD35: nodeDeviceGetXM
==3411871== by 0x4B7E9D1: virNodeDeviceGe
==3411871== by 0x15519A: UnknownInlinedFun (remote_
==3411871== by 0x15519A: remoteDispatchN
==3411871== by 0x4A59785: UnknownInlinedFun (virnetserverpr
==3411871== by 0x4A59785: virNetServerPro
==3411871== by 0x4A60067: UnknownInlinedFun (virnetserver.
==3411871== by 0x4A60067: virNetServerHan
==3411871== by 0x499B982: virThreadPoolWorker (virthreadpool.
==3411871== by 0x499A4D8: virThreadHelper (virthread.c:241)
==3411871== by 0x514CB42: start_thread (pthread_
==3411871== by 0x51DDBB3: clone (clone.S:100)
==3411871== 1,608,514 (134,160 direct, 1,474,354 indirect) bytes in 5,590 blocks are definitely lost in loss record 2,844 of 2,846 valgrind/ vgpreload_ memcheck- amd64-linux. so) conf.c: 3032) tPCIDynamicCaps (node_device_ conf.c: 3065) dateCaps (node_device_ conf.c: 2636) psListExport (node_device_ conf.c: 2707) driver. c:459) stCaps (libvirt- nodedev. c:402) daemon_ dispatch_ stubs.h: 15688) odeDeviceListCa psHelper. lto_priv. 0 (remote_ daemon_ dispatch_ stubs.h: 15655) ogram.c: 428) gramDispatch (virnetserverpr ogram.c: 302) c:140) dleJob (virnetserver. c:160) c:164) create. c:442)
==3411871== at 0x484DA83: calloc (in /usr/libexec/
==3411871== by 0x4D53C50: g_malloc0 (gmem.c:161)
==3411871== by 0x49A2832: virPCIVPDParse (virpcivpd.c:672)
==3411871== by 0x4983BD8: virPCIDeviceGetVPD (virpci.c:2694)
==3411871== by 0x4A2CEB7: UnknownInlinedFun (node_device_
==3411871== by 0x4A2CEB7: virNodeDeviceGe
==3411871== by 0x4A2D03D: virNodeDeviceUp
==3411871== by 0x4A2D075: virNodeDeviceCa
==3411871== by 0xFC8D10F: nodeDeviceListCaps (node_device_
==3411871== by 0x4B7EE68: virNodeDeviceLi
==3411871== by 0x1554FE: UnknownInlinedFun (remote_
==3411871== by 0x1554FE: remoteDispatchN
==3411871== by 0x4A59785: UnknownInlinedFun (virnetserverpr
==3411871== by 0x4A59785: virNetServerPro
==3411871== by 0x4A60067: UnknownInlinedFun (virnetserver.
==3411871== by 0x4A60067: virNetServerHan
==3411871== by 0x499B982: virThreadPoolWorker (virthreadpool.
==3411871== by 0x499A4D8: virThreadHelper (virthread.c:241)
==3411871== by 0x514CB42: start_thread (pthread_
==3411871== by 0x51DDBB3: clone (clone.S:100)
Possibly fixed by: /github. com/libvirt/ libvirt/ commit/ 64d32118540aca3 d42bc5ee21c8b78 0cafe04bfa. patch
https:/