Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-38000

deadlock during TPROC-C load with 8 clients

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Incomplete
    • 10.6.5, 10.7(EOL)
    • N/A
    • 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

      Attachments

        Activity

          People

            Unassigned Unassigned
            mdcallag Mark Callaghan
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.