Percona MySQL 8.4.8 - Crash Looping randomly

Percona MySQL Version 8.4.8.8

All my tables are InnoDB.
All have ROW_FORMAT = COMPRESSED KEY_BLOCK_SIZE = 8

Since my upgrade to 8.4.8.8 across my fleet, I am getting random assertion errors in error.log causing crash loops which sometimes recover and sometimes does not recover at all. I initially thought of hardware issue, so I moved to different VMs, different datacenters etc, but nothing worked. Crashes do keep happening randomly. Just today, I got hit with new assertions.

2026-06-11T04:44:20Z UTC - mysqld got signal 11 ;
Signal SIGSEGV (unknown siginfo_t::si_code) at address 0x0
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=2ff35c61c148662a19b28fcb9036154643e867e6
Server Version: 8.4.8-8 Percona Server (GPL), Release '8', Revision '1c288264'

Thread pointer: 0x74cda0187130
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 = 74cd3611bc00 thread_stack 0x100000
#0 0x6149e95cffc1 
#1 0x6149e95d058b _Z19handle_fatal_signaliP9siginfo_tPv
#2 0x74d35a24532f 
#3 0x6149e9f58812 _Z32page_cur_search_with_match_bytesPK11buf_block_tPK12dict_index_tPK8dtuple_t15page_cur_mode_tPmS9_S9_S9_P10page_cur_t
#4 0x6149ea03551f _Z27btr_cur_search_to_nth_levelP12dict_index_tmPK8dtuple_t15page_cur_mode_tmP9btr_cur_tmPKcmP5mtr_t
#5 0x6149e9ef62f4 
#6 0x6149e9fa3c70 _ZN31Row_sel_get_clust_rec_for_mysqlclEP14row_prebuilt_tP12dict_index_tPKhP9que_thr_tPS5_PPmPP16mem_block_info_tPPK8dtuple_tP5mtr_tPN3lob11undo_vers_tE
#7 0x6149e9fa7596 _Z15row_search_mvccPh15page_cur_mode_tP14row_prebuilt_tmm
#8 0x6149e9e707b4 _ZN11ha_innobase10index_readEPhPKhj16ha_rkey_function
#9 0x6149e9199eb7 _ZN7handler17ha_index_read_mapEPhPKhm16ha_rkey_function
#10 0x6149e96ff3a8 _ZN11RefIteratorILb0EE4ReadEv
#11 0x6149e96e9167 _ZN14FilterIterator4ReadEv
#12 0x6149e96e9211 _ZN18NestedLoopIterator4ReadEv
#13 0x6149e96e979e _ZN17AggregateIterator4ReadEv
#14 0x6149e954d267 _ZN16Query_expression20ExecuteIteratorQueryEP3THD
#15 0x6149e954d53f _ZN16Query_expression7executeEP3THD
#16 0x6149e94cb14a _ZN11Sql_cmd_dml13execute_innerEP3THD
#17 0x6149e94ca540 _ZN11Sql_cmd_dml7executeEP3THD
#18 0x6149e947ca03 _Z21mysql_execute_commandP3THDb
#19 0x6149e94ac7ee _ZN18Prepared_statement7executeEP3THDP6Stringb
#20 0x6149e94b4fd8 _ZN18Prepared_statement12execute_loopEP3THDP6Stringb
#21 0x6149e94b5515 _Z19mysqld_stmt_executeP3THDP18Prepared_statementbmP8PS_PARAM
#22 0x6149e9481920 _Z16dispatch_commandP3THDPK8COM_DATA19enum_server_command
#23 0x6149e9483316 _Z10do_commandP3THD
#24 0x6149e95d1ffe 
#25 0x6149ea1c787f 
#26 0x74d35a29caa3 
#27 0x74d35a329c6b 
#28 0xffffffffffffffff 

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (74cda025e238): SELECT SUM(CASE WHEN (CASE WHEN icl.attempted_amtp > 0 AND icl.amount_matched = 1 THEN CASE WHEN icl.attempted_amtp = c.total_amtp THEN 'MATCHED' ELSE 'UNMATCHED' END ELSE 'UNVERIFIED' END) = 'MATCHED' THEN c.total_amtp ELSE 0 END) AS verified_challan_amtp, SUM(CASE WHEN (CASE WHEN icl.attempted_amtp > 0 AND icl.amount_matched = 1 THEN CASE WHEN icl.attempted_amtp = c.total_amtp THEN 'MATCHED' ELSE 'UNMATCHED' END ELSE 'UNVERIFIED' END) <> 'MATCHED' THEN c.total_amtp ELSE 0 END) AS unverified_challan_amtp FROM challan AS c INNER JOIN bsr_code AS bc ON bc.bsr_code_id = c.bsr_code_id LEFT JOIN import_challan_log AS icl ON icl.deductor_id = c.deductor_id AND icl.challan_no = c.challan_no AND icl.deposit_date = c.deposit_date AND icl.bsr_code = bc.bsr_code WHERE c.deductor_id = 68731 AND c.deposit_date BETWEEN '2026-04-01' AND '2027-03-31'
Connection ID (thread ID): 638
Status: NOT_KILLED

