Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Incomplete
-
10.6.5, 10.7(EOL)
-
None
-
None
-
Ubuntu 24.04, 48-core server
Description
This should be ignored for now, or even closed, as I have only seen it in 10.7.8 but I have yet to run TPROC-C from HammerDB on more recent versions. I will update this if it reproduces on more recent versions. I have run this without deadlocks on an 8-core server using VU=1 and VU=4 for MariaDB versions 10.2 through 12.1 including 10.7.8 and both LTS and non-LTS versions.
This happens during the load ("build") phase of HammerDB. In this case I am using 8 clients to do the load on a 48-core server. The test runs fine for 10.2 through 10.6 but for 10.7.8 there is a deadlock.
I now have 8 sessions that have been stuck for ~193k seconds
+----+------+-----------+------+---------+--------+----------------+------------------------------------------------------------------------------------------------------+----------+
|
| Id | User | Host | db | Command | Time | State | Info | Progress |
|
+----+------+-----------+------+---------+--------+----------------+------------------------------------------------------------------------------------------------------+----------+
|
| 17 | root | localhost | tpcc | Query | 193451 | Update | insert into history (`h_c_id`, `h_c_d_id`, `h_c_w_id`, `h_w_id`, `h_d_id`, `h_date`, `h_amount`, `h_ | 0.000 |
|
| 18 | root | localhost | tpcc | Query | 193451 | Opening tables | insert into history (`h_c_id`, `h_c_d_id`, `h_c_w_id`, `h_w_id`, `h_d_id`, `h_date`, `h_amount`, `h_ | 0.000 |
|
| 19 | root | localhost | tpcc | Query | 193451 | Update | insert into history (`h_c_id`, `h_c_d_id`, `h_c_w_id`, `h_w_id`, `h_d_id`, `h_date`, `h_amount`, `h_ | 0.000 |
|
| 20 | root | localhost | tpcc | Query | 193451 | Update | insert into history (`h_c_id`, `h_c_d_id`, `h_c_w_id`, `h_w_id`, `h_d_id`, `h_date`, `h_amount`, `h_ | 0.000 |
|
| 21 | root | localhost | tpcc | Query | 193451 | Update | insert into history (`h_c_id`, `h_c_d_id`, `h_c_w_id`, `h_w_id`, `h_d_id`, `h_date`, `h_amount`, `h_ | 0.000 |
|
| 22 | root | localhost | tpcc | Query | 193449 | Opening tables | insert into history (`h_c_id`, `h_c_d_id`, `h_c_w_id`, `h_w_id`, `h_d_id`, `h_date`, `h_amount`, `h_ | 0.000 |
|
| 23 | root | localhost | tpcc | Query | 193451 | Update | insert into history (`h_c_id`, `h_c_d_id`, `h_c_w_id`, `h_w_id`, `h_d_id`, `h_date`, `h_amount`, `h_ | 0.000 |
|
| 24 | root | localhost | tpcc | Query | 193451 | Update | insert into history (`h_c_id`, `h_c_d_id`, `h_c_w_id`, `h_w_id`, `h_d_id`, `h_date`, `h_amount`, `h_ | 0.000 |
|
The thread stacks show all threads waiting on mutexes
3 syscall,srw_mutex_impl<true>::wait,srw_mutex_impl<true>::wait_and_lock,srw_mutex_impl<true>::wr_lock,ssux_lock_impl<true>::rd_wait,ssux_lock_impl<true>::rd_lock,sux_lock<ssux_lock_impl<true>,buf_page_get_low,buf_page_get_gen,btr_cur_t::search_leaf,btr_pcur_open,row_ins_clust_index_entry_low,row_ins_clust_index_entry,row_ins_index_entry,row_ins_index_entry_step,row_ins,row_ins_step,row_insert_for_mysql,ha_innobase::write_row,handler::ha_write_row,write_record,mysql_insert,mysql_execute_command,mysql_parse,dispatch_command,do_command,do_handle_one_connection,handle_one_connection,pfs_spawn_thread,start_thread,clone3
|
2 syscall,srw_mutex_impl<true>::wait,srw_mutex_impl<true>::wait_and_lock,srw_mutex_impl<true>::wr_lock,ssux_lock_impl<true>::wr_lock,sux_lock<ssux_lock_impl<true>,buf_page_get_low,buf_page_get_gen,btr_cur_t::search_leaf,btr_pcur_open,row_ins_clust_index_entry_low,row_ins_clust_index_entry,row_ins_index_entry,row_ins_index_entry_step,row_ins,row_ins_step,row_insert_for_mysql,ha_innobase::write_row,handler::ha_write_row,write_record,mysql_insert,mysql_execute_command,mysql_parse,dispatch_command,do_command,do_handle_one_connection,handle_one_connection,pfs_spawn_thread,start_thread,clone3
|
2 syscall,srw_mutex_impl<false>::wait,srw_mutex_impl<false>::wait_and_lock,srw_mutex_impl<false>::wr_lock,ssux_lock_impl<false>::rd_wait,ssux_lock_impl<false>::rd_lock,srw_lock_impl<false>::psi_rd_lock,srw_lock_impl<false>::rd_lock,fil_space_t::s_lock,ha_innobase::info_low,ha_innobase::info,ha_innobase::open,handler::ha_open,open_table_from_share,open_table,open_and_process_table,open_tables,open_and_lock_tables,open_and_lock_tables,mysql_insert,mysql_execute_command,mysql_parse,dispatch_command,do_command,do_handle_one_connection,handle_one_connection,pfs_spawn_thread,start_thread,clone3
|
1 syscall,ssux_lock_impl<true>::wait,ssux_lock_impl<true>::wr_wait,ssux_lock_impl<true>::wr_lock,sux_lock<ssux_lock_impl<true>,buf_page_get_low,buf_page_get_gen,btr_block_get,btr_insert_into_right_sibling,btr_page_split_and_insert,btr_cur_pessimistic_insert,btr_insert_on_non_leaf_level,btr_attach_half_pages,btr_page_split_and_insert,btr_cur_pessimistic_insert,row_ins_clust_index_entry_low,row_ins_clust_index_entry,row_ins_index_entry,row_ins_index_entry_step,row_ins,row_ins_step,row_insert_for_mysql,ha_innobase::write_row,handler::ha_write_row,write_record,mysql_insert,mysql_execute_command,mysql_parse,dispatch_command,do_command,do_handle_one_connection,handle_one_connection,pfs_spawn_thread,start_thread,clone3
|
1 syscall,srw_mutex_impl<true>::wait,srw_mutex_impl<true>::wait_and_lock,srw_mutex_impl<true>::wr_lock,ssux_lock_impl<true>::rd_wait,ssux_lock_impl<true>::rd_lock,sux_lock<ssux_lock_impl<true>,buf_page_get_low,buf_page_get_gen,btr_cur_t::search_leaf,btr_pcur_open,row_search_on_row_ref,row_purge_reposition_pcur,row_purge_reset_trx_id,row_purge_record_func,row_purge,row_purge_step,que_thr_step,que_run_threads_low,que_run_threads,srv_task_execute,purge_worker_callback,tpool::task_group::execute,tpool::thread_pool_generic::worker_main,??,start_thread,clone3
|
1 syscall,my_getevents,tpool::aio_linux::getevent_thread_routine,??,start_thread,clone3
|
1 __GI___sigtimedwait,my_sigwait,signal_hand,pfs_spawn_thread,start_thread,clone3
|
1 __GI___poll,poll,handle_connections_sockets,mysqld_main,__libc_start_call_main,__libc_start_main_impl,_start
|
1 __futex_abstimed_wait_common64,__futex_abstimed_wait_common,__GI___futex_abstimed_wait_cancelable64,__pthread_cond_wait_common,___pthread_cond_wait,tpool::waitable_task::wait,tpool::waitable_task::wait,trx_purge_wait_for_workers_to_complete,trx_purge,purge_coordinator_state::do_purge,purge_coordinator_callback,tpool::task_group::execute,tpool::thread_pool_generic::worker_main,??,start_thread,clone3
|
1 __futex_abstimed_wait_common64,__futex_abstimed_wait_common,__GI___futex_abstimed_wait_cancelable64,__pthread_cond_wait_common,___pthread_cond_wait,psi_cond_wait,inline_mysql_cond_wait,handle_manager,pfs_spawn_thread,start_thread,clone3
|
1 __futex_abstimed_wait_common64,__futex_abstimed_wait_common,__GI___futex_abstimed_wait_cancelable64,__pthread_cond_wait_common,___pthread_cond_wait,psi_cond_wait,inline_mysql_cond_wait,binlog_background_thread,pfs_spawn_thread,start_thread,clone3
|
1 __futex_abstimed_wait_common64,__futex_abstimed_wait_common,__GI___futex_abstimed_wait_cancelable64,__pthread_cond_wait_common,___pthread_cond_timedwait64,psi_cond_timedwait,inline_mysql_cond_timedwait,timer_handler,pfs_spawn_thread,start_thread,clone3
|
1 __futex_abstimed_wait_common64,__futex_abstimed_wait_common,__GI___futex_abstimed_wait_cancelable64,__pthread_cond_wait_common,___pthread_cond_timedwait64,psi_cond_timedwait,inline_mysql_cond_timedwait,Thread_cache::park,do_handle_one_connection,handle_one_connection,pfs_spawn_thread,start_thread,clone3
|
1 __futex_abstimed_wait_common64,__futex_abstimed_wait_common,__GI___futex_abstimed_wait_cancelable64,__pthread_cond_wait_common,___pthread_cond_timedwait64,psi_cond_timedwait,inline_mysql_cond_timedwait,my_service_thread_sleep,ma_checkpoint_background,pfs_spawn_thread,start_thread,clone3
|
1 __futex_abstimed_wait_common64,__futex_abstimed_wait_common,__GI___futex_abstimed_wait_cancelable64,__pthread_cond_wait_common,___pthread_cond_timedwait64,buf_flush_page_cleaner,??,start_thread,clone3
|
1 __futex_abstimed_wait_common64,__futex_abstimed_wait_common,__GI___futex_abstimed_wait_cancelable64,__pthread_cond_wait_common,___pthread_cond_clockwait64,___pthread_cond_clockwait64,std::__condvar::wait_until,std::condition_variable::__wait_until_impl<std::chrono::duration<long,,std::condition_variable::wait_until<std::chrono::duration<long,,std::condition_variable::wait_for<long,,tpool::thread_pool_generic::wait_for_tasks,tpool::thread_pool_generic::get_task,tpool::thread_pool_generic::worker_main,??,start_thread,clone3
|
And there are no errors or warnings in the database error log