Re: [XEN PATCH] tools/console/daemon: fix log_dir memory leak in xenconsoled

Jan Beulich <[email protected]>
Newsgroups gmane.comp.emulators.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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.