Bug #117859 dict_stats_thread crash on fseg_inode_get

Submitted: 2 Apr 2025 9:51 Modified: 3 Apr 2025 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 2025 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 2025 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 2025 10:06] yangyang wang
The empty inode is the index that fails to be added.
[3 Apr 2025 10:07] yangyang wang
my mysql is 8.0.22
[3 Apr 2025 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

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.053 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.