
On Thu, Aug 27, 2020 at 22:19:50 +0200, Ján Tomko wrote:
clang reports:
stack frame size of 2152 bytes in function 'libxlDomainStart'
This is mostly due to the d_config variable:
sizeof(libxl_domain_config) = 1232
Use g_new0 to allocate it and bring the frame size down.
Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/libxl/libxl_domain.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index de2059fa24..ae428fc7c1 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -1267,7 +1267,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver, int restore_fd, uint32_t restore_ver LIBXL_DOMSTART_RESTORE_VER_ATTR) { - libxl_domain_config d_config; + libxl_domain_config *d_config = NULL; virDomainDefPtr def = NULL; virObjectEventPtr event = NULL; libxlSavefileHeader hdr; @@ -1288,7 +1288,9 @@ libxlDomainStart(libxlDriverPrivatePtr driver, hostdev_flags |= VIR_HOSTDEV_SP_USB; #endif
- libxl_domain_config_init(&d_config); + d_config = g_new0(libxl_domain_config, 1); + + libxl_domain_config_init(d_config);
[...]
@@ -1523,7 +1525,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver, libxlDomainCleanup(driver, vm);
cleanup: - libxl_domain_config_dispose(&d_config); + libxl_domain_config_dispose(d_config);
Since this was working properly on a pointer to a stack'd variable it means that libxl_domain_config_dispose isn't freeing it. So you should free the container too.
VIR_FREE(config_json); VIR_FREE(dom_xml); VIR_FREE(managed_save_path); -- 2.26.2