Bug #109779 Assertion failure: btr0cur.cc:4024:page_zip || optim_err != DB_UNDERFLOW thread
Submitted: 25 Jan 2023 15:23 Modified: 15 Feb 2023 13:33
Reporter: Chris Wingr Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S1 (Critical)
Version:MySQL 8.0.31 OS:Debian
Assigned to: CPU Architecture:Any

[25 Jan 2023 15:23] Chris Wingr
Description:
While working with a PHP application with many users on it and while a MySQL dump cron job was running for 4 minutes MySQL stopped working and then infinitely tried to restart. While it was possible to start MySQL with innodb_force_recovery = 3 we dumped the database and reimported it, but this didn't help. So we restored the VM from Backup and used an earlier MySQL dump which then worked.

Here's the detailed error message:
-------------------------------------------------------------------------
2022-12-20T16:04:09.377099Z 2919082 [ERROR] [MY-013183] [InnoDB] Assertion failure: btr0cur.cc:4024:page_zip || optim_err != DB_UNDERFLOW thread 139804476245760
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.
2022-12-20T16:04:09Z UTC - mysqld got signal 6 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=0072a2747aeb6f614b3af2193b9c221e03b0eccf
Thread pointer: 0x7f247cf041d0
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 = 7f26c424fc50 thread_stack 0x100000
/usr/sbin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x3d) [0x56357e3bf71d]
/usr/sbin/mysqld(print_fatal_signal(int)+0x3c3) [0x56357d444d03]
/usr/sbin/mysqld(my_server_abort()+0x6e) [0x56357d444e1e]
/usr/sbin/mysqld(my_abort()+0xa) [0x56357e3b98aa]
/usr/sbin/mysqld(ut_dbg_assertion_failed(char const*, char const*, unsigned long)+0x326) [0x56357e6aec86]
/usr/sbin/mysqld(btr_cur_pessimistic_update(unsigned long, btr_cur_t*, unsigned long**, mem_block_info_t**, mem_block_info_t*, big_rec_t**, upd_t*, unsigned long, que_thr_t*, unsigned long, unsigned long, mtr_t*, btr_pcur_t*)+0x7ea) [0x56357e6f579a]
/usr/sbin/mysqld(+0x270aafe) [0x56357e8aeafe]
/usr/sbin/mysqld(+0x270b0e9) [0x56357e8af0e9]
/usr/sbin/mysqld(row_undo_mod(undo_node_t*, que_thr_t*)+0xcd7) [0x56357e8b2b07]
/usr/sbin/mysqld(row_undo_step(que_thr_t*)+0x60) [0x56357e624fc0]
/usr/sbin/mysqld(que_run_threads(que_thr_t*)+0xb78) [0x56357e5c5f68]
/usr/sbin/mysqld(+0x24de1b7) [0x56357e6821b7]
/usr/sbin/mysqld(trx_rollback_to_savepoint(trx_t*, trx_savept_t*)+0x22) [0x56357e682462]
/usr/sbin/mysqld(row_mysql_handle_errors(dberr_t*, trx_t*, que_thr_t*, trx_savept_t*)+0x87) [0x56357e5e9727]
/usr/sbin/mysqld(+0x244b406) [0x56357e5ef406]
/usr/sbin/mysqld(row_update_for_mysql(unsigned char const*, row_prebuilt_t*)+0x3f) [0x56357e5ef94f]
/usr/sbin/mysqld(ha_innobase::update_row(unsigned char const*, unsigned char*)+0x2a2) [0x56357e4c04a2]
/usr/sbin/mysqld(handler::ha_update_row(unsigned char const*, unsigned char*)+0x1fb) [0x56357d54f39b]
/usr/sbin/mysqld(Sql_cmd_update::update_single_table(THD*)+0x1d75) [0x56357d3bf875]
/usr/sbin/mysqld(Sql_cmd_update::execute_inner(THD*)+0xd5) [0x56357d3c0255]
/usr/sbin/mysqld(Sql_cmd_dml::execute(THD*)+0x2d1) [0x56357d33f981]
/usr/sbin/mysqld(mysql_execute_command(THD*, bool)+0xc2c) [0x56357d2de7ac]
/usr/sbin/mysqld(dispatch_sql_command(THD*, Parser_state*)+0x42f) [0x56357d2e208f]
/usr/sbin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0x2130) [0x56357d2e46d0]
/usr/sbin/mysqld(do_command(THD*)+0x207) [0x56357d2e56c7]
/usr/sbin/mysqld(+0x1291af0) [0x56357d435af0]
/usr/sbin/mysqld(+0x29c94b2) [0x56357eb6d4b2]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7fa3) [0x7f26f8c54fa3]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f26f842306f]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7f247c706720): update xyz set form_name = 'abc' where project_id = 1242 and form_name = ' abc '
Connection ID (thread ID): 2919082
Status: NOT_KILLED

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.
-------------------------------------------------------------------------

How to repeat:
Don't know.

Suggested fix:
Don't know.
[1 Feb 2023 7:41] MySQL Verification Team
Hello Raffaele,

Thank you for the report and feedback.
I have few follow up questions though, was this instance upgraded from previous versions? This reminded me of a related Bug #109868 which was seen after upgrading from 8.0.27 -> 8.0.30/8.0.31 but it is no longer seen on 8.0.32.

Please note that we don't fix bugs in old versions, don't back-port bug fixes, so you need to check with latest MySQL Server version(8.0.32). So, please upgrade and inform us if problem still exists along with a test case to reproduce. Thank you.

regards,
Umesh
[15 Feb 2023 13:33] Chris Wingr
Hello Umesh,

On October 11 2022 we had upgraded from MySQL 8.0.26 to 8.0.31 and then on December 20 2022 the error occurred. So meanwhile (after restoring after the error) we were lucky running it on 8.0.31, but finally last week we've upgraded to 8.0.32, which now also runs without problems.

Thanks for you for your input and best regards,
Chris