From 9ba32a29817a10de103b0e30c4840eec5e0c0ae1 Mon Sep 17 00:00:00 2001 From: Philipp Otterbein Date: Mon, 28 Apr 2025 00:46:44 +0200 Subject: [PATCH] allocate SimpleLogger before forking (cherry picked from commit 4e95f662db38d219609361697ae48a2b02352c20) --- src/libutil/unix/processes.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libutil/unix/processes.cc b/src/libutil/unix/processes.cc index 198243c20..0d50fc303 100644 --- a/src/libutil/unix/processes.cc +++ b/src/libutil/unix/processes.cc @@ -202,6 +202,7 @@ static int childEntry(void * arg) pid_t startProcess(std::function fun, const ProcessOptions & options) { + auto newLogger = makeSimpleLogger(); ChildWrapperFunction wrapper = [&] { if (!options.allowVfork) { /* Set a simple logger, while releasing (not destroying) @@ -210,7 +211,7 @@ pid_t startProcess(std::function fun, const ProcessOptions & options) ~ProgressBar() tries to join a thread that doesn't exist. */ logger.release(); - logger = makeSimpleLogger(); + logger = std::move(newLogger); } try { #ifdef __linux__