Bug #75232 Sig 6 abort in get_partition_id_range_for_endpoint | sql/sql_partition.cc:3600
Submitted: 16 Dec 2014 9:11 Modified: 16 Dec 2014 9:48
Reporter: Ramesh Sivaraman Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: DML Severity:S3 (Non-critical)
Version:5.6.21, 5.6.23, 5.7.6 OS:Linux (CentOS 7)
Assigned to: CPU Architecture:Any
Tags: debug

[16 Dec 2014 9:11] Ramesh Sivaraman
Description:
mysqld: /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_partition.cc:3603: uint32 get_partition_id_range_for_endpoint(partition_info*, bool, bool): Asser
tion `part_func_value > part_end_val ? (loc_part_id == max_partition && !part_info->defined_max_value) : 1' failed.
08:56:01 UTC - mysqld got signal 6 ;

** GDB

#0  0x00007f722afcc771 in pthread_kill () from /lib64/libpthread.so.0
#1  0x0000000000a954ea in my_write_core (sig=6) at /ssd/ramesh/mysql-server/mysql-5.6/mysys/stacktrace.c:422
#2  0x0000000000726494 in handle_fatal_signal (sig=6) at /ssd/ramesh/mysql-server/mysql-5.6/sql/signal_handler.cc:230
#3  <signal handler called>
#4  0x00007f7229dd85c9 in raise () from /lib64/libc.so.6
#5  0x00007f7229dd9cd8 in abort () from /lib64/libc.so.6
#6  0x00007f7229dd1536 in __assert_fail_base () from /lib64/libc.so.6
#7  0x00007f7229dd15e2 in __assert_fail () from /lib64/libc.so.6
#8  0x00000000009c27cc in get_partition_id_range_for_endpoint (part_info=0x7f718e82cd70, left_endpoint=true, include_endpoint=true) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_partition.cc:3600
#9  0x00000000009cac53 in get_part_iter_for_interval_via_mapping (part_info=0x7f718e82cd70, is_subpart=false, store_length_array=0x7f722b57e5e0, min_value=0x7f722b57e968 "", max_value=0x7f722b57f866 "", min_len=5, max_len=5, flags=0, part_iter=0x7f722b5807d0) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_partition.cc:7979
#10 0x0000000000950972 in find_used_partitions (ppar=0x7f722b57e810, key_tree=0x7f718e895298) at /ssd/ramesh/mysql-server/mysql-5.6/sql/opt_range.cc:3833
#11 0x000000000094fab3 in prune_partitions (thd=0x7f7197b5d000, table=0x7f718e850200, pprune_cond=0x7f718e81fa00) at /ssd/ramesh/mysql-server/mysql-5.6/sql/opt_range.cc:3304
#12 0x0000000000860bcf in mysql_update (thd=0x7f7197b5d000, table_list=0x7f718e81f0f8, fields=..., values=..., conds=0x7f718e81fa00, order_num=0, order=0x0, limit=18446744073709551615, handle_duplicates=DUP_ERROR, ignore=false, found_return=0x7f722b5819f8, updated_return=0x7f722b5819f0) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_update.cc:345
#13 0x00000000007d3e6a in mysql_execute_command (thd=0x7f7197b5d000) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_parse.cc:3307
#14 0x00000000007dbdbc in mysql_parse (thd=0x7f7197b5d000, rawbuf=0x7f718e81f010 "UPDATE t1 SET a=5 WHERE a=9", length=27, parser_state=0x7f722b581e70) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_parse.cc:6245
#15 0x00000000007cf36f in dispatch_command (command=COM_QUERY, thd=0x7f7197b5d000, packet=0x7f718c666001 "UPDATE t1 SET a=5 WHERE a=9", packet_length=27) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_parse.cc:1332
#16 0x00000000007ce45e in do_command (thd=0x7f7197b5d000) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_parse.cc:1034
#17 0x0000000000796879 in do_handle_one_connection (thd_arg=0x7f7197b5d000) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_connect.cc:982
#18 0x0000000000796362 in handle_one_connection (arg=0x7f7197b5d000) at /ssd/ramesh/mysql-server/mysql-5.6/sql/sql_connect.cc:898
#19 0x0000000000d71288 in pfs_spawn_thread (arg=0x7f72273fea60) at /ssd/ramesh/mysql-server/mysql-5.6/storage/perfschema/pfs.cc:1860
#20 0x00007f722afc7df3 in start_thread () from /lib64/libpthread.so.0
#21 0x00007f7229e9901d in clone () from /lib64/libc.so.6

How to repeat:
DROP DATABASE test;CREATE DATABASE test;USE test;
CREATE TABLE t1(a INT)PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN (6),PARTITION `p1....................` VALUES LESS THAN (9),PARTITION p2 VALUES LESS THAN MAXVALUE);
create table t2(id2 int,t CHAR (100),index(id2)) pack_keys=1;
lock tables t1 write,t1 as b write,t2 write,t2 as c read;
alter table t1 reorganize partition p2 into(partition p2 values less than (10));
UPDATE t1 SET a=5 WHERE a=9;
[16 Dec 2014 9:48] MySQL Verification Team
Hello Ramesh Sivaraman,

Thank you for the report and test case.
Confirmed that latest 5.6.23, 5.7.6 debug builds asserts.

Thanks,
Umesh
[16 Dec 2014 9:48] MySQL Verification Team
// 5.6.23 debug build

scripts/mysql_install_db --basedir=/export/umesh/mysql-5.6.23 --datadir=/export/umesh/mysql-5.6.23/75232
bin/mysqld-debug --basedir=/export/umesh/mysql-5.6.23 --datadir=/export/umesh/mysql-5.6.23/75232 --core-file --socket=/tmp/75232.sock  --port=15000 --log-error=/export/umesh/mysql-5.6.23/75232/log.err --plugin-load=audit_log=audit_log.so  --innodb_file_per_table=1 --innodb_flush_method=O_DIRECT --log-bin=binlog --binlog_format=MIXED  --event-scheduler=ON --maximum-bulk_insert_buffer_size=1M --maximum-join_buffer_size=1M --maximum-max_heap_table_size=1M --maximum-max_join_size=1M --maximum-myisam_max_sort_file_size=1M --maximum-myisam_mmap_size=1M --maximum-myisam_sort_buffer_size=1M --maximum-optimizer_trace_max_mem_size=1M --maximum-preload_buffer_size=1M --maximum-query_alloc_block_size=1M --maximum-query_prealloc_size=1M --maximum-range_alloc_block_size=1M --maximum-read_buffer_size=1M --maximum-read_rnd_buffer_size=1M --maximum-sort_buffer_size=1M --maximum-tmp_table_size=1M --maximum-transaction_alloc_block_size=1M --maximum-transaction_prealloc_size=1M --log-output=none --sql_mode=ONLY_FULL_GROUP_BY 2>&1 &

commit: df34098068ae4a07f245ad13a4819ca01bde71df
date: 2014-11-18 09:54:31 +0530
build-date: 2014-11-18 18:01:47 +0100
short: df34098
branch: mysql-5.6

MySQL source 5.6.23

(gdb) bt
#0  0x00007f8085688771 in pthread_kill () from /lib64/libpthread.so.0
#1  0x0000000000b0070b in my_write_core (sig=6) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/mysys/stacktrace.c:422
#2  0x000000000077ec8c in handle_fatal_signal (sig=6) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/signal_handler.cc:230
#3  <signal handler called>
#4  0x00007f808428e5c9 in raise () from /lib64/libc.so.6
#5  0x00007f808428fcd8 in abort () from /lib64/libc.so.6
#6  0x00007f8084287536 in __assert_fail_base () from /lib64/libc.so.6
#7  0x00007f80842875e2 in __assert_fail () from /lib64/libc.so.6
#8  0x0000000000a29789 in get_partition_id_range_for_endpoint (part_info=0x7f8028026090, left_endpoint=true, include_endpoint=true)
    at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_partition.cc:3603
#9  0x0000000000a31d46 in get_part_iter_for_interval_via_mapping (part_info=0x7f8028026090, is_subpart=false, store_length_array=0x7f805b00c7e0, min_value=0x7f805b00cb48 "",
    max_value=0x7f805b00da46 "", min_len=5, max_len=5, flags=0, part_iter=0x7f805b00e9b0) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_partition.cc:7979
#10 0x00000000009b52c2 in find_used_partitions (ppar=0x7f805b00c9f0, key_tree=0x7f80280753c8) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/opt_range.cc:3833
#11 0x00000000009b43ab in prune_partitions (thd=0x23d2490, table=0x7f802801c2f0, pprune_cond=0x7f80280059c0) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/opt_range.cc:3304
#12 0x00000000008bf571 in mysql_update (thd=0x23d2490, table_list=0x7f80280050b8, fields=..., values=..., conds=0x7f80280059c0, order_num=0, order=0x0, limit=18446744073709551615,
    handle_duplicates=DUP_ERROR, ignore=false, found_return=0x7f805b00fd88, updated_return=0x7f805b00fd80) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_update.cc:345
#13 0x000000000082f812 in mysql_execute_command (thd=0x23d2490) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_parse.cc:3307
#14 0x0000000000838085 in mysql_parse (thd=0x23d2490, rawbuf=0x7f8028004fd0 "UPDATE t1 SET a=5 WHERE a=9", length=27, parser_state=0x7f805b010700)
    at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_parse.cc:6357
#15 0x000000000082aa07 in dispatch_command (command=COM_QUERY, thd=0x23d2490, packet=0x24b6ae1 "UPDATE t1 SET a=5 WHERE a=9", packet_length=27)
    at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_parse.cc:1332
#16 0x0000000000829a6c in do_command (thd=0x23d2490) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_parse.cc:1034
#17 0x00000000007f0e5f in do_handle_one_connection (thd_arg=0x23d2490) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_connect.cc:982
#18 0x00000000007f0930 in handle_one_connection (arg=0x23d2490) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/sql/sql_connect.cc:898
#19 0x0000000000e652e1 in pfs_spawn_thread (arg=0x2422bc0) at /pb2/build/sb_0-13700644-1416330726.69/mysqlcom-pro-5.6.23/storage/perfschema/pfs.cc:1860
#20 0x00007f8085683df3 in start_thread () from /lib64/libpthread.so.0
#21 0x00007f808434f47d in clone () from /lib64/libc.so.6
[16 Dec 2014 9:49] MySQL Verification Team
// 5.7.6  debug build

bin/mysql_install_db --basedir=/export/umesh/mysql-5.7.6 --datadir=/export/umesh/mysql-5.7.6/75232 -v
bin/mysqld-debug --basedir=/export/umesh/mysql-5.7.6 --datadir=/export/umesh/mysql-5.7.6/75232 --core-file --socket=/tmp/75232.sock  --port=15000 --log-error=/export/umesh/mysql-5.7.6/75232/log.err --plugin-load=audit_log=audit_log.so  --innodb_file_per_table=1 --innodb_flush_method=O_DIRECT --log-bin=binlog --binlog_format=MIXED  --event-scheduler=ON --maximum-bulk_insert_buffer_size=1M --maximum-join_buffer_size=1M --maximum-max_heap_table_size=1M --maximum-max_join_size=1M --maximum-myisam_max_sort_file_size=1M --maximum-myisam_mmap_size=1M --maximum-myisam_sort_buffer_size=1M --maximum-optimizer_trace_max_mem_size=1M --maximum-preload_buffer_size=1M --maximum-query_alloc_block_size=1M --maximum-query_prealloc_size=1M --maximum-range_alloc_block_size=1M --maximum-read_buffer_size=1M --maximum-read_rnd_buffer_size=1M --maximum-sort_buffer_size=1M --maximum-tmp_table_size=1M --maximum-transaction_alloc_block_size=1M --maximum-transaction_prealloc_size=1M --log-output=none --sql_mode=ONLY_FULL_GROUP_BY --server_id=1 2>&1 &

// build used

commit: 1982dd7ab813e3cdb28d3bb119cc7b706cf01b15
date: 2014-11-27 13:27:39 +0300
build-date: 2014-11-27 12:38:45 +0100
short: 1982dd7
branch: mysql-trunk

MySQL source 5.7.6

(gdb) bt
#0  0x00007f43910da771 in pthread_kill () from /lib64/libpthread.so.0
#1  0x0000000000f70894 in my_write_core (sig=6) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/mysys/stacktrace.c:247
#2  0x00000000009206ce in handle_fatal_signal (sig=6) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/signal_handler.cc:219
#3  <signal handler called>
#4  0x00007f438fce05c9 in raise () from /lib64/libc.so.6
#5  0x00007f438fce1cd8 in abort () from /lib64/libc.so.6
#6  0x00007f438fcd9536 in __assert_fail_base () from /lib64/libc.so.6
#7  0x00007f438fcd95e2 in __assert_fail () from /lib64/libc.so.6
#8  0x0000000000e85ef3 in get_partition_id_range_for_endpoint (part_info=0x7f4308045900, left_endpoint=true, include_endpoint=true)
    at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/sql_partition.cc:3571
#9  0x0000000000e8e742 in get_part_iter_for_interval_via_mapping (part_info=0x7f4308045900, is_subpart=false, store_length_array=0x7f436ecf60d0, min_value=0x7f436ecf6460 "",
    max_value=0x7f436ecf735e "", min_len=5, max_len=5, flags=0, part_iter=0x7f436ecf82c8) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/sql_partition.cc:8010
#10 0x0000000000e25aef in find_used_partitions (ppar=0x7f436ecf6300, key_tree=0x7f43080433a8) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/opt_range.cc:3874
#11 0x0000000000e24bfc in prune_partitions (thd=0x7f4308000c00, table=0x7f430802ffb0, pprune_cond=0x7f4308006818)
    at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/opt_range.cc:3345
#12 0x0000000000d31fd4 in mysql_update (thd=0x7f4308000c00, fields=..., values=..., limit=18446744073709551615, handle_duplicates=DUP_ERROR, found_return=0x7f436ecf99a8,
    updated_return=0x7f436ecf99a0) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/sql_update.cc:345
#13 0x0000000000c99baa in mysql_execute_command (thd=0x7f4308000c00) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:3162
#14 0x0000000000ca039f in mysql_parse (thd=0x7f4308000c00, parser_state=0x7f436ecf9ea0) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:5386
#15 0x0000000000c950db in dispatch_command (command=COM_QUERY, thd=0x7f4308000c00, packet=0x7f4308009891 "UPDATE t1 SET a=5 WHERE a=9", packet_length=27)
    at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:1249
#16 0x0000000000c93df5 in do_command (thd=0x7f4308000c00) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/sql_parse.cc:833
#17 0x0000000000d9d9ea in handle_connection (arg=0x31ced20) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/sql/conn_handler/connection_handler_per_thread.cc:298
#18 0x0000000000fa0dc7 in pfs_spawn_thread (arg=0x3123b50) at /export/home/pb2/build/sb_0-13761755-1417089283.97/mysqlcom-pro-5.7.6-m16/storage/perfschema/pfs.cc:2137
#19 0x00007f43910d5df3 in start_thread () from /lib64/libpthread.so.0
#20 0x00007f438fda147d in clone () from /lib64/libc.so.6