[MDEV-6698] safe_mutex: Found wrong usage of mutex 'log_space_lock' and 'LOCK_log' Created: 2014-09-04  Updated: 2014-09-12  Resolved: 2014-09-12

Status: Closed
Project: MariaDB Server
Component/s: None
Affects Version/s: 10.0.13
Fix Version/s: 10.0.14

Type: Bug Priority: Major
Reporter: Pavel Ivanov Assignee: Michael Widenius
Resolution: Fixed Votes: 0
Labels: None


 Description   

Our automated testing detected the report from safe_mutex about wrong usage of mutexes. Manual analysis reveals that there are indeed code paths that lock these mutexes in the different order.

First code path (line numbers are from 10.0.13 tarball):

sql/slave.cc:6206 (function next_event()) -- locks LOCK_log
sql/slave.cc:6397 (further in function next_event()) -- locks rli->log_space_lock

Second code path:

sql/slave.cc:2238 (function wait_for_relay_log_space()) -- locks rli->log_space_lock
sql/log.cc:4825 (function MYSQL_BIN_LOG::new_file_impl() called from MYSQL_BIN_LOG::new_file() called from rotate_relay_log() called from further in wait_for_relay_log_space()) -- locks LOCK_log

Even if currently it's impossible for these code paths to execute at the same time in parallel please fix them to avoid safe_mutex error message (which actually means that in future some changes may lead to these paths to dead lock).



 Comments   
Comment by Michael Widenius [ 2014-09-09 ]

I moved freeing of log_space_lock earlier to avoid the problem.
This is safe as we don't need to have log_space_lock locked for calling rotate_relay_log.

Comment by Michael Widenius [ 2014-09-12 ]

Pushed

Generated at Thu Feb 08 07:13:55 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.