Bug #117137 MySQL crashed due to assertion failure on block state
Submitted: 8 Jan 14:21 Modified: 9 Jan 16:27
Reporter: Sagiv Levy Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server Severity:S2 (Serious)
Version:8.0.31 OS:Ubuntu
Assigned to: CPU Architecture:x86

[8 Jan 14:21] Sagiv Levy
Description:
MySQL Server crushed unexpectedly, reporting the following stack trace:

2024-12-18T16:21:10.223087Z 247456 [ERROR] [MY-013183] [InnoDB] Assertion failure: buf0buf.cc:4552:buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE thread 139997715908352
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-12-18T16:21:10Z UTC - mysqld got signal 6 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=cb34ac709ba76cf831f2f513f49df34ca16f48fb
Thread pointer: 0x7f501c148170
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 = 7f53c2203b30 thread_stack 0x30000
/usr/sbin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x3d) [0x20dfd1d]
/usr/sbin/mysqld(print_fatal_signal(int)+0x37f) [0xfb8f8f]
/usr/sbin/mysqld(my_server_abort()+0x7e) [0xfb90de]
/usr/sbin/mysqld(my_abort()+0xa) [0x20da06a]
/usr/sbin/mysqld(ut_dbg_assertion_failed(char const*, char const*, unsigned long)+0x31f) [0x239596f]
/usr/sbin/mysqld(buf_page_get_known_nowait(unsigned long, buf_block_t*, Cache_hint, char const*, unsigned long, mtr_t*)+0x1e4) [0x23efb84]
/usr/sbin/mysqld(btr_search_guess_on_hash(dict_index_t*, btr_search_t*, dtuple_t const*, unsigned long, unsigned long, btr_cur_t*, unsigned long, mtr_t*)+0xa93) [0x23dd5c3]
/usr/sbin/mysqld(btr_cur_search_to_nth_level(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_cur_t*, unsigned long, char const*, unsigned long, mtr_t*)+0x2869) [0x23d8559]
/usr/sbin/mysqld(Row_sel_get_clust_rec_for_mysql::operator()(row_prebuilt_t*, dict_index_t*, unsigned char const*, que_thr_t*, unsigned char const**, unsigned long**, mem_block_info_t**, dtuple_t const**, mtr_t*, lob::undo_vers_t*)+0x10f) [0x231cf0f]
/usr/sbin/mysqld(row_search_mvcc(unsigned char*, page_cur_mode_t, row_prebuilt_t*, unsigned long, unsigned long)+0x204e) [0x2321ace]
/usr/sbin/mysqld(ha_innobase::general_fetch(unsigned char*, unsigned int, unsigned int)+0x218) [0x21dbf18]
/usr/sbin/mysqld(non-virtual thunk to ha_innopart::index_next_same_in_part(unsigned int, unsigned char*, unsigned char const*, unsigned int)+0x3c) [0x21f0f3c]
/usr/sbin/mysqld(Partition_helper::handle_unordered_next(unsigned char*, bool)+0x59) [0xd5b7b9]
/usr/sbin/mysqld(handler::ha_index_next_same(unsigned char*, unsigned char const*, unsigned int)+0x70) [0x10ce020]
/usr/sbin/mysqld(RefIterator<false>::Read()+0xde) [0x139090e]
/usr/sbin/mysqld(FilterIterator::Read()+0x14) [0x1382614]
/usr/sbin/mysqld(LimitOffsetIterator::Read()+0x7d) [0x13827ad]
/usr/sbin/mysqld(MaterializeIterator<DummyIteratorProfiler>::MaterializeQueryBlock(materialize_iterator::QueryBlock const&, unsigned long long*)+0x112) [0x1386f52]
/usr/sbin/mysqld(MaterializeIterator<DummyIteratorProfiler>::Init()+0x323) [0x1387f53]
/usr/sbin/mysqld(AggregateIterator::Init()+0x27) [0x1384077]
/usr/sbin/mysqld(Query_expression::ExecuteIteratorQuery(THD*)+0x20c) [0xf24eac]
/usr/sbin/mysqld(Query_expression::execute(THD*)+0x2c) [0xf2528c]
/usr/sbin/mysqld(Sql_cmd_dml::execute(THD*)+0x189) [0xea6819]
/usr/sbin/mysqld(mysql_execute_command(THD*, bool)+0xad1) [0xe4e221]
/usr/sbin/mysqld(dispatch_sql_command(THD*, Parser_state*)+0x41a) [0xe51d8a]
/usr/sbin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0xdae) [0xe5309e]
/usr/sbin/mysqld(do_command(THD*)+0x207) [0xe55287]
/usr/sbin/mysqld() [0xfa9290]
/usr/sbin/mysqld() [0x2811b45]
/lib64/libpthread.so.0(+0x7ea5) [0x7f67c9fd8ea5]
/lib64/libc.so.6(clone+0x6d) [0x7f67c85f2b0d]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7f501c814430): SELECT /*+ MAX_EXECUTION_TIME(9964) */ COUNT(*) FROM (SELECT 1 FROM users_viewer_feed_notification WHERE tenant_id=x'00000000000000000000000000000000'  AND (((JSON_UNQUOTE(JSON_EXTRACT(entity, '$.status._typename')) = 'UNSEEN' and JSON_UNQUOTE(JSON_EXTRACT(entity, '$.channel._typename')) = 'WEB' and `type` = 'REGULAR') and JSON_UNQUOTE(JSON_EXTRACT(entity, '$.status._typename')) NOT IN ('UNKNOWN_STATUS')) and (`userId` = '568ffb46-1792-40c1-b980-a20f726c8513' and (JSON_UNQUOTE(JSON_EXTRACT(entity, '$.accountId')) = '568ffb46-1792-40c1-b980-a20f726c8513' or NULLIF(JSON_UNQUOTE(JSON_EXTRACT(entity, '$.accountId')), 'null') IS NULL))) LIMIT 100) AS _cnt
Connection ID (thread ID): 247456
Status: NOT_KILLED

