Details
-
Bug
-
Status: In Progress (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.6, 10.11, 13.0
-
None
Description
Got it running a test suite. It appears that innodb creates THD during shutdown,
and that does not work well.
It it better not to create additional THD, background or not. It is better to create them once and reuse.
Below is a crash in dict_stats_func, because plugin_lock is invalid (s. Callstack for Thread 9 (Thread Id: 23912 (0x5d68), Thread Name: 'ib_tpool_worker'):
The error is Unhandled exception thrown: read access violation.
*pi* was nullptr.
>Debug.ListCallStack /AllThreads /ShowExternalCode
|
Callstack for Thread 1 (Thread Id: 39368 (0x99c8), Thread Name: 'Main Thread'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForAlertByThreadId()
|
2 ntdll.dll!TppBarrierAdjust()
|
3 ntdll.dll!TpWaitForTimer()
|
4 server.dll!tpool::thread_pool_win::native_timer::disarm()
|
5 server.dll!tpool::thread_pool_win::native_timer::~native_timer()
|
6 server.dll!tpool::thread_pool_win::native_timer::`scalar deleting destructor'(unsigned int)
|
7 server.dll!dict_stats_shutdown()
|
8 server.dll!srv_shutdown_bg_undo_sources()
|
9 server.dll!innodb_preshutdown()
|
10 server.dll!innodb_shutdown()
|
11 server.dll!innobase_end(handlerton * __formal, ha_panic_function __formal)
|
12 server.dll!ha_finalize_handlerton(void * plugin_)
|
13 server.dll!plugin_deinitialize(st_plugin_int * plugin, bool ref_check)
|
14 server.dll!plugin_shutdown()
|
15 server.dll!clean_up(bool print_message)
|
16 server.dll!unireg_abort(int exit_code)
|
17 server.dll!mysqld_main(int argc, char * * argv)
|
18 server.dll!mysqld_win_main(int argc, char * * argv)
|
19 mariadbd.exe!main(int argc, char * * argv)
|
20 [Inline Frame] mariadbd.exe!invoke_main()
|
21 mariadbd.exe!__scrt_common_main_seh()
|
22 kernel32.dll!00007ff9e1b6e8d7()
|
23 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 2 (Thread Id: 41808 (0xa350), Thread Name: 'ntdll.dll!TppWorkerThread()'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForWorkViaWorkerFactory()
|
2 ntdll.dll!TppWorkerThread()
|
3 kernel32.dll!00007ff9e1b6e8d7()
|
4 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 3 (Thread Id: 35760 (0x8bb0), Thread Name: 'ntdll.dll!TppWorkerThread()'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForWorkViaWorkerFactory()
|
2 ntdll.dll!TppWorkerThread()
|
3 kernel32.dll!00007ff9e1b6e8d7()
|
4 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 4 (Thread Id: 10224 (0x27f0), Thread Name: 'ntdll.dll!TppWorkerThread()'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForWorkViaWorkerFactory()
|
2 ntdll.dll!TppWorkerThread()
|
3 kernel32.dll!00007ff9e1b6e8d7()
|
4 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 5 (Thread Id: 508 (0x1fc), Thread Name: 'statement_timer'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForAlertByThreadId()
|
2 ntdll.dll!RtlSleepConditionVariableCS()
|
3 KernelBase.dll!SleepConditionVariableCS()
|
4 server.dll!pthread_cond_timedwait(_RTL_CONDITION_VARIABLE * cond, _RTL_CRITICAL_SECTION * mutex, const timespec * abstime)
|
5 server.dll!inline_mysql_cond_timedwait(st_mysql_cond * that, st_mysql_mutex * mutex, const timespec * abstime, const char * src_file, unsigned int src_line)
|
6 server.dll!timer_handler(void * arg)
|
7 server.dll!pthread_start(void * p)
|
8 ucrtbase.dll!thread_start<unsigned int (__cdecl*)(void *),1>()
|
9 kernel32.dll!00007ff9e1b6e8d7()
|
10 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 6 (Thread Id: 41396 (0xa1b4), Thread Name: 'ib_tpool_worker'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForAlertByThreadId()
|
2 ntdll.dll!RtlpWaitOnCriticalSection()
|
3 ntdll.dll!RtlpEnterCriticalSectionContended()
|
4 ntdll.dll!RtlEnterCriticalSection()
|
5 server.dll!inline_mysql_mutex_lock(st_mysql_mutex * that, const char * src_file, unsigned int src_line)
|
6 server.dll!plugin_lock(THD * thd, st_plugin_int * * ptr)
|
7 server.dll!ha_lock_engine(THD * thd, const handlerton * hton)
|
8 server.dll!thd_set_ha_data(THD * thd, const transaction_participant * hton, const void * ha_data)
|
9 server.dll!purge_coordinator_callback(void * __formal)
|
10 server.dll!tpool::task_group::execute(tpool::task * t)
|
11 server.dll!tpool::task::execute()
|
12 server.dll!tpool::thread_pool_win::task_callback(_TP_CALLBACK_INSTANCE * __formal, void * param)
|
13 ntdll.dll!TppSimplepExecuteCallback()
|
14 ntdll.dll!TppWorkerThread()
|
15 kernel32.dll!00007ff9e1b6e8d7()
|
16 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 7 (Thread Id: 4600 (0x11f8), Thread Name: 'page_cleaner'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForAlertByThreadId()
|
2 ntdll.dll!RtlSleepConditionVariableCS()
|
3 KernelBase.dll!SleepConditionVariableCS()
|
4 server.dll!pthread_cond_timedwait(_RTL_CONDITION_VARIABLE * cond, _RTL_CRITICAL_SECTION * mutex, const timespec * abstime)
|
5 server.dll!pthread_cond_wait(_RTL_CONDITION_VARIABLE * cond, _RTL_CRITICAL_SECTION * mutex)
|
6 server.dll!buf_flush_page_cleaner()
|
7 server.dll!std::invoke<void (__cdecl*)(void) noexcept>(void(*)() noexcept && _Obj)
|
8 server.dll!std::thread::_Invoke<std::tuple<void (__cdecl*)(void) noexcept>,0>(void * _RawVals)
|
9 ucrtbase.dll!thread_start<unsigned int (__cdecl*)(void *),1>()
|
10 kernel32.dll!00007ff9e1b6e8d7()
|
11 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 8 (Thread Id: 6904 (0x1af8), Thread Name: 'ucrtbase.dll!thread_start<unsigned int (__cdecl*)(void *),1>'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForAlertByThreadId()
|
2 ntdll.dll!RtlSleepConditionVariableCS()
|
3 KernelBase.dll!SleepConditionVariableCS()
|
4 server.dll!pthread_cond_timedwait(_RTL_CONDITION_VARIABLE * cond, _RTL_CRITICAL_SECTION * mutex, const timespec * abstime)
|
5 server.dll!pthread_cond_wait(_RTL_CONDITION_VARIABLE * cond, _RTL_CRITICAL_SECTION * mutex)
|
6 server.dll!fsp_binlog_page_fifo::flush_thread_run()
|
7 server.dll!fsp_binlog_page_fifo::start_flush_thread::__l2::<lambda>()
|
8 server.dll!std::invoke<`fsp_binlog_page_fifo::start_flush_thread'::`2'::lzma_ret <lambda>(unsigned __int64 *, unsigned int, const lzma_allocator *, const unsigned char *, unsigned __int64 *, unsigned __int64, unsigned char *, unsigned __int64 *, unsigned __int64)>(fsp_binlog_page_fifo::start_flush_thread::__l2::lzma_ret <lambda>(unsigned __int64 *, unsigned int, const lzma_allocator *, const unsigned char *, unsigned __int64 *, unsigned __int64, unsigned char *, unsigned __int64 *, unsigned __int64) && _Obj)
|
9 server.dll!std::thread::_Invoke<std::tuple<`fsp_binlog_page_fifo::start_flush_thread'::`2'::lzma_ret <lambda>(unsigned __int64 *, unsigned int, const lzma_allocator *, const unsigned char *, unsigned __int64 *, unsigned __int64, unsigned char *, unsigned __int64 *, unsigned __int64)>,0>(void * _RawVals)
|
10 ucrtbase.dll!thread_start<unsigned int (__cdecl*)(void *),1>()
|
11 kernel32.dll!00007ff9e1b6e8d7()
|
12 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 9 (Thread Id: 23912 (0x5d68), Thread Name: 'ib_tpool_worker'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 server.dll!intern_plugin_lock(LEX * lex, st_plugin_int * * rc, unsigned int state_mask)
|
2 server.dll!plugin_thdvar_init(THD * thd)
|
3 server.dll!THD::init()
|
4 server.dll!THD::THD(unsigned __int64 id, bool is_wsrep_applier)
|
5 server.dll!create_background_thd()
|
6 server.dll!innobase_create_background_thd(const char * name)
|
7 server.dll!dict_stats_func(void * __formal)
|
8 server.dll!tpool::thread_pool_win::native_timer::timer_callback(_TP_CALLBACK_INSTANCE * callback_instance, void * context, _TP_TIMER * callback_timer)
|
9 ntdll.dll!TppTimerpExecuteCallback()
|
10 ntdll.dll!TppWorkerThread()
|
11 kernel32.dll!00007ff9e1b6e8d7()
|
12 ntdll.dll!RtlUserThreadStart()
|
|
|
Callstack for Thread 10 (Thread Id: 34108 (0x853c), Thread Name: 'ib_tpool_worker'):
|
Index Function
|
--------------------------------------------------------------------------------
|
1 ntdll.dll!NtWaitForWorkViaWorkerFactory()
|
2 ntdll.dll!TppWorkerThread()
|
3 kernel32.dll!00007ff9e1b6e8d7()
|
4 ntdll.dll!RtlUserThreadStart()
|
|
|
>
|