Please help us make Percona Server better by reporting any
bugs at https://bugs.percona.com/

You may download the Percona Server operations manual by visiting
http://www.percona.com/software/percona-server/. You may find information
in the manual which will help you identify the cause of the crash.
2026-06-11T10:14:25.600533+05:30 0 [System] [MY-015015] [Server] MySQL Server - start.
2026-06-11T10:14:25.817357+05:30 0 [Warning] [MY-010097] [Server] Insecure configuration for --secure-log-path: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.

Since I cannot attach files. You can access the complete error log at: Error Log - Pastes.io

and mysql conf file at: MySQL Conf - Pastes.io

This is happening across the fleet randomly. Is it something to do with composite indexes ? OR, compressed tables ?

Hi @madhurbhaiya ,

“Since my upgrade to 8.4.8.8 across my fleet” > from which version did you upgrade from?

From the stacktrace we can see that the last failure was at page_cur_search_with_match_bytes

The query responsible for this crash is identified as:

Query (74cda025e238): SELECT SUM(CASE WHEN (CASE WHEN icl.attempted_amtp > 0 AND icl.amount_matched = 1 THEN CASE WHEN icl.attempted_amtp = c.total_amtp THEN 'MATCHED' ELSE 'UNMATCHED' END ELSE 'UNVERIFIED' END) = 'MATCHED' THEN c.total_amtp ELSE 0 END) AS verified_challan_amtp, SUM(CASE WHEN (CASE WHEN icl.attempted_amtp > 0 AND icl.amount_matched = 1 THEN CASE WHEN icl.attempted_amtp = c.total_amtp THEN 'MATCHED' ELSE 'UNMATCHED' END ELSE 'UNVERIFIED' END) <> 'MATCHED' THEN c.total_amtp ELSE 0 END) AS unverified_challan_amtp FROM challan AS c INNER JOIN bsr_code AS bc ON bc.bsr_code_id = c.bsr_code_id LEFT JOIN import_challan_log AS icl ON icl.deductor_id = c.deductor_id AND icl.challan_no = c.challan_no AND icl.deposit_date = c.deposit_date AND icl.bsr_code = bc.bsr_code WHERE c.deductor_id = 68731 AND c.deposit_date BETWEEN '2026-04-01' AND '2027-03-31'

Can you run check table for each of the tables in the query? Do you face a crash?
Do you see this crash when AHI (innodb_adaptive_hash_index) is disabled - this is dynamic and you can have a test?

Thanks,
K

I cant remember the previous MySQL version just before the upgrade. But I believe it must be 8.4.6 - I have been running MySQL 8.4 since last year and it has been normally stable. Before that I was on MySQL 8

I now have disabled innodb_adaptive_hash_index today across the fleet. The concerned server which was causing crash loop has been stopped; I had to failover to a healthy replica.

