diff options
author | Andrei Elkin <aelkin@mysql.com> | 2009-06-23 12:10:04 +0300 |
---|---|---|
committer | Andrei Elkin <aelkin@mysql.com> | 2009-06-23 12:10:04 +0300 |
commit | e2ac8c07bdd2e58f5f7b4919a76a0d1881f3ed5e (patch) | |
tree | 56e72dd0dbb12bfe48e2228710ee7c8d2f46792f /sql/field.cc | |
parent | f3bdd56fe66736b7776e2c80b001ce3dc198cfa2 (diff) | |
download | mariadb-git-e2ac8c07bdd2e58f5f7b4919a76a0d1881f3ed5e.tar.gz |
Bug #38240 Crash in safe_mutex_lock () thr_mutex.c line 97 on rotate_relay_log
The reason for the crash was rotate_relay_log (mi=0x0) did not verify
the passed value of active_mi. There are more cases where active_mi
is supposed to be non-zero e.g change_master(), stop_slave(), and it's
reasonable to protect from a similar crash all of them with common
fixes.
Fixed with spliting end_slave() in slave threads release and slave
data clean-up parts (a new close_active_mi()). The new function is
invoked at the very end of close_connections() so that all users of
active_mi are proven to have left.
sql/mysqld.cc:
added the 2nd part (data) of the slave's clean up.
sql/slave.cc:
end_slave() is split in two part to release the slave threads and the remained
resources separately.
The new close_active_mi() should be called after all possible users ofactive_mi
has left, i.e at the very end of close_connections().
sql/slave.h:
interface to the new end_active_mi() function is added.
Diffstat (limited to 'sql/field.cc')
0 files changed, 0 insertions, 0 deletions