| Bug #88256 | Assertion `max_length >= length' failed. | ||
|---|---|---|---|
| Submitted: | 27 Oct 2017 21:58 | Modified: | 23 Sep 2018 23:49 |
| Reporter: | Roel Van de Paar | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: DML | Severity: | S6 (Debug Builds) |
| Version: | 8.0.3 RC | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | debug | ||
[27 Oct 2017 21:58]
Roel Van de Paar
This bug is all over the runs. Will add few more testcases.
[27 Oct 2017 22:32]
Roel Van de Paar
More testcases
# mysqld options required for replay: --sql_mode=
CREATE DATABASE test;
USE test;
SET @@session.max_sort_length=20;
CREATE TEMPORARY TABLE t1(a int,b int,primary key (a)) engine=none;
SET NAMES utf8;
insert into t1 values(-999.999,-999.999);
SELECT hex(a)ha,hex(lower(a)) hl,hex(upper(a)) hu,a,lower(a) l,upper(a) u FROM t1 order by ha;
# mysqld options required for replay: --sql_mode= --server-id=1
CREATE DATABASE test;
USE test;
xa start0;
create temporary TABLE t1(a int)engine=none;
INSERT INTO t1 VALUES("hoho");
SET @@session.max_sort_length=5;
delete from t1 order by(inet_ntoa(a)) desc;
# mysqld options required for replay: --sql_mode= --server-id=1
CREATE DATABASE test;
USE test;
CREATE TABLE t1(a VARCHAR(334)CHARACTER SET utf16le KEY) engine=none;
SET @@session.max_sort_length=20;
INSERT INTO t1 VALUES('-11:22:33.999');
select * FROM t1 order by(oct(a));
# mysqld options required for replay: --sql_mode= --server-id=1
CREATE DATABASE test;
USE test;
CREATE TABLE t1(a CHAR (1)CHARACTER SET ucs2);
SET @@session.max_sort_length=5;
insert INTO t1 values(0x110000);
delete FROM t1 order by(inet_ntoa(a)) desc;
# mysqld options required for replay: --sql_mode= --server-id=1
CREATE DATABASE test;
USE test;
CREATE TABLE t1(a CHAR (255)default'',KEY a (a)) ENGINE=none DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
SET @@session.max_sort_length=20;
insert INTO t1 values(-99999999999999),(-1),('+1'),(''),('+00000000000001'),('+1234567890'),(99999999999999);
select * FROM t1 order by(oct(a));
# mysqld options required for replay: --sql_mode=
CREATE DATABASE test;
USE test;
SET @@session.character_set_connection=utf8;
create TABLE t1(a CHAR (1),key a(a)) collate utf8_czech_ci;
INSERT INTO t1 VALUES('2007-08-01 12:22:59');
SELECT 1 FROM t1 ORDER BY @x:=makedate(a,a);
CREATE DATABASE test;
USE test;
SET max_sort_length=4;
create temporary TABLE t1 as SELECT 1 a;
delete from t1 order by(inet_ntoa(a)) desc;
CREATE DATABASE test;
USE test;
SET NAMES 'utf8';
create temporary TABLE t1(a int)ENGINE=InnoDB;
INSERT INTO t1 VALUES(1);
SELECT 1 FROM t1 ORDER BY @x:=makedate(a,a);
[27 Oct 2017 23:17]
MySQL Verification Team
Thank you for the bug report.
[14 Nov 2017 18:22]
Paul DuBois
Posted by developer: Noted in 8.0.4, 9.0.0. Length calculations for string-valued user-defined variables could be incorrect if the collation was changed.
[23 Sep 2018 23:48]
Roel Van de Paar
See also bug 92537
[23 Sep 2018 23:49]
Roel Van de Paar
See also bug 88278