I will run CHECK TABLES on the dead master and report.

My concern is that hopefully this is not a MySQL bug.

@kedarpercona

Ran CHECK TABLE expresstds.import_challan_log

Immediately, it crashed. Here is the error log

2026-06-11T17:35:22.285090+05:30 9 [ERROR] [MY-013051] [InnoDB] In pages [page id: space=225, page number=47541] and [page id: space=225, page number=786074] of index PRIMARY of table expresstds.import_challan_log
InnoDB: broken FIL_PAGE_NEXT or FIL_PAGE_PREV links
2026-06-11T17:35:22.285159+05:30 9 [ERROR] [MY-013051] [InnoDB] In pages [page id: space=225, page number=47541] and [page id: space=225, page number=786074] of index PRIMARY of table expresstds.import_challan_log
InnoDB: 'compact' flag mismatch
2026-06-11T17:35:22.285167+05:30 9 [ERROR] [MY-011866] [InnoDB] Page index id 0 != data dictionary index id 658
2026-06-11T17:35:22.285174+05:30 9 [ERROR] [MY-013183] [InnoDB] Assertion failure: btr0btr.cc:4341:!page_is_empty(page) || (level == 0 && page_get_page_no(page) == dict_index_get_page(index)) thread 128870831040192
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.4/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
2026-06-11T12:05:22Z UTC - mysqld got signal 6 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=2ff35c61c148662a19b28fcb9036154643e867e6
Server Version: 8.4.8-8 Percona Server (GPL), Release '8', Revision '1c288264'

Thread pointer: 0x7531bc000fe0
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 = 7535141b1c00 thread_stack 0x100000
#0 0x635c45efefc1 
#1 0x635c45eff42e _Z15my_server_abortv
#2 0x635c4675661d _Z8my_abortv
#3 0x635c4691521c _Z23ut_dbg_assertion_failedPKcS0_m
#4 0x635c46953d65 
#5 0x635c46954e3c _Z18btr_validate_indexP12dict_index_tPK5trx_tb
#6 0x635c467be17d _ZN11ha_innobase5checkEP3THDP12HA_CHECK_OPT
#7 0x635c4714be75 
#8 0x635c45d11ac9 _ZN19Sql_cmd_check_table7executeEP3THD
#9 0x635c45daba03 _Z21mysql_execute_commandP3THDb
#10 0x635c45daf4b6 _Z20dispatch_sql_commandP3THDP12Parser_stateb
#11 0x635c45db168f _Z16dispatch_commandP3THDPK8COM_DATA19enum_server_command
#12 0x635c45db2316 _Z10do_commandP3THD
#13 0x635c45f00ffe 
#14 0x635c46af687f 
#15 0x7537b869caa3 
#16 0x7537b8729c6b 
#17 0xffffffffffffffff 

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7531bc010060): CHECK TABLE expresstds.import_challan_log
Connection ID (thread ID): 9
Status: NOT_KILLED

Please help us make Percona Server better by reporting any
bugs at https://bugs.percona.com/

