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@xxxxxxxxxx> > --- > 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 >