Re: [XEN PATCH] tools/console/daemon: fix log_dir memory leak in xenconsoled
Jan Beulich <[email protected]>
| Newsgroups | org.xenproject.lists.xen-devel |
|---|---|
| Message-ID | <[email protected]> |
On 13.08.2026 23:27, Andrew Mbugua wrote: > Valgrind reports that 21 bytes are "still reachable" from the (XEN_LOG_DIR "/console") allocation: > > HEAP SUMMARY: > in use at exit: 21 bytes in 1 blocks > total heap usage: 9 allocs, 8 frees, 4,799 bytes allocated > > Since the dynamic memory allocation for the default log directory path happens before the process > forks into the background, the parent and intermediate processes exit during daemonize() > with the memory still reachable. > > Move the strdup() allocation down below the daemonize() block. This ensures only the final > background daemon allocates the default path, matching the lifetime of the free(log_dir) > cleanup loop at the exit of main(). > > With this change, Valgrind reports a clean heap summary > > HEAP SUMMARY: > in use at exit: 0 bytes in 0 blocks > total heap usage: 8 allocs, 8 frees, 4,778 bytes allocated > > Signed-off-by: Andrew Mbugua <[email protected]> Looks all plausible (albeit a little unnecessary, as memory is freed at program exit anyway), except that ... > --- a/tools/console/daemon/main.c > +++ b/tools/console/daemon/main.c > @@ -181,10 +181,6 @@ int main(int argc, char **argv) > } > } > > - if (!log_dir) { > - log_dir = strdup(XEN_LOG_DIR "/console"); > - } > - > if (geteuid() != 0) { > fprintf(stderr, "%s requires root to run.\n", argv[0]); > exit(EPERM); > @@ -201,6 +197,10 @@ int main(int argc, char **argv) > daemonize(pidfile ? pidfile : XEN_RUN_DIR "/xenconsoled.pid"); > } > > + if (!log_dir) { > + log_dir = strdup(XEN_LOG_DIR "/console"); > + } ... can you please not screw up indentation? All you want is to move the code, without converting tabs to blanks. Jan