Commit 3f8a904f authored by unknown's avatar unknown

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.


sql/log_event.cc:
  Since Log_event::write_header() can be called from inside
  init_server_components(), it is possible that thd is NULL. In this
  case, we set the time of the event to the current time instead
  of the start time of the query.
parent 5d1e3bfa
......@@ -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