Bug #115207 mysql 8.0.22 mysqld got signal 11
Submitted: 4 Jun 2024 7:15 Modified: 5 Jun 2024 2:00
Reporter: wei hu Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:8.0.22 OS:Any
Assigned to: CPU Architecture:Any

[4 Jun 2024 7:15] wei hu
Description:
We have encountered a bug where executing a particular query results in the MySQL instance restarting. Additionally, we have observed that data written to tables is not being recorded in the binary logs.

Server version: 8.0.22 MySQL Community Server - GPL

mysql-error.log:

16:11:07 UTC - mysqld got signal 11 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
Thread pointer: 0x270162000
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 = 7f30383e8d00 thread_stack 0x46000
/service/software/mysql_3306/bin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x2e) [0x2106fee]
/service/software/mysql_3306/bin/mysqld(handle_fatal_signal+0x303) [0xfe7113]
/lib64/libpthread.so.0(+0xf630) [0x7f513008c630]
/service/software/mysql_3306/bin/mysqld(CreateIteratorFromAccessPath(THD*, AccessPath*, JOIN*, bool)+0x1268) [0x1240958]
/service/software/mysql_3306/bin/mysqld(CreateIteratorFromAccessPath(THD*, AccessPath*, JOIN*, bool)+0x55b) [0x123fc4b]
/service/software/mysql_3306/bin/mysqld(CreateIteratorFromAccessPath(THD*, AccessPath*, JOIN*, bool)+0x1c5b) [0x124134b]
/service/software/mysql_3306/bin/mysqld(SELECT_LEX_UNIT::optimize(THD*, TABLE*, bool)+0x269) [0xf75399]
/service/software/mysql_3306/bin/mysqld(Sql_cmd_dml::execute_inner(THD*)+0x2e) [0xf02f1e]
/service/software/mysql_3306/bin/mysqld(Sql_cmd_dml::execute(THD*)+0x4f5) [0xf0d4a5]
/service/software/mysql_3306/bin/mysqld(mysql_execute_command(THD*, bool)+0x9d0) [0xeb3c90]
/service/software/mysql_3306/bin/mysqld(mysql_parse(THD*, Parser_state*)+0x3ff) [0xeb83df]
/service/software/mysql_3306/bin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0x1d1d) [0xeba58d]
/service/software/mysql_3306/bin/mysqld(do_command(THD*)+0x174) [0xebb2f4]
/service/software/mysql_3306/bin/mysqld() [0xfd8c78]
/service/software/mysql_3306/bin/mysqld() [0x267b78e]
/lib64/libpthread.so.0(+0x7ea5) [0x7f5130084ea5]
/lib64/libc.so.6(clone+0x6d) [0x7f512e3ddb0d]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (259d72028): /* ApplicationName=DBeaver 21.3.0 - SQLEditor <Script-3.sql> */ select sdpi.id*-1,sdpi.shop_code, sdpi.do_doc_no, sdpi.ro_doc_no, sdpi.order_doc_no, 47, sdo.other_vc_amt , sdpi.pay_account, sdpi.pay_bank, sdpi.pay_no, sdpi.pay_status, sdpi.memo, sdpi.
bz_pay_no, sdpi.ext_props  from so_do_order sdo    inner join so_do_payment_info sdpi on sdo.shop_code = sdpi.shop_code and sdo.order_doc_no = sdpi.order_doc_no and sdo.do_doc_no = sdpi.do_doc_no and sdpi.pay_type = 3   left join so_do_payment_info sdpi2 on sdo.shop_cod
e = sdpi2.shop_code and sdo.order_doc_no = sdpi2.order_doc_no and sdo.do_doc_no = sdpi2.do_doc_no and sdpi.pay_type = 47  where sdo.status not in (30, 32) and sdo.other_vc_amt > 0 and sdo.total_actual_af_disc > sdpi.pay_actual and sdpi2.id is null  and sdo.order_doc_no 
in ('SO24110592730082','SO24110592730083','SO24110592730081','SO24110592730080','SO24110592730084','SO24110592730085','SO24110592730086','SO24110592730087','SO24110592730088','SO24110592730089','SO24110592730090','SO24110592730091','
Connection ID (thread ID): 15760478
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:
Create Table: 
CREATE TABLE `so_do_order` (
  `id` bigint NOT NULL,
  `do_doc_no` varchar(50) NOT NULL,
  `order_doc_no` varchar(50) NOT NULL,
  `shop_code` varchar(50) NOT NULL,
  `other_vc_amt` decimal(15,6) NOT NULL,
  `total_actual_af_disc` decimal(15,6) NOT NULL,
  `status` int NOT NULL COMMENT '状态',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_do_doc_no` (`do_doc_no`),
  KEY `idx_order_doc_no` (`order_doc_no`),
  KEY `idx_create_time` (`create_time`),
  KEY `idx_so_do_order_1` (`shop_code`),
  KEY `idx_lmt01` (`last_modify_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `so_do_payment_info` (
  `id` bigint NOT NULL,
  `shop_code` varchar(50) NOT NULL,
  `order_doc_no` varchar(50) NOT NULL,
  `do_doc_no` varchar(50) DEFAULT NULL,
  `pay_actual` decimal(15,6) NOT NULL,
  `pay_type` bigint NOT NULL,
  `ro_doc_no` varchar(50) DEFAULT NULL,
  `status` int NOT NULL DEFAULT '1',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_shopcode_1` (`shop_code`,`order_doc_no`,`status`),
  KEY `idx_shopcode_rodocno` (`shop_code`,`ro_doc_no`),
  KEY `idx_ct01` (`create_time`) USING BTREE,
  KEY `idx_lmt01` (`last_modify_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

sql:
explain
select sdpi.id*-1,sdpi.shop_code, sdpi.do_doc_no, sdpi.ro_doc_no, sdpi.order_doc_no, 47, sdo.other_vc_amt
from so_do_order sdo 
	inner join so_do_payment_info sdpi on sdo.shop_code = sdpi.shop_code and sdo.order_doc_no = sdpi.order_doc_no and sdo.do_doc_no = sdpi.do_doc_no and sdpi.pay_type = 3
	left join so_do_payment_info sdpi2 on sdo.shop_code = sdpi2.shop_code and sdo.order_doc_no = sdpi2.order_doc_no and sdo.do_doc_no = sdpi2.do_doc_no and sdpi.pay_type = 47
where sdo.status not in (30, 32) and sdo.other_vc_amt > 0 and sdo.total_actual_af_disc > sdpi.pay_actual and sdpi2.id is null;
[4 Jun 2024 9:48] MySQL Verification Team
Hi Mr. hu,

Thank you for your bug report.

However, we are not able to repeat it.

This is what we get with the current release of 8.0:

id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	sdo	NULL	ALL	uniq_do_doc_no,idx_order_doc_no,idx_t1_1	NULL	NULL	NULL	1	100.00	Using where
1	SIMPLE	sdpi	NULL	ref	idx_shopcode_1,idx_shopcode_rodocno	idx_shopcode_1	404	test.sdo.shop_code,test.sdo.order_doc_no	1	100.00	Using where
1	SIMPLE	sdpi2	NULL	ref	idx_shopcode_1,idx_shopcode_rodocno	idx_shopcode_1	404	test.sdo.shop_code,test.sdo.order_doc_no	1	100.00	Using where; Not exists

No crashes no nothing.

Please, always use latest bug-fix release of 8.0. Now, it is release 8.0.37.

Can't repeat.
[5 Jun 2024 2:00] wei hu
we use 8.0.22 to repeat it.

 MySQL  8.0.22 2024-06-05 09:54:33 10.90.79.199:3306  db_hw_test  SQL  
  > show tables;
+----------------------+
| Tables_in_db_hw_test |
+----------------------+
| sbtest1              |
| sbtest10             |
| sbtest2              |
| sbtest3              |
| sbtest4              |
| sbtest5              |
| sbtest6              |
| sbtest7              |
| sbtest8              |
| sbtest9              |
| so_do_order          |
| so_do_payment_info   |
+----------------------+
12 rows in set (0.0024 sec)
 MySQL  8.0.22 2024-06-05 09:54:34 10.90.79.199:3306  db_hw_test  SQL  
  > 
 MySQL  8.0.22 2024-06-05 09:54:34 10.90.79.199:3306  db_hw_test  SQL  
  > 
 MySQL  8.0.22 2024-06-05 09:54:34 10.90.79.199:3306  db_hw_test  SQL  
  > explain
 -> select sdpi.id*-1,sdpi.shop_code, sdpi.do_doc_no, sdpi.ro_doc_no, sdpi.order_doc_no, 47, sdo.other_vc_amt
 -> from so_do_order sdo 
 -> inner join so_do_payment_info sdpi on sdo.shop_code = sdpi.shop_code and sdo.order_doc_no = sdpi.order_doc_no and sdo.do_doc_no = sdpi.do_doc_no and sdpi.pay_type = 3
 -> left join so_do_payment_info sdpi2 on sdo.shop_code = sdpi2.shop_code and sdo.order_doc_no = sdpi2.order_doc_no and sdo.do_doc_no = sdpi2.do_doc_no and sdpi.pay_type = 47
 -> where sdo.status not in (30, 32) and sdo.other_vc_amt > 0 and sdo.total_actual_af_disc > sdpi.pay_actual and sdpi2.id is null;
ERROR: 2013 (HY000): Lost connection to MySQL server during query
The global session got disconnected..
Attempting to reconnect to 'mysql://u_autodba@10.90.79.199:3306/db_hw_test'......
The global session was successfully reconnected.
 MySQL  8.0.22 2024-06-05 09:54:41 10.90.79.199:3306  db_hw_test  SQL  
  > show tables;
+----------------------+
| Tables_in_db_hw_test |
+----------------------+
| sbtest1              |
| sbtest10             |
| sbtest2              |
| sbtest3              |
| sbtest4              |
| sbtest5              |
| sbtest6              |
| sbtest7              |
| sbtest8              |
| sbtest9              |
| so_do_order          |
| so_do_payment_info   |
+----------------------+
12 rows in set (0.0041 sec)

mysql-error.log

09:54:38 UTC - mysqld got signal 11 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
Thread pointer: 0x7738e000
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 = 7f0c09277d00 thread_stack 0x46000
/service/software/mysql_3306/bin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x2e) [0x2106fee]
/service/software/mysql_3306/bin/mysqld(handle_fatal_signal+0x303) [0xfe7113]
/lib64/libpthread.so.0(+0xf630) [0x7f0ca317c630]
/service/software/mysql_3306/bin/mysqld(CreateIteratorFromAccessPath(THD*, AccessPath*, JOIN*, bool)+0x1268) [0x1240958]
/service/software/mysql_3306/bin/mysqld(CreateIteratorFromAccessPath(THD*, AccessPath*, JOIN*, bool)+0x55b) [0x123fc4b]
/service/software/mysql_3306/bin/mysqld(SELECT_LEX_UNIT::optimize(THD*, TABLE*, bool)+0x269) [0xf75399]
/service/software/mysql_3306/bin/mysqld(Sql_cmd_dml::execute_inner(THD*)+0x2e) [0xf02f1e]
/service/software/mysql_3306/bin/mysqld(Sql_cmd_dml::execute(THD*)+0x4f5) [0xf0d4a5]
/service/software/mysql_3306/bin/mysqld(mysql_execute_command(THD*, bool)+0x9d0) [0xeb3c90]
/service/software/mysql_3306/bin/mysqld(mysql_parse(THD*, Parser_state*)+0x3ff) [0xeb83df]
/service/software/mysql_3306/bin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0x1d1d) [0xeba58d]
/service/software/mysql_3306/bin/mysqld(do_command(THD*)+0x174) [0xebb2f4]
/service/software/mysql_3306/bin/mysqld() [0xfd8c78]
/service/software/mysql_3306/bin/mysqld() [0x267b78e]
/lib64/libpthread.so.0(+0x7ea5) [0x7f0ca3174ea5]
/lib64/libc.so.6(clone+0x6d) [0x7f0ca14cdb0d]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7ae38028): explain select sdpi.id*-1,sdpi.shop_code, sdpi.do_doc_no, sdpi.ro_doc_no, sdpi.order_doc_no, 47, sdo.other_vc_amt from so_do_order sdo  inner join so_do_payment_info sdpi on sdo.shop_code = sdpi.shop_code and sdo.order_doc_no = sdpi.order_doc_no and sd
o.do_doc_no = sdpi.do_doc_no and sdpi.pay_type = 3 left join so_do_payment_info sdpi2 on sdo.shop_code = sdpi2.shop_code and sdo.order_doc_no = sdpi2.order_doc_no and sdo.do_doc_no = sdpi2.do_doc_no and sdpi.pay_type = 47 where sdo.status not in (30, 32) and sdo.other_v
c_amt > 0 and sdo.total_actual_af_disc > sdpi.pay_actual and sdpi2.id is null
Connection ID (thread ID): 3131
Status: NOT_KILLED

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
[5 Jun 2024 9:23] MySQL Verification Team
Hi Mr. Hu,

We have used 8.0.37 and we could not have repeated it.

8.022 and 8.0.37 are both bug-fix releases of the version 8.0.

Hence, we only test the latest release, because you can easily upgrade from any other 8.0 release to the latest one.

Can't repeat.