Bug #88278 Assertion `num_codepoints >= scanner.get_char_index()' failed.
Submitted: 28 Oct 2017 4:49 Modified: 23 Sep 2018 23:48
Reporter: Roel Van de Paar Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: DML Severity:S6 (Debug Builds)
Version:8.0.3 RC OS:Any
Assigned to: CPU Architecture:Any
Tags: debug

[28 Oct 2017 4:49] Roel Van de Paar
Description:
2017-10-28T04:18:59.282276Z 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/strings/ctype-uca.cc:2189: size_t my_strnxfrm_uca(const CHARSET_INFO*, Mb_wc, uchar*, size_t, uint, const uchar*, size_t, uint) [with Mb_wc = Mb_wc_through_function_pointer; size_t = long unsigned int; CHARSET_INFO = charset_info_st; uchar = unsigned char; uint = unsigned int]: Assertion `num_codepoints >= scanner.get_char_index()' failed.
04:19:16 UTC - mysqld got signal 6 ;

Core was generated by `/sda/MS201017-mysql-8.0.3-rc-linux-x86_64-debug/bin/mysqld --no-defaults --core'.
Program terminated with signal 6, Aborted.
#0  0x00007fea1b2949b1 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  0x00007fea1b2949b1 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  0x00007fea195ac1f7 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#5  0x00007fea195ad8e8 in __GI_abort () at abort.c:90
#6  0x00007fea195a5266 in __assert_fail_base (fmt=0x7fea196f7e68 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", 
    assertion=assertion@entry=0x4b633d0 "num_codepoints >= scanner.get_char_index()", 
    file=file@entry=0x4b62328 "/git/mysql-server_dbg/strings/ctype-uca.cc", line=line@entry=2189, 
    function=function@entry=0x4b7c400 <unsigned long my_strnxfrm_uca<Mb_wc_through_function_pointer>(charset_info_st const*, Mb_wc_through_function_pointer, unsigned char*, unsigned long, unsigned int, unsigned char const*, unsigned long, unsigned int)::__PRETTY_FUNCTION__> "size_t my_strnxfrm_uca(const CHARSET_INFO*, Mb_wc, uchar*, size_t, uint, const uchar*, size_t, uint) [with Mb_wc = Mb_wc_through_function_pointer; size_t = long unsigned int; CHARSET_INFO = charset_in"...) at assert.c:92
#7  0x00007fea195a5312 in __GI___assert_fail (assertion=0x4b633d0 "num_codepoints >= scanner.get_char_index()", 
    file=0x4b62328 "/git/mysql-server_dbg/strings/ctype-uca.cc", line=2189, 
    function=0x4b7c400 <unsigned long my_strnxfrm_uca<Mb_wc_through_function_pointer>(charset_info_st const*, Mb_wc_through_function_pointer, unsigned char*, unsigned long, unsigned int, unsigned char const*, unsigned long, unsigned int)::__PRETTY_FUNCTION__> "size_t my_strnxfrm_uca(const CHARSET_INFO*, Mb_wc, uchar*, size_t, uint, const uchar*, size_t, uint) [with Mb_wc = Mb_wc_through_function_pointer; size_t = long unsigned int; CHARSET_INFO = charset_in"...) at assert.c:101
#8  0x0000000003ccc071 in my_strnxfrm_uca<Mb_wc_through_function_pointer> (cs=0x5513680 <my_charset_utf8_unicode_ci>, mb_wc=..., 
    dst=0x7fe9d4652035 "", dstlen=80, num_codepoints=3, src=0x7fe9d4423da0 "2001-01-01", srclen=10, flags=128)
    at /git/mysql-server_dbg/strings/ctype-uca.cc:2189
#9  0x0000000003cc20d0 in my_strnxfrm_any_uca (cs=0x5513680 <my_charset_utf8_unicode_ci>, 
    dst=0x7fe9d4652021 "\016+\016)\016)\016*\002!\016)\016*\002!\016)\016*", dstlen=80, num_codepoints=3, 
    src=0x7fe9d4423da0 "2001-01-01", srclen=10, flags=128) at /git/mysql-server_dbg/strings/ctype-uca.cc:5216
#10 0x00000000029b43bc in (anonymous namespace)::make_sortkey_from_item (item=0x7fe9d4430120, result_type=STRING_RESULT, 
    is_varlen=false, max_length=80, tmp_buffer=0x7fe9d4423da0 "2001-01-01", 
    to=0x7fe9d4652021 "\016+\016)\016)\016*\002!\016)\016*\002!\016)\016*", maybe_null=0x7fea1b838467, hash=0x7fea1b838468)
    at /git/mysql-server_dbg/sql/filesort.cc:1550
