• Andrei Elkin's avatar
    Bug #38240 Crash in safe_mutex_lock () thr_mutex.c line 97 on rotate_relay_log · e2ac8c07
    Andrei Elkin authored
                
    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.
    e2ac8c07
mysqld.cc 316 KB