[MDEV-21326] address TSAN warnings in tpool Created: 2019-12-16  Updated: 2020-03-25  Resolved: 2020-03-25

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

Type: Bug Priority: Major
Reporter: Vladislav Vaintroub Assignee: Vladislav Vaintroub
Resolution: Fixed Votes: 0
Labels: None


 Description   

WARNING: ThreadSanitizer: data race (pid=10227)
  Write of size 4 at 0x000003e7cfd8 by thread T10 (mutexes: write M590815976181190528):
    #0 tpool::waitable_task::release() ??:? (mysqld+0x19cb38f)
    #1 tpool::task_group::execute(tpool::task*) ??:? (mysqld+0x19ca903)
    #2 tpool::task::execute() ??:? (mysqld+0x19cb0f5)
    #3 tpool::thread_pool_generic::worker_main(tpool::worker_data*) ??:? (mysqld+0x19bc5a8)
    #4 void std::__invoke_impl<void, void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>(std::__invoke_memfun_deref, void (tpool::thread_pool_generic::*&&)(tpool::worker_data*), tpool::thread_pool_generic*&&, tpool::worker_data*&&) ??:? (mysqld+0x19c6777)
    #5 std::__invoke_result<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>::type std::__invoke<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>(void (tpool::thread_pool_generic::*&&)(tpool::worker_data*), tpool::thread_pool_generic*&&, tpool::worker_data*&&) ??:? (mysqld+0x19c652a)
    #6 _ZNSt6thread8_InvokerISt5tupleIJMN5tpool19thread_pool_genericEFvPNS2_11worker_dataEEPS3_S5_EEE9_M_invokeIJLm0ELm1ELm2EEEEDTclsr3stdE8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE ??:? (mysqld+0x19c648e)
    #7 std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::operator()() ??:? (mysqld+0x19c63f8)
    #8 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> > >::_M_run() ??:? (mysqld+0x19c5e9c)
    #9 std::error_code::default_error_condition() const ??:? (libstdc++.so.6+0xbd57e)
 
  Previous read of size 4 at 0x000003e7cfd8 by thread T4:
    #0 tpool::waitable_task::get_ref_count() ??:? (mysqld+0x1730156)
    #1 trx_purge_wait_for_workers_to_complete() trx0purge.cc:? (mysqld+0x171da3f)
    #2 trx_purge(unsigned long, bool) ??:? (mysqld+0x171ca30)
...


Generated at Thu Feb 08 09:06:17 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.