You may download the Percona Server operations manual by visiting
http://www.percona.com/software/percona-server/. You may find information
in the manual which will help you identify the cause of the crash.
2026-06-11T17:35:27.832805+05:30 0 [System] [MY-015015] [Server] MySQL Server - start.
2026-06-11T17:35:28.040558+05:30 0 [Warning] [MY-010097] [Server] Insecure configuration for --secure-log-path: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
2026-06-11T17:35:28.040620+05:30 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.4.8-8) starting as process 3199
2026-06-11T17:35:28.044082+05:30 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-06-11T17:35:32.271983+05:30 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-06-11T17:35:32.414129+05:30 0 [Warning] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-001287 - 'validate password plugin' is deprecated and will be removed in a future release. Please use validate_password component instead
2026-06-11T17:35:32.433811+05:30 0 [System] [MY-010229] [Server] Starting XA crash recovery...
2026-06-11T17:35:32.437767+05:30 0 [System] [MY-010232] [Server] XA crash recovery finished.
2026-06-11T17:35:32.503588+05:30 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2026-06-11T17:35:32.503608+05:30 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2026-06-11T17:35:32.517986+05:30 0 [Warning] [MY-013595] [Server] Failed to initialize TLS for channel: mysql_admin. See below for the description of exact issue.
2026-06-11T17:35:32.517999+05:30 0 [Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2026-06-11T17:35:32.518004+05:30 0 [System] [MY-013603] [Server] No TLS configuration was given for channel mysql_admin; re-using TLS configuration of channel mysql_main.
2026-06-11T17:35:32.534812+05:30 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2026-06-11T17:35:32.534868+05:30 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.4.8-8'  socket: '/var/run/mysqld/mysqld.sock'  port: 25588  Percona Server (GPL), Release '8', Revision '1c288264'.
2026-06-11T17:35:32.534879+05:30 0 [System] [MY-013292] [Server] Admin interface ready for connections, address: '127.0.0.1'  port: 25512

Complete error log for today can be checked here: CHECK TABLES Error - Pastes.io (I had run CHECK TABLES as suggested , and more crashes happened)

Some of the errors during CHECK TABLE are:

2026-06-11T17:46:28.439605+05:30 9 [ERROR] [MY-013183] [InnoDB] Assertion failure: btr0btr.cc:4501:node_ptr == expected_node_ptr thread 127413160171200
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.4/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
2026-06-11T12:16:28Z UTC - mysqld got signal 6 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=2ff35c61c148662a19b28fcb9036154643e867e6
Server Version: 8.4.8-8 Percona Server (GPL), Release '8', Revision '1c288264'

Thread pointer: 0x73dbfc000fe0
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 = 73e1b026cc00 thread_stack 0x100000
#0 0x584f1c977fc1 
#1 0x584f1c97842e _Z15my_server_abortv
#2 0x584f1d1cf61d _Z8my_abortv
#3 0x584f1d38e21c _Z23ut_dbg_assertion_failedPKcS0_m
#4 0x584f1d3cdbf4 
#5 0x584f1d3cde3c _Z18btr_validate_indexP12dict_index_tPK5trx_tb
#6 0x584f1d23717d _ZN11ha_innobase5checkEP3THDP12HA_CHECK_OPT
#7 0x584f1dbc4e75 
#8 0x584f1c78aac9 _ZN19Sql_cmd_check_table7executeEP3THD
#9 0x584f1c824a03 _Z21mysql_execute_commandP3THDb
#10 0x584f1c8284b6 _Z20dispatch_sql_commandP3THDP12Parser_stateb
#11 0x584f1c82a68f _Z16dispatch_commandP3THDPK8COM_DATA19enum_server_command
#12 0x584f1c82b316 _Z10do_commandP3THD
#13 0x584f1c979ffe 
#14 0x584f1d56f87f 
#15 0x73e1f969caa3 
#16 0x73e1f9729c6b 
#17 0xffffffffffffffff 

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (73dbfc025fd0): CHECK TABLE expresstds.deductee_transactions
Connection ID (thread ID): 9
Status: NOT_KILLED
2026-06-11T17:42:10.537843+05:30 9 [ERROR] [MY-013051] [InnoDB] In pages [page id: space=210, page number=103565] and [page id: space=210, page number=103566] of index PRIMARY of table expresstds.deductee
InnoDB: broken FIL_PAGE_NEXT or FIL_PAGE_PREV links
2026-06-11T17:42:10.537909+05:30 9 [ERROR] [MY-013051] [InnoDB] In pages [page id: space=210, page number=103565] and [page id: space=210, page number=103566] of index PRIMARY of table expresstds.deductee
InnoDB: 'compact' flag mismatch
2026-06-11T17:42:10.537927+05:30 9 [ERROR] [MY-011866] [InnoDB] Page index id 0 != data dictionary index id 627
2026-06-11T17:42:10.537933+05:30 9 [ERROR] [MY-013183] [InnoDB] Assertion failure: btr0btr.cc:4341:!page_is_empty(page) || (level == 0 && page_get_page_no(page) == dict_index_get_page(index)) thread 137521166628544
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.4/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
2026-06-11T12:12: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]=2ff35c61c148662a19b28fcb9036154643e867e6
Server Version: 8.4.8-8 Percona Server (GPL), Release '8', Revision '1c288264'