Description: 2017-10-27T21:27:14.250827Z 0 [Note] /sda/MS201017-mysql-8.0.3-rc-linux-x86_64-debug/bin/mysqld: ready for connections. Version: '8.0.3-rc-debug-log' socket: '/sda/MS201017-mysql-8.0.3-rc-linux-x86_64-debug/socket.sock' port: 16654 MySQL Community Server (GPL) mysqld: /git/mysql-server_dbg/sql/filesort.cc:1528: size_t {anonymous}::make_sortkey_from_item(Item*, Item_result, bool, size_t, char*, uchar*, bool*, ulonglong*): Assertion `max_length >= length' failed. 21:27:26 UTC - mysqld got signal 6 ; Core was generated by `/sda/MS201017-mysql-8.0.3-rc-linux-x86_64-debug/bin/mysqld --no-defaults --sql_'. Program terminated with signal 6, Aborted. #0 0x00007f166228a9b1 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:61 61 val = INTERNAL_SYSCALL (tgkill, err, 3, THREAD_GETMEM (THREAD_SELF, pid), (gdb) bt #0 0x00007f166228a9b1 in __pthread_kill (threadid=<optimized out>, signo=6) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:61 #1 0x000000000369e428 in my_write_core (sig=6) at /git/mysql-server_dbg/mysys/stacktrace.cc:291 #2 0x000000000286b8f6 in handle_fatal_signal (sig=6) at /git/mysql-server_dbg/sql/signal_handler.cc:234 #3 <signal handler called> #4 0x00007f16605a21f7 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 #5 0x00007f16605a38e8 in __GI_abort () at abort.c:90 #6 0x00007f166059b266 in __assert_fail_base (fmt=0x7f16606ede68 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x442e11b "max_length >= length", file=file@entry=0x442d8a0 "/git/mysql-server_dbg/sql/filesort.cc", line=line@entry=1528, function=function@entry=0x442f7c0 <(anonymous namespace)::make_sortkey_from_item(Item*, Item_result, bool, unsigned long, char*, unsigned char*, bool*, unsigned long long*)::__PRETTY_FUNCTION__> "size_t {anonymous}::make_sortkey_from_item(Item*, Item_result, bool, size_t, char*, uchar*, bool*, ulonglong*)") at assert.c:92 #7 0x00007f166059b312 in __GI___assert_fail (assertion=0x442e11b "max_length >= length", file=0x442d8a0 "/git/mysql-server_dbg/sql/filesort.cc", line=1528, function=0x442f7c0 <(anonymous namespace)::make_sortkey_from_item(Item*, Item_result, bool, unsigned long, char*, unsigned char*, bool*, unsigned long long*)::__PRETTY_FUNCTION__> "size_t {anonymous}::make_sortkey_from_item(Item*, Item_result, bool, size_t, char*, uchar*, bool*, ulonglong*)") at assert.c:101 #8 0x00000000029b4298 in (anonymous namespace)::make_sortkey_from_item (item=0x7f161a4300e8, result_type=STRING_RESULT, is_varlen=false, max_length=8, tmp_buffer=0x7f161a508540 "", to=0x7f161a525021 "2001-01-01", maybe_null=0x7f166282e467, hash=0x7f166282e468) at /git/mysql-server_dbg/sql/filesort.cc:1528 #9 0x00000000029b4a7d in Sort_param::make_sortkey (this=0x7f166282e850, to=0x7f161a525020 "\001\062\060\060\061-01-01", ref_pos=0x7f161a4cf670 "") at /git/mysql-server_dbg/sql/filesort.cc:1682 #10 0x00000000029b3672 in find_all_keys (thd=0x7f161a419000, param=0x7f166282e850, qep_tab=0x7f161a4ba7d8, fs_info=0x7f166282e8d0, chunk_file=0x7f166282ea70, tempfile=0x7f166282e950, pq=0x0, found_rows=0x7f166282ed28) at /git/mysql-server_dbg/sql/filesort.cc:1206 #11 0x00000000029b15e9 in filesort (thd=0x7f161a419000, filesort=0x7f161a4bac58, sort_positions=false, examined_rows=0x7f166282ed30, found_rows=0x7f166282ed28, returned_rows=0x7f166282ed20) at /git/mysql-server_dbg/sql/filesort.cc:558 #12 0x000000000246e747 in create_sort_index (thd=0x7f161a419000, join=0x7f161a4ba030, tab=0x7f161a4ba7d8) at /git/mysql-server_dbg/sql/sql_executor.cc:6130 #13 0x000000000246766d in QEP_TAB::sort_table (this=0x7f161a4ba7d8) at /git/mysql-server_dbg/sql/sql_executor.cc:3088 #14 0x0000000002466fc2 in join_init_read_record (tab=0x7f161a4ba7d8) at /git/mysql-server_dbg/sql/sql_executor.cc:2943 #15 0x00000000024640d2 in sub_select (join=0x7f161a4ba030, qep_tab=0x7f161a4ba7d8, end_of_records=false) at /git/mysql-server_dbg/sql/sql_executor.cc:1664 #16 0x0000000002463857 in do_select (join=0x7f161a4ba030) at /git/mysql-server_dbg/sql/sql_executor.cc:1295 #17 0x0000000002460c55 in JOIN::exec (this=0x7f161a4ba030) at /git/mysql-server_dbg/sql/sql_executor.cc:285 #18 0x0000000002512b73 in Sql_cmd_dml::execute_inner (this=0x7f161a430c00, thd=0x7f161a419000) at /git/mysql-server_dbg/sql/sql_select.cc:725 #19 0x0000000002512627 in Sql_cmd_dml::execute (this=0x7f161a430c00, thd=0x7f161a419000) at /git/mysql-server_dbg/sql/sql_select.cc:605 #20 0x00000000024be1ff in mysql_execute_command (thd=0x7f161a419000, first_level=true) at /git/mysql-server_dbg/sql/sql_parse.cc:4628 #21 0x00000000024c042b in mysql_parse (thd=0x7f161a419000, parser_state=0x7f16628302f0) at /git/mysql-server_dbg/sql/sql_parse.cc:5414 #22 0x00000000024b68e7 in dispatch_command (thd=0x7f161a419000, com_data=0x7f1662830b80, command=COM_QUERY) at /git/mysql-server_dbg/sql/sql_parse.cc:1708 #23 0x00000000024b53f5 in do_command (thd=0x7f161a419000) at /git/mysql-server_dbg/sql/sql_parse.cc:1291 #24 0x000000000285b2d6 in handle_connection (arg=0x7f164e6eb3c0) at /git/mysql-server_dbg/sql/conn_handler/connection_handler_per_thread.cc:328 #25 0x00000000036ec54d in pfs_spawn_thread (arg=0x7f164e794620) at /git/mysql-server_dbg/storage/perfschema/pfs.cc:2985 #26 0x00007f1662285e25 in start_thread (arg=0x7f1662831700) at pthread_create.c:308 #27 0x00007f166066534d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113 How to repeat: # mysqld options required for replay: --sql_mode= CREATE DATABASE test; USE test; SET NAMES utf8,@@character_set_results=NULL; CREATE TEMPORARY TABLE t1(a INT,b INT,INDEX i(a)); INSERT INTO t1 VALUES(1,REPEAT(CONCAT(0,CAST(CHAR(0)AS BINARY),0),40000)); SELECT 1 FROM t1 ORDER BY @x:=makedate(a,a);