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: | |
| Category: | MySQL Server | Severity: | S2 (Serious) |
| Version: | OS: | Any | |
| Assigned to: | MySQL Verification Team | CPU Architecture: | Any |
[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.
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.