BUG/MINOR: errors: print_message: don't allocate startup logs ring

Don't call startup_logs_init() in order to allocate the startup logs ring
again, if startup_logs pointer is NULL. Startup logs ring is allocated
explicitly in step_init_1 routine, when the process starts, and it's freed
explicitly for master process at the end of mworker_reexec scope. So, when
we no longer have this pointer, let's just save the log message in the
message buffer.

Otherwise, in case of master process, we will allocate the startup logs ring
again here and we will lost its address after execvp.

No need to backport this fix as it's related to the latest master-worker
refactoring.
This commit is contained in:
Valentine Krasnobaeva 2024-10-28 15:17:11 +01:00 committed by William Lallemand
parent bf8c871e26
commit f0f03b98f7
1 changed files with 2 additions and 4 deletions

View File

@ -340,9 +340,6 @@ static void print_message(int use_usermsgs_ctx, const char *label, const char *f
} }
if (global.mode & MODE_STARTING) { if (global.mode & MODE_STARTING) {
if (unlikely(!startup_logs))
startup_logs_init();
if (likely(startup_logs)) { if (likely(startup_logs)) {
struct ist m[3]; struct ist m[3];
@ -351,7 +348,8 @@ static void print_message(int use_usermsgs_ctx, const char *label, const char *f
m[2] = msg_ist; m[2] = msg_ist;
ring_write(startup_logs, ~0, 0, 0, m, 3); ring_write(startup_logs, ~0, 0, 0, m, 3);
} } else
usermsgs_put(&msg_ist);
} }
else { else {
usermsgs_put(&msg_ist); usermsgs_put(&msg_ist);