Bug #88283 Assertion failure: row0sel.cc:3955:prebuilt->mysql_prefix_len <= record_buffer..
Submitted: 28 Oct 2017 5:41 Modified: 3 Dec 2017 19:20
Reporter: Roel Van de Paar Email Updates:
Status: Closed 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 5:41] Roel Van de Paar
Description:
2017-10-28T05:10:25.266666Z 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)
2017-10-28T05:10:41.684053Z 7 [ERROR] InnoDB: Assertion failure: row0sel.cc:3955:prebuilt->mysql_prefix_len <= record_buffer->record_size()
InnoDB: thread 140647604344576

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  0x00007feb122469b1 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  0x00007feb122469b1 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  0x00007feb1055e1f7 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#5  0x00007feb1055f8e8 in __GI_abort () at abort.c:90
#6  0x0000000003a8b8f9 in ut_dbg_assertion_failed (expr=0x48b6b18 "prebuilt->mysql_prefix_len <= record_buffer->record_size()", 
    file=0x48b5958 "/git/mysql-server_dbg/storage/innobase/row/row0sel.cc", line=3955)
    at /git/mysql-server_dbg/storage/innobase/ut/ut0dbg.cc:60
#7  0x00000000039ec1ad in row_sel_fetch_last_buf (prebuilt=0x7feacb6510b8)
    at /git/mysql-server_dbg/storage/innobase/row/row0sel.cc:3954
#8  0x00000000039f076e in row_search_mvcc (buf=0x7feacb4d9c30 "\371\001", mode=PAGE_CUR_G, prebuilt=0x7feacb6510b8, match_mode=0, 
    direction=0) at /git/mysql-server_dbg/storage/innobase/row/row0sel.cc:5876
#9  0x000000000382c48d in ha_innobase::index_read (this=0x7feacb587030, buf=0x7feacb4d9c30 "\371\001", key_ptr=0x0, key_len=0, 
    find_flag=HA_READ_AFTER_KEY) at /git/mysql-server_dbg/storage/innobase/handler/ha_innodb.cc:9521
#10 0x000000000382d590 in ha_innobase::index_first (this=0x7feacb587030, buf=0x7feacb4d9c30 "\371\001")
    at /git/mysql-server_dbg/storage/innobase/handler/ha_innodb.cc:9927
#11 0x000000000382d7b7 in ha_innobase::rnd_next (this=0x7feacb587030, buf=0x7feacb4d9c30 "\371\001")
    at /git/mysql-server_dbg/storage/innobase/handler/ha_innodb.cc:10017
#12 0x00000000029caa52 in handler::ha_rnd_next (this=0x7feacb587030, buf=0x7feacb4d9c30 "\371\001")
    at /git/mysql-server_dbg/sql/handler.cc:3095
#13 0x00000000023d7741 in rr_sequential (info=0x7feacb5bc5d8) at /git/mysql-server_dbg/sql/records.cc:530
#14 0x000000000246710c in join_init_read_record (tab=0x7feacb5bc588) at /git/mysql-server_dbg/sql/sql_executor.cc:2965
#15 0x00000000024640d2 in sub_select (join=0x7feacb430c40, qep_tab=0x7feacb5bc588, end_of_records=false)
    at /git/mysql-server_dbg/sql/sql_executor.cc:1664
#16 0x0000000002463857 in do_select (join=0x7feacb430c40) at /git/mysql-server_dbg/sql/sql_executor.cc:1295
#17 0x0000000002460c55 in JOIN::exec (this=0x7feacb430c40) at /git/mysql-server_dbg/sql/sql_executor.cc:285
#18 0x0000000002512b73 in Sql_cmd_dml::execute_inner (this=0x7feacb430720, thd=0x7feacb419000)
    at /git/mysql-server_dbg/sql/sql_select.cc:725
#19 0x0000000002512627 in Sql_cmd_dml::execute (this=0x7feacb430720, thd=0x7feacb419000)
    at /git/mysql-server_dbg/sql/sql_select.cc:605
#20 0x00000000024be1ff in mysql_execute_command (thd=0x7feacb419000, first_level=true)
    at /git/mysql-server_dbg/sql/sql_parse.cc:4628
#21 0x00000000024c042b in mysql_parse (thd=0x7feacb419000, parser_state=0x7feb127ec2f0)
    at /git/mysql-server_dbg/sql/sql_parse.cc:5414
#22 0x00000000024b68e7 in dispatch_command (thd=0x7feacb419000, com_data=0x7feb127ecb80, command=COM_QUERY)
    at /git/mysql-server_dbg/sql/sql_parse.cc:1708
#23 0x00000000024b53f5 in do_command (thd=0x7feacb419000) at /git/mysql-server_dbg/sql/sql_parse.cc:1291
#24 0x000000000285b2d6 in handle_connection (arg=0x7feafe6e13c0)
    at /git/mysql-server_dbg/sql/conn_handler/connection_handler_per_thread.cc:328
#25 0x00000000036ec54d in pfs_spawn_thread (arg=0x7feafe793620) at /git/mysql-server_dbg/storage/perfschema/pfs.cc:2985
#26 0x00007feb12241e25 in start_thread (arg=0x7feb127ed700) at pthread_create.c:308
#27 0x00007feb1062134d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

How to repeat:
# mysqld options required for replay: --sql_mode= --server-id=1
CREATE DATABASE test;
USE test;
CREATE TABLE t1(a INT KEY,b CHAR(0),c CHAR(1)) ENGINE=INNODB;
INSERT INTO t1 VALUES(1,0,0);
INSERT INTO t1 VALUES(2,@value,DEFAULT);
SELECT *,SLEEP(@row)FROM t1;
[28 Oct 2017 16:41] MySQL Verification Team
Thank you for the bug report. Verified as described.
[3 Dec 2017 19:20] Jon Stephens
Documented fix as follows in the MySQL 8.0.4 changelog:

    When a table contained a column whose length was zero, the
    optimizer could in some cases allocate a record buffer that was
    too small to hold the columns read by the query.

Closed.