Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.3(EOL)
-
SLES, ppc64le
Description
Server was at state where no new connections where being accepted and existing connections wheren't processing any more SQL (ycsb data load).
10.3 at revision ba125eca551e3f5faee9f6d7ebed290f04cfc8fd
regression introduced c2118a08b144. Doesn't affected 10.2.
From backtrace:
Thread 164 (Thread 0x77d05f7ff160 (LWP 526603)):
|
#0 0x00007fffab927d28 in __lll_lock_wait (futex=0x200, private=<optimized out>) at lowlevellock.c:46
|
#1 0x00007fffab91c784 in __GI___pthread_mutex_lock (mutex=0x77936c0026e0) at ../nptl/pthread_mutex_lock.c:135
|
#2 0x000000011b1fdb78 in inline_mysql_mutex_lock (src_line=3829, src_file=0x11b9be898 "/home/danielgb/mariadb-server/sql/sql_class.h", that=0x77936c0026e0) at /home/danielgb/mariadb-server/include/mysql/psi/mysql_thread.h:712
|
#3 THD::set_killed (killed_err_msg_arg=0x0, killed_errno_arg=0, killed_arg=KILL_WAIT_TIMEOUT, this=0x77936c000ce8) at /home/danielgb/mariadb-server/sql/sql_class.h:3829
|
#4 tp_timeout_handler (c=0x10c43dc4a20) at /home/danielgb/mariadb-server/sql/threadpool_common.cc:473
|
#5 0x000000011b2b6fc4 in timeout_check (timer=<optimized out>) at /home/danielgb/mariadb-server/sql/threadpool_generic.cc:609
|
#6 timer_thread (param=0x11c0effd0 <pool_timer>) at /home/danielgb/mariadb-server/sql/threadpool_generic.cc:674
|
#7 0x00007fffab918770 in start_thread (arg=0x7fffab918670 <start_thread>) at pthread_create.c:465
|
#8 0x00007fffab035e38 in clone () at ../sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S:82
|
|
|
(gdb) up
|
#3 THD::set_killed (killed_err_msg_arg=0x0, killed_errno_arg=0, killed_arg=KILL_WAIT_TIMEOUT, this=0x77936c000ce8) at /home/danielgb/mariadb-server/sql/sql_class.h:3829
|
3829 mysql_mutex_lock(&LOCK_thd_kill);
|
(gdb) p LOCK_thd_kill
|
$2 = {m_mutex = {__data = {__lock = 2, __count = 0, __owner = 526603, __nusers = 1, __kind = 3, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}},
|
__size = "\002\000\000\000\000\000\000\000\v\t\b\000\001\000\000\000\003", '\000' <repeats 22 times>, __align = 2}, m_psi = 0x0}
|
tp_timeout_handler acquires the LOCK_thd_kill before calling set_killed which tries to acquire the same lock.