Thread pointer: 0x7d0d68000fe0
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 = 7d1324492c00 thread_stack 0x100000
#0 0x5d410ba4ffc1 
#1 0x5d410ba5042e _Z15my_server_abortv
#2 0x5d410c2a761d _Z8my_abortv
#3 0x5d410c46621c _Z23ut_dbg_assertion_failedPKcS0_m
#4 0x5d410c4a4d65 
#5 0x5d410c4a5e3c _Z18btr_validate_indexP12dict_index_tPK5trx_tb
#6 0x5d410c30f17d _ZN11ha_innobase5checkEP3THDP12HA_CHECK_OPT
#7 0x5d410cc9ce75 
#8 0x5d410b862ac9 _ZN19Sql_cmd_check_table7executeEP3THD
#9 0x5d410b8fca03 _Z21mysql_execute_commandP3THDb
#10 0x5d410b9004b6 _Z20dispatch_sql_commandP3THDP12Parser_stateb
#11 0x5d410b90268f _Z16dispatch_commandP3THDPK8COM_DATA19enum_server_command
#12 0x5d410b903316 _Z10do_commandP3THD
#13 0x5d410ba51ffe 
#14 0x5d410c64787f 
#15 0x7d1361e9caa3 
#16 0x7d1361f29c6b 
#17 0xffffffffffffffff 

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7d0d68010060): CHECK TABLE expresstds.deductee
Connection ID (thread ID): 9
Status: NOT_KILLED

Hi,

Can you provide me with the table definition?
SHOW CREATE TABLE expresstds.deductee\G

Also, if you run repair, does it work?

Finally, what was your previous mysql version?

Thanks,

K

@kedarpercona

Previous mysql version 8.4.6

Schema as requested:

