Description:
InnoDB: Assertion failuer in thread xxxxx in file ut0ut.cc line 945
Key_buffer_size=16777216
read_buffer_size=4194304
max_used_connections=76
max_threads=0
thread_count=44
connection_count=44
It is possible that mysqld could use up to
Key_buffer_size + (read_buffer_size + sort_buffer_size) * max_threads = 86110K bytes of memory.
Thread pointer: 0x7f441203f000
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7f4407b13530 thread_stack 0x40000
/usr/local/mysql/bin/mysqld(my_print_stacktrace+0x3c)[0x55f140d8cd6c]
/usr/local/mysql/bin/mysqld(handle_fatal_signal+0x4ce)[0x55f14046134e]
/lib64/libpthread.so.0(+0xf700)[0x7f467269c700]
/lib64/libc.so.6(gsignal+0x37)[0x7f46710e14e7]
/lib64/libc.so.6(abort+0x148)[0x7f46710e2bd8]
/usr/local/mysql/bin/mysqld(+0x8bb24d)[0x55f1402cf24d]
/usr/local/mysql/bin/mysqld(_ZN2ib5fatalD1Ev+0x63)[0x55f1402cf7f3]
/usr/local/mysql/bin/mysqld(+0x8c125e)[0x55f1402d525e]
/usr/local/mysql/bin/mysqld(_Z15buf_block_allocP10buf_pool_t+0xe)[0x55f140f3c25e]
/usr/local/mysql/bin/mysqld(_Z26mem_heap_create_block_funcP16mem_block_info_tmm+0x651)[0x55f1403bc121]
/usr/local/mysql/bin/mysqld(_Z18mem_heap_add_blockP16mem_block_info_tm+0xc1)[0x55f1403bc261]
/usr/local/mysql/bin/mysqld(_ZN7RecLock6createEP5trx_tbbPK9lock_prdt+0x593)[0x55f1403b62f3]
/usr/local/mysql/bin/mysqld(_ZN7RecLock12add_to_waitqEPK9ib_lock_tPK9lock_prdt+0x6d)[0x55f140e2bc3d]
/usr/local/mysql/bin/mysqld(+0x9a1aec)[0x55f1403b5aec]
/usr/local/mysql/bin/mysqld(_Z34lock_clust_rec_read_check_and_lockmPK11buf_block_tPKhP12dict_index_tPKm9lock_modemP9que_thr_t+0x2d8)[0x55f1403b4b98]
/usr/local/mysql/bin/mysqld(_Z15row_search_mvccPh15page_cur_mode_tP14row_prebuilt_tmm+0x2578)[0x55f1403df138]
/usr/local/mysql/bin/mysqld(_ZN11ha_innobase13general_fetchEPhjj+0xc8)[0x55f1403af458]
/usr/local/mysql/bin/mysqld(_ZN7handler11ha_rnd_nextEPh+0x4c)[0x55f14030d1cc]
/usr/local/mysql/bin/mysqld(_Z13rr_sequentialP11READ_RECORD+0x1d)[0x55f140325bdd]
/usr/local/mysql/bin/mysqld(_Z12mysql_updateP3THDR4ListI4ItemES4_y15enum_duplicatesPyS6_+0xa01)[0x55f140b891c1]
/usr/local/mysql/bin/mysqld(_ZN14Sql_cmd_update23try_single_table_updateEP3THDPb+0x159)[0x55f140b88639]
/usr/local/mysql/bin/mysqld(_ZN14Sql_cmd_update7executeEP3THD+0x35)[0x55f140b88415]
/usr/local/mysql/bin/mysqld(_Z21mysql_execute_commandP3THDb+0x89e)[0x55f140349d8e]
/usr/local/mysql/bin/mysqld(_Z11mysql_parseP3THDP12Parser_state+0x493)[0x55f140348983]
/usr/local/mysql/bin/mysqld(_Z16dispatch_commandP3THDPK8COM_DATA19enum_server_command+0x7fe)[0x55f14035108e]
/usr/local/mysql/bin/mysqld(_Z10do_commandP3THD+0x13e)[0x55f1403504fe]
/usr/local/mysql/bin/mysqld(_Z26threadpool_process_requestP3THD+0x99)[0x55f14042abc9]
/usr/local/mysql/bin/mysqld(+0xa177a8)[0x55f14042b7a8]
/usr/local/mysql/bin/mysqld(pfs_spawn_thread+0x4b)[0x55f1410aa85b]
/lib64/libpthread.so.0(+0x7e15)[0x7f4672694e15]
/lib64/libc.so.6(clone+0x6d)[0x7f46711acf9d]
How to repeat:
According to the stack analysis, the crash is triggered when the UPDATE statement is executed to obtain an idle page. It is suspected that the idle block returned by buf_LRU_get_free_block is empty and an invalid pointer is accessed.
Suggested fix:
I want to see if there's anything missing in the logic here, the function buf_block_alloc(buf_pool_t *buf_pool)