Attaching also the table structure:
CREATE TABLE `users_viewer_feed_notification` (
  `tenant_id` varbinary(16) NOT NULL,
  `entity_id` varchar(36) CHARACTER SET latin1 COLLATE latin1_general_cs GENERATED ALWAYS AS (json_unquote(json_extract(`entity`,_utf8mb4'$._id'))) STORED NOT NULL,
  `entity` json NOT NULL,
  `userId` varchar(36) CHARACTER SET latin1 COLLATE latin1_general_cs GENERATED ALWAYS AS (json_unquote(json_extract(`entity`,_utf8mb4'$.userId'))) VIRTUAL,
  `sentDate` bigint GENERATED ALWAYS AS (json_extract(`entity`,_utf8mb4'$.sentDate.$timestamp')) VIRTUAL,
  `groupingInfo_groupByValue` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin GENERATED ALWAYS AS (json_unquote(json_extract(`entity`,_utf8mb4'$.groupingInfo.groupByValue'))) VIRTUAL,
  `updatedDate` bigint GENERATED ALWAYS AS (json_extract(`entity`,_utf8mb4'$._updatedDate.$timestamp')) VIRTUAL,
  `partition_key` tinyint unsigned GENERATED ALWAYS AS ((floor((json_extract(`entity`,_utf8mb4'$._createdDate.$timestamp') / 1728000000)) % 5)) STORED NOT NULL,
  `notificationId` bigint GENERATED ALWAYS AS (json_extract(`entity`,_utf8mb4'$.notificationId')) VIRTUAL,
  `metaSiteId` varchar(36) CHARACTER SET latin1 COLLATE latin1_general_cs GENERATED ALWAYS AS (json_unquote(json_extract(`entity`,_utf8mb4'$.metaSiteId'))) VIRTUAL,
  `type` varchar(30) CHARACTER SET latin1 COLLATE latin1_general_cs GENERATED ALWAYS AS (json_unquote(json_extract(`entity`,_utf8mb4'$.type._typename'))) VIRTUAL,
  PRIMARY KEY (`tenant_id`,`entity_id`,`partition_key`),
  KEY `userId_groupingInfo_groupByValue_idx` (`tenant_id`,`userId`,`groupingInfo_groupByValue`),
  KEY `updatedDate_idxct` (`updatedDate`),
  KEY `notificationId_idx` (`tenant_id`,`notificationId`),
  KEY `userId_type_sentDate_idx` (`tenant_id`,`userId`,`type`,`sentDate` DESC),
  KEY `userId_metaSiteId_sentDate_idx` (`tenant_id`,`userId`,`metaSiteId`,`sentDate` DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPRESSED
/*!50100 PARTITION BY LIST (`partition_key`)
(PARTITION P5_D60_0 VALUES IN (0) ENGINE = InnoDB,
 PARTITION P5_D60_1 VALUES IN (1) ENGINE = InnoDB,
 PARTITION P5_D60_2 VALUES IN (2) ENGINE = InnoDB,
 PARTITION P5_D60_3 VALUES IN (3) ENGINE = InnoDB,
 PARTITION P5_D60_4 VALUES IN (4) ENGINE = InnoDB) */

How to repeat:
Cannot reproduce.
However, occurred 3 times across 2 different servers.
[9 Jan 16:27] MySQL Verification Team
Hi Mr. Levy,

Thank you for your bug report.

However, let us inform you about this forum. 

This forum is intended strictly for the reports with fully repeatable test cases. Each of those test cases should consist of the set of SQL statements that always lead to the problem reported, in your case it should lead to the crash.

Since we have not received from you a test case that is required for this forum, we can not proceed further.

Also, we have not found, in our entire very large bugs database, any crash like the one that you reported here.

Can't repeat.