CREATE TABLE `deductee`
(
`deductee_id` int unsigned NOT NULL AUTO_INCREMENT,
`deductor_id` mediumint unsigned NOT NULL,
`deductee_name` varchar(75) NOT NULL,
`pan` char(10) NOT NULL,
`ref_number` varchar(10) DEFAULT NULL,
`pan_or_ref_number` varchar(10) GENERATED ALWAYS AS (if(
(`pan` in (_utf8mb4’PANAPPLIED’, _utf8mb4’PANINVALID’, _utf8mb4’PANNOTAVBL’)), `ref_number`,
`pan`)) VIRTUAL,
`firm_name` varchar(75) DEFAULT NULL,
`deductee_type` enum (‘COMPANY_01’,‘INDIVIDUAL_02’,‘HUF_03’,‘AOP_04’,‘AOP_05’,‘COOP_06’,‘FIRM_07’,‘BOI_08’,‘AJP_09’,‘OTH_10’) DEFAULT NULL,
`user_salary_category` enum (‘G’,‘W’,‘S’,‘O’) DEFAULT NULL,
`gender` enum (‘MALE’,‘FEMALE’,‘OTHERS’) DEFAULT NULL,
`dob` date DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
`city` varchar(64) DEFAULT NULL,
`state_id` tinyint unsigned DEFAULT NULL,
`country_id` smallint unsigned DEFAULT ‘113’,
`pincode` mediumint unsigned DEFAULT NULL,
`employee_id` varchar(10) DEFAULT NULL,
`mobile_no` varchar(15) DEFAULT NULL,
`email` varchar(75) DEFAULT NULL,
`tax_identification_no` varchar(25) DEFAULT NULL,
`tax_regime` enum (‘OLD’,‘NEW’) DEFAULT NULL,
`deductee_status` tinyint unsigned NOT NULL DEFAULT ‘1’,
`non_resident` tinyint unsigned NOT NULL DEFAULT ‘0’,
`permanent_establishment` tinyint unsigned NOT NULL DEFAULT ‘1’,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`deductee_id`),
UNIQUE KEY `unq_deductee_deductorpanorrefnumber` (`deductor_id`, `pan_or_ref_number`),
CONSTRAINT `fk_deductee_deductorid` FOREIGN KEY (`deductor_id`) REFERENCES `deductor` (`deductor_id`),
CONSTRAINT `chk_deductee_city` CHECK (((`city` is null) or ((trim(`city`) = `city`) and (`city` <> _utf8mb4’‘)))),
CONSTRAINT `chk_deductee_deducteefirmaname` CHECK (((`firm_name` is null) or
((trim(`firm_name`) = `firm_name`) and (`firm_name` <> _utf8mb4’‘)))),
CONSTRAINT `chk_deductee_deducteename` CHECK (((trim(`deductee_name`) = `deductee_name`) and
(`deductee_name` <> _utf8mb4’‘))),
CONSTRAINT `chk_deductee_deducteerefnumber` CHECK (((`ref_number` is null) or
((trim(`ref_number`) = `ref_number`) and (`ref_number` <> _utf8mb4’‘)))),
CONSTRAINT `chk_deductee_deducteestatus` CHECK ((`deductee_status` in (0, 1))),
CONSTRAINT `chk_deductee_deducteetype` CHECK ((`deductee_type` <> _utf8mb4’‘)),
CONSTRAINT `chk_deductee_dobusersalarycategory` CHECK (((`dob` is null) or (`user_salary_category` is null))),
CONSTRAINT `chk_deductee_email` CHECK (((`email` is null) or
((trim(`email`) = `email`) and (`email` <> _utf8mb4’‘)))),
CONSTRAINT `chk_deductee_nonresident` CHECK ((`non_resident` in (0, 1))),
CONSTRAINT `chk_deductee_pan` CHECK (((trim(`pan`) = `pan`) and (char_length(trim(`pan`)) = 10))),
CONSTRAINT `chk_deductee_permanentestablishment` CHECK ((`permanent_establishment` in (0, 1))),
CONSTRAINT `chk_deductee_pincode` CHECK (((`pincode` is null) or ((`pincode` >= 110001) and (`pincode` <= 999999)))),
CONSTRAINT `chk_deductee_stateid` CHECK (((`state_id` is null) or (`state_id` between 1 and 100))),
CONSTRAINT `chk_deductee_taxidentificationno` CHECK (((`tax_identification_no` is null) or
((trim(`tax_identification_no`) = `tax_identification_no`) and
(`tax_identification_no` <> _utf8mb4’‘)))),
CONSTRAINT `chk_deductee_usersalarycategory` CHECK (((`user_salary_category` is null) or
(`user_salary_category` <> _utf8mb4’')))
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci
ROW_FORMAT = COMPRESSED
KEY_BLOCK_SIZE = 8;

I will try with Repair table

@kedarpercona Tried repair (ALTER TABLE expresstds.deductee ENGINE=InnoDB;)

It crashed again. Here is the error log entry

2026-06-11T12:53:15Z UTC - mysqld got signal 11 ;
Signal SIGSEGV (Address not mapped to object) at address 0xfffffffffffffffd
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=2ff35c61c148662a19b28fcb9036154643e867e6
Server Version: 8.4.8-8 Percona Server (GPL), Release '8', Revision '1c288264'

Thread pointer: 0x7ca1f8000fe0
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 = 7ca7a846fc00 thread_stack 0x100000
#0 0x62a0cbadcfc1 
#1 0x62a0cbadd58b _Z19handle_fatal_signaliP9siginfo_tPv
#2 0x7ca7ee84532f 
#3 0x62a0cc5093e8 _Z15rec_get_offsetsPKhPK12dict_index_tPmmN2ut8LocationEPP16mem_block_info_t
#4 0x62a0cc492ccd _ZN15Parallel_reader3Ctx13traverse_recsEP7PCursorP5mtr_t
#5 0x62a0cc4a01ec _ZN15Parallel_reader3Ctx8traverseEv
#6 0x62a0cc4a0ab7 _ZN15Parallel_reader6workerEPNS_10Thread_ctxE
#7 0x62a0cc4a1d43 _ZN15Parallel_reader5spawnEm
#8 0x62a0cc4a1db5 _ZN15Parallel_reader3runEm
#9 0x62a0cc616d97 _ZN3ddl15Parallel_cursor4scanERSt6vectorIPNS_7BuilderEN2ut9allocatorIS3_NS4_6detail18allocator_base_pfsIS3_EEEEE
#10 0x62a0cc60c191 _ZN3ddl6Loader22scan_and_build_indexesEv
#11 0x62a0cc61619f _ZN3ddl6Loader9build_allEv
#12 0x62a0cc3d536d 
#13 0x62a0cc3b7b00 ZN11ha_innobase19inplace_alter_tableEP5TABLEP18Alter_inplace_infoPKN2dd5TableEPS5
#14 0x62a0cba34384 
#15 0x62a0cba403af _Z17mysql_alter_tableP3THDPKcS2_P14HA_CREATE_INFOP9Table_refP10Alter_info
#16 0x62a0cb90171d _ZN19Sql_cmd_alter_table7executeEP3THD
#17 0x62a0cb989a03 _Z21mysql_execute_commandP3THDb
#18 0x62a0cb98d4b6 _Z20dispatch_sql_commandP3THDP12Parser_stateb
#19 0x62a0cb98f68f _Z16dispatch_commandP3THDPK8COM_DATA19enum_server_command
#20 0x62a0cb990316 _Z10do_commandP3THD
#21 0x62a0cbadeffe 
#22 0x62a0cc6d487f 
#23 0x7ca7ee89caa3 
#24 0x7ca7ee929c6b 
#25 0xffffffffffffffff 

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7ca1f8010060): ALTER TABLE expresstds.deductee ENGINE=InnoDB
Connection ID (thread ID): 9
Status: NOT_KILLED

Hi, So this looks like a table corruption and I have seen some with generated columns. The previous version release note talk about some fixes related to virtual columns in an index.
You have a generated column included in a unique key! I’d suggest, if the column is as important as making it Unique Key, consider using a standard column and not generated. The logic of “panapplied vs paninvalid” should be moved to application.

Look to see if you can query the table and extract the data, or recover it from backup.
You can try one more test to see if the crash is caused specifically by the generated column by running following two queries and see if they crashes.

pager md5sum; select * from table; nopager; and

pager md5sum; select {all columns except the generated on} from table; nopager;

This could be a “bug” and you can consider raising this.

Thanks,
K

Ref:

one more thing to try:

SET SESSION innodb_ddl_threads = 1; ALTER TABLE ...

… I am not going to finish this in 1 comment :person_facepalming:

I just rechecked your definition and your UNIQUE KEY serves no purpose. I’d drop it.

PRIMARY KEY (`deductee_id`),
UNIQUE KEY `unq_deductee_deductorpanorrefnumber` (`deductor_id`, `pan_or_ref_number`),

deductor_id is already an auto_incr column. This combined with a constant string will also generate a unique value. I do not see any sense in this constraint.
You should drop UK.

Hi @kedarpercona thanks for your efforts.

deductor_id is separate value (it is not deductee_id which is the PK).

do you recommend downgrading to MySQL 8. OR, downgrade to let’s say 8.4.1 ?

I am having these issues fleet wide randomly.

Downgrade to what it was originally. If this is a bug it may get auto resolved but if table is corrupted it may not fix merely by downgrade. sorry… about deductor/deductee - I will get my glasses checked.