Analysis of a MySQL 8.0.35 Crash Bug Caused by InnoDB Assertion Failure
This article details a MySQL 8.0.35 crash caused by an InnoDB assertion that a VARCHAR length exceeds 65,535 bytes, explains the error‑log and core‑dump analysis, shows how to reproduce the bug, and notes its resolution in MySQL 8.0.35.
In this article the author, a junior DBA, describes a crash bug discovered in MySQL 8.0.35 that is triggered by an InnoDB assertion failure when a VARCHAR length exceeds the 65 535‑byte limit.
The error log shows an Assertion failure: row0mysql.cc:165:len < 256*256, followed by a SIGABRT signal. By examining the source file row0mysql.cc the failing assertion is found in the function row_mysql_store_true_var_len, which calls the macro ut_a. When the condition is false, ut_dbg_assertion_failed prints diagnostic information and invokes abort().
The article explains the ut_a macro, the ut_dbg_assertion_failed implementation, and how the abort signal (6) terminates the process. It then shows how to analyse the generated corefile with gdb, mapping the back‑trace to the offending function and revealing that the length value is the constant UNIV_MULTI_VALUE_ARRAY_MARKER (4294967292), far beyond the allowed limit.
To reproduce the bug the author creates a table with a JSON virtual column, performs a repeatable‑read transaction, updates the column in another session, and runs a query that forces InnoDB to read the undo log, causing the same assertion failure and crash.
The bug was reported to Oracle and fixed in MySQL 8.0.35 (Bug#35039937). References and further reading are provided.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Aikesheng Open Source Community
The Aikesheng Open Source Community provides stable, enterprise‑grade MySQL open‑source tools and services, releases a premium open‑source component each year (1024), and continuously operates and maintains them.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
