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.
}
if (global.mode & MODE_STARTING) {
- if (unlikely(!startup_logs))
- startup_logs_init();
-
if (likely(startup_logs)) {
struct ist m[3];
m[2] = msg_ist;
ring_write(startup_logs, ~0, 0, 0, m, 3);
- }
+ } else
+ usermsgs_put(&msg_ist);
}
else {
usermsgs_put(&msg_ist);