Bug #116144 Crash during recovery
Submitted: 18 Sep 2024 12:39 Modified: 18 Sep 2024 13:00
Reporter: Yuchen Zhang Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:8.0.32 OS:Any
Assigned to: CPU Architecture:Any

[18 Sep 2024 12:39] Yuchen Zhang
Description:
Hit crash during crash recovery:

2024-03-19T04:25:59.974527Z 1 [Note] [MY-012533] [InnoDB] 10%
2024-03-19T04:25:59.999233Z 1 [Note] [MY-012533] [InnoDB] 20%
2024-03-19T04:26:00.065772Z 1 [Note] [MY-012533] [InnoDB] 30%
2024-03-19T04:26:00.078017Z 1 [Note] [MY-012533] [InnoDB] 40%
2024-03-19T04:26:00.103899Z 1 [Note] [MY-012533] [InnoDB] 50%
2024-03-19T04:26:00.119902Z 1 [Note] [MY-012533] [InnoDB] 60%
2024-03-19T04:26:00.149120Z 1 [Note] [MY-012533] [InnoDB] 70%
2024-03-19T04:26:00Z UTC - mysqld got signal 11 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=fed0db3c573e3e48dbf861d2a838447e5a71ae5a
Thread pointer: 0x0
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...
2024-03-19T04:26:00.157911Z 0 [ERROR] [MY-013183] [InnoDB] Assertion failure: log0recv.cc:2009:!page || page_is_comp(page) == dict_table_is_comp(index->table) thread 281472308582400
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
2024-03-19T04:26:00Z UTC - mysqld got signal 6 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=fed0db3c573e3e48dbf861d2a838447e5a71ae5a
Thread pointer: 0x0
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 = 0 thread_stack 0x100000
stack_bottom = 0 thread_stack 0x100000
2024-03-19T04:26:00.167698Z 1 [Note] [MY-012533] [InnoDB] 80%
/data/percona/sql/bin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x44) [0x1a2c324]
/data/percona/sql/bin/mysqld(print_fatal_signal(int)+0x358) [0xfabc18]
/data/percona/sql/bin/mysqld(handle_fatal_signal+0x90) [0xfabea0]
linux-vdso.so.1(__kernel_rt_sigreturn+0) [0xffff879fe7c0]
/usr/lib64/libc.so.6(+0x883f4) [0xffff874683f4]
/data/percona/sql/bin/mysqld(row_upd_rec_in_place(unsigned char*, dict_index_t const*, unsigned long const*, upd_t const*, page_zip_des_t*)+0x22c) [0x863bac]
/data/percona/sql/bin/mysqld(btr_cur_parse_update_in_place(unsigned char*, unsigned char*, unsigned char*, page_zip_des_t*, dict_index_t*)+0x1a4) [0xaeb574]
/data/percona/sql/bin/mysqld() [0xae97e4]
/data/percona/sql/bin/mysqld(recv_recover_page_func(bool, buf_block_t*)+0x4e4) [0xaeead4]
/data/percona/sql/bin/mysqld(buf_page_io_complete(buf_page_t*, bool)+0xf1c) [0x7800dc]
/data/percona/sql/bin/mysqld(fil_aio_wait(unsigned long)+0x438) [0x74b4b8]
/data/percona/sql/bin/mysqld() [0x74af7c]
/data/percona/sql/bin/mysqld() [0xab03c4]
/data/percona/sql/bin/../lib/libstdc++.so.6(+0xcebcc) [0xffff8771abcc]
/usr/lib64/libpthread.so.0(+0x87ac) [0xffff879a37ac]
/usr/lib64/libc.so.6(+0xd547c) [0xffff874b547c]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
Writing a core file

Cannot finish startup until remove the corrupt table file.

How to repeat:
1. Create a partitioned table with redundant row format.
2. Executes REPLACE, INSERT, SELECT, DELETE, ADD COLUMN, OPTIMIZE, MODIFY COLUMN, 
DROP COLUMN, UPDATE, ADD INDEX, ADD PARTITION, CHECK TABLE on the table
concurrently.
3. Kill mysqld process when operations in step 2 are running.
4. Starts mysqld up
[18 Sep 2024 13:00] MySQL Verification Team
Hi Mr. Zhang,

Thank you for your bug report.

However, let us inform you that this is a forum for the reports with fully repeatable test cases. Each of the test case should consist of a set of SQL statements leading to the behaviour that you are reporting.

You have not supplied such a test case.

Let us also inform you that we have configured our MySQL servers for fully ACID performance. That means that killing MySQL server in any operation, does NOT produce any problems during recovery as all redo and undo log files are fully synced to the hard disk in every single DML operation.

Hence, so far, all bug reports that include killing, worked just fine for us.

Can't repeat.