#11 0x00000000029b4a7d in Sort_param::make_sortkey (this=0x7fea1b838850, 
    to=0x7fe9d4652020 "\001\016+\016)\016)\016*\002!\016)\016*\002!\016)\016*", ref_pos=0x7fe9d44d9dc0 "\001")
    at /git/mysql-server_dbg/sql/filesort.cc:1682
#12 0x00000000029b3672 in find_all_keys (thd=0x7fe9d4419000, param=0x7fea1b838850, qep_tab=0x7fe9d463b898, fs_info=0x7fea1b8388d0, 
    chunk_file=0x7fea1b838a70, tempfile=0x7fea1b838950, pq=0x0, found_rows=0x7fea1b838d28)
    at /git/mysql-server_dbg/sql/filesort.cc:1206
#13 0x00000000029b15e9 in filesort (thd=0x7fe9d4419000, filesort=0x7fe9d4430f90, sort_positions=false, examined_rows=0x7fea1b838d30, 
    found_rows=0x7fea1b838d28, returned_rows=0x7fea1b838d20) at /git/mysql-server_dbg/sql/filesort.cc:558
#14 0x000000000246e747 in create_sort_index (thd=0x7fe9d4419000, join=0x7fe9d463b030, tab=0x7fe9d463b898)
#15 0x000000000246766d in QEP_TAB::sort_table (this=0x7fe9d463b898) at /git/mysql-server_dbg/sql/sql_executor.cc:3088
#16 0x0000000002466fc2 in join_init_read_record (tab=0x7fe9d463b898) at /git/mysql-server_dbg/sql/sql_executor.cc:2943
#17 0x00000000024640d2 in sub_select (join=0x7fe9d463b030, qep_tab=0x7fe9d463b898, end_of_records=false)
    at /git/mysql-server_dbg/sql/sql_executor.cc:1664
#18 0x0000000002463857 in do_select (join=0x7fe9d463b030) at /git/mysql-server_dbg/sql/sql_executor.cc:1295
#19 0x0000000002460c55 in JOIN::exec (this=0x7fe9d463b030) at /git/mysql-server_dbg/sql/sql_executor.cc:285
#20 0x0000000002512b73 in Sql_cmd_dml::execute_inner (this=0x7fe9d4430c38, thd=0x7fe9d4419000)
    at /git/mysql-server_dbg/sql/sql_select.cc:725
#21 0x0000000002512627 in Sql_cmd_dml::execute (this=0x7fe9d4430c38, thd=0x7fe9d4419000) at /git/mysql-server_dbg/sql/sql_select.cc:605
#22 0x00000000024be1ff in mysql_execute_command (thd=0x7fe9d4419000, first_level=true) at /git/mysql-server_dbg/sql/sql_parse.cc:4628
#23 0x00000000024c042b in mysql_parse (thd=0x7fe9d4419000, parser_state=0x7fea1b83a2f0) at /git/mysql-server_dbg/sql/sql_parse.cc:5414
#24 0x00000000024b68e7 in dispatch_command (thd=0x7fe9d4419000, com_data=0x7fea1b83ab80, command=COM_QUERY)
    at /git/mysql-server_dbg/sql/sql_parse.cc:1708
#25 0x00000000024b53f5 in do_command (thd=0x7fe9d4419000) at /git/mysql-server_dbg/sql/sql_parse.cc:1291
#26 0x000000000285b2d6 in handle_connection (arg=0x7fea076eb3c0)
    at /git/mysql-server_dbg/sql/conn_handler/connection_handler_per_thread.cc:328
#27 0x00000000036ec54d in pfs_spawn_thread (arg=0x7fea07791620) at /git/mysql-server_dbg/storage/perfschema/pfs.cc:2985
#28 0x00007fea1b28fe25 in start_thread (arg=0x7fea1b83b700) at pthread_create.c:308
#29 0x00007fea1966f34d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

How to repeat:
CREATE DATABASE test;
USE test;
CREATE TABLE t1(a INT KEY) ENGINE=InnoDB;
CREATE TEMPORARY TABLE t1(c1 INT) ENGINE=InnoDB;
DROP TABLE t1;
INSERT INTO t1 VALUES(1);
SET COLLATION_CONNECTION=utf8_unicode_ci;
INSERT INTO t1 VALUES(0xF4CE);
SELECT 1 FROM t1 ORDER BY @x:=MAKEDATE(a,a);
[28 Oct 2017 4:50] Roel Van de Paar
This bug is seen a lot in my runs
[28 Oct 2017 17:42] MySQL Verification Team
Thank you for the bug report. Verified as described.
[15 Nov 2017 2:27] Xing Zhang
Duplicate of bug #88256.
[23 Sep 2018 23:48] Roel Van de Paar
See also bug 92537