BUG#30274 (Debug server crashes because mutex isn't initialized):

Completion patch, since it is possible that Log_event::write_header()
is called with no current thread.

When starting the server, there is no thread available, but
MYSQL_BIN_LOG::open() is called to initialize the binary log. The
function writes a format description log event to the binary log,
which means that Log_event::write_header() can be called with no
current thread object available.
parent c8dc63b3
......@@ -691,9 +691,19 @@ bool Log_event::write_header(IO_CACHE* file, ulong event_data_length)
log_pos= my_b_safe_tell(file)+data_written;
}
/* Set time of we this isn't a query */
/*
Set time of when to when the query started. Since this function is
called from init_server_components() as well, it might be that the
current thread is not defined. In that case, we take the current
time instead. It is safe to call my_time() here since the first
time this line is reached is through the init_server_components()
call, which is after the my_init() call in the main() function (or
it's replacement, for some platforms).
*/
THD *thd= current_thd;
if (!when)
when= current_thd->start_time;
when= thd ? thd->start_time : my_time(0);
/*
Header will be of size LOG_EVENT_HEADER_LEN for all events, except for
FORMAT_DESCRIPTION_EVENT and ROTATE_EVENT, where it will be
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment