Bug #117859 dict_stats_thread crash on fseg_inode_get
Submitted: 2 Apr 9:51 Modified: 3 Apr 10:38
Reporter: yangyang wang Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server Severity:S2 (Serious)
Version: OS:Any
Assigned to: MySQL Verification Team CPU Architecture:Any

[2 Apr 9:51] yangyang wang
Description:
mysql dict_stats_thread crash on fseg_inode_get when do add index

(gdb) bt
#0  0x00007f211c92fa01 in pthread_kill () from /lib64/libpthread.so.0
#1  0x00000000013c4ffe in my_write_core (sig=6) at ../../../include/my_thread.h:88
#2  handle_fatal_signal (sig=6) at ../../sql/signal_handler.cc:171
#3  handle_fatal_signal (sig=6) at ../../sql/signal_handler.cc:75
#4  <signal handler called>
#5  0x00007f21198bd4e7 in raise () from /lib64/libc.so.6
#6  0x00007f21198bebd8 in abort () from /lib64/libc.so.6
#7  0x0000000002423a47 in ut_dbg_assertion_failed (expr=0x3ba6d29 "inode", file=0x3b6e5c0 "../../../storage/innobase/fsp/fsp0fsp.cc", line=2170)
    at ../../../storage/innobase/ut/ut0dbg.cc:127
#8  0x0000000000d9198c in fseg_inode_get(unsigned char*, unsigned int, page_size_t const&, mtr_t*, buf_block_t**) [clone .part.0] [clone .lto_priv.0] (block=<optimized out>, 
    mtr=<optimized out>, page_size=..., space=<optimized out>, header=<optimized out>) at ../../../storage/innobase/fsp/fsp0fsp.cc:2170
#9  0x0000000006bced5d in fseg_inode_get (block=0x0, mtr=0x7f1bd5ff56b0, page_size=..., space=<optimized out>, header=0x7f205741c054 <Address 0x7f205741c054 out of bounds>)
    at ../../../storage/innobase/fsp/fsp0fsp.cc:2498
#10 fseg_n_reserved_pages(unsigned char*, unsigned long*, mtr_t*) [clone .cold.0] () at ../../../storage/innobase/fsp/fsp0fsp.cc:2507
#11 0x00000000066868be in btr_get_size (index=<optimized out>, flag=<optimized out>, mtr=0x7f1bd5ff56b0) at ../../../storage/innobase/btr/btr0btr.cc:495
#12 0x00000000068f59e4 in dict_stats_analyze_index_low (index=0x7f1b7c768198, n_sample_pages=@0x7f1bd5ff5520: 20) at ../../../storage/innobase/dict/dict0stats.cc:1705
#13 dict_stats_analyze_index (index=0x7f1b7c768198) at ../../../storage/innobase/dict/dict0stats.cc:1999
#14 0x00000000066873ed in dict_stats_update_persistent (table=0x7f1ba1c9ec98) at ../../../storage/innobase/dict/dict0stats.cc:2066
#15 dict_stats_update (table=0x7f1ba1c9ec98, stats_upd_option=<optimized out>) at ../../../storage/innobase/dict/dict0stats.cc:2891
#16 0x000000000669b396 in dict_stats_process_entry_from_recalc_pool (thd=<optimized out>) at ../../../storage/innobase/dict/dict0stats_bg.cc:389
#17 dict_stats_thread () at ../../../storage/innobase/dict/dict0stats_bg.cc:474

I have found some similar problem as https://bugs.mysql.com/bug.php?id=74343
Have the problem be solved?

How to repeat:
Repeatedly add or delete indexes to a table.
[3 Apr 10:05] yangyang wang
I checked and found that there was a disk full alarm.I found follow error:
2025-02-20T09:36:18.976389+08:00 98310 139758035052288 [ERROR] [MY-012420] [InnoDB] Table `test@t1`.`tt_32_p` /* Partition `p22` */ contains 11 indexes inside InnoDB, which is different from the number of indexes 10 defined in the MySQL
Isn't indexing a safe atomic operation?

I found this problem before, but there was no indication when it was fixed.
https://bugs.mysql.com/bug.php?id=70654
[3 Apr 10:06] yangyang wang
The empty inode is the index that fails to be added.
[3 Apr 10:07] yangyang wang
my mysql is 8.0.22
[3 Apr 10:38] MySQL Verification Team
I cannot reproduce this on modern MySQL server.

Please try latest 8.0 or 8.4 or 9.x

thanks