July 12, 2012

[MySQL Bug]使用DEBUG_SYNC调试多线程并发导致的bug

转载请署名:印风 ———————————————————- 这里以一个简单的bug(bug#58198)为例,本例使用的也比较简单,就用SIGNAL 和WAIT_FOR 我们对Percona Server 5.5.18注入如下代码: 在函数mysql_change_db_impl(use db时会调用)中: Index: sql/sql_db.cc =================================================================== — sql/sql_db.cc (revision 1185) +++ sql/sql_db.cc (working copy) @@ -1291,7 +1291,7 @@ the previous database name, we should do it explicitly. */ my_free(thd->db); – + DEBUG_SYNC(thd, “use_db_free”); thd->reset_db(new_db_name->str, new_db_name->length); } 在函数mysqld_list_processes(show processlist时会调用)中: Index: sql/sql_show.cc =================================================================== — sql/sql_show.cc (revision 1185) +++ sql/sql_show.cc (working copy) […]