[MDEV-4184] Galera: Assertion `field_types == 0 || field_types[field_pos] == MYSQL_TYPE_INT24 || field_types[field_pos] == MYSQL_TYPE_LONG' fails in Protocol_text::store_long Created: 2013-02-19  Updated: 2019-12-12  Resolved: 2019-12-12

Status: Closed
Project: MariaDB Server
Component/s: Galera
Affects Version/s: 5.5.36-galera
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Jan Lindström (Inactive)
Resolution: Won't Fix Votes: 0
Labels: galera

Issue Links:
PartOf

 Description   

mysqld: maria-5.5-galera/sql/protocol.cc:1094: virtual bool Protocol_text::store_long(longlong): Assertion `field_types == 0 || field_types[field_pos] == MYSQL_TYPE_INT24 || field_types[field_pos] == MYSQL_TYPE_LONG' failed.
[ERROR] mysqld got signal 6 ;

Selected threads:

Thread 10 (Thread 0x7f9d20328700 (LWP 3423)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:215
#1  0x0000000000cfcb90 in safe_cond_timedwait (cond=0x34ce468, mp=0x34ce3c0, abstime=0x7f9d20326210, file=0xd9a3c8 "maria-5.5-galera/sql/mdl.cc", line=1202) at maria-5.5-galera/mysys/thr_mutex.c:547
#2  0x0000000000725fc1 in inline_mysql_cond_timedwait (that=0x34ce468, mutex=0x34ce3c0, abstime=0x7f9d20326210, src_file=0xd9a3c8 "maria-5.5-galera/sql/mdl.cc", src_line=1202) at maria-5.5-galera/include/mysql/psi/mysql_thread.h:1018
#3  0x0000000000727095 in MDL_wait::timed_wait (this=0x34ce3c0, thd=0x34ce2d0, abs_timeout=0x7f9d20326210, set_status_on_timeout=false, wait_state_name=0xd9a308 "Waiting for stored function metadata lock") at maria-5.5-galera/sql/mdl.cc:1202
#4  0x0000000000728bc0 in MDL_context::acquire_lock (this=0x34ce3c0, mdl_request=0x7f9d20326690, lock_wait_timeout=31536000) at maria-5.5-galera/sql/mdl.cc:2209
#5  0x000000000072903c in MDL_context::acquire_locks (this=0x34ce3c0, mdl_requests=0x7f9d20326320, lock_wait_timeout=31536000) at maria-5.5-galera/sql/mdl.cc:2320
#6  0x00000000008bc6d5 in lock_object_name (thd=0x34ce2d0, mdl_type=MDL_key::FUNCTION, db=0x7f9cd42ca150 "test", name=0x7f9cd42ca148 "func1") at maria-5.5-galera/sql/lock.cc:903
#7  0x000000000090eec7 in sp_drop_routine (thd=0x34ce2d0, type=TYPE_ENUM_FUNCTION, name=0x7f9cd42ca158) at maria-5.5-galera/sql/sp.cc:1259
#8  0x000000000061fcac in mysql_execute_command (thd=0x34ce2d0) at maria-5.5-galera/sql/sql_parse.cc:4558
#9  0x0000000000624da9 in mysql_parse (thd=0x34ce2d0, rawbuf=0x7f9cd42ca0a8 "DROP FUNCTION func1", length=19, parser_state=0x7f9d20327550) at maria-5.5-galera/sql/sql_parse.cc:6304
#10 0x0000000000623e70 in wsrep_mysql_parse (thd=0x34ce2d0, rawbuf=0x7f9cd42ca0a8 "DROP FUNCTION func1", length=19, parser_state=0x7f9d20327550) at maria-5.5-galera/sql/sql_parse.cc:6069
#11 0x0000000000616335 in dispatch_command (command=COM_QUERY, thd=0x34ce2d0, packet=0x35bccc1 "DROP FUNCTION func1", packet_length=19) at maria-5.5-galera/sql/sql_parse.cc:1245
#12 0x0000000000615114 in do_command (thd=0x34ce2d0) at maria-5.5-galera/sql/sql_parse.cc:891
#13 0x000000000071ddd7 in do_handle_one_connection (thd_arg=0x34ce2d0) at maria-5.5-galera/sql/sql_connect.cc:1291
#14 0x000000000071d7af in handle_one_connection (arg=0x34ce2d0) at maria-5.5-galera/sql/sql_connect.cc:1199
#15 0x00007f9d2fad3e9a in start_thread (arg=0x7f9d20328700) at pthread_create.c:308
#16 0x00007f9d2f204cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#17 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f9d202df700 (LWP 3425)):
#0  __pthread_kill (threadid=<optimized out>, signo=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pthread_kill.c:63
#1  0x0000000000cf4b80 in my_write_core (sig=6) at maria-5.5-galera/mysys/stacktrace.c:457
#2  0x00000000007e5240 in handle_fatal_signal (sig=6) at maria-5.5-galera/sql/signal_handler.cc:262
#3  <signal handler called>
#4  0x00007f9d2f147425 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#5  0x00007f9d2f14ab8b in __GI_abort () at abort.c:91
#6  0x00007f9d2f1400ee in __assert_fail_base (fmt=<optimized out>, assertion=0xd5bd00 "field_types == 0 || field_types[field_pos] == MYSQL_TYPE_INT24 || field_types[field_pos] == MYSQL_TYPE_LONG", file=0xd5b750 "maria-5.5-galera/sql/protocol.cc", line=<optimized out>, function=<optimized out>) at assert.c:94
#7  0x00007f9d2f140192 in __GI___assert_fail (assertion=0xd5bd00 "field_types == 0 || field_types[field_pos] == MYSQL_TYPE_INT24 || field_types[field_pos] == MYSQL_TYPE_LONG", file=0xd5b750 "maria-5.5-galera/sql/protocol.cc", line=1094, function=0xd5c360 "virtual bool Protocol_text::store_long(longlong)") at assert.c:103
#8  0x000000000057a58e in Protocol_text::store_long (this=0x35c1438, from=2) at maria-5.5-galera/sql/protocol.cc:1092
#9  0x000000000080439a in Item::send (this=0x7f9cec0150c8, protocol=0x35c1438, buffer=0x7f9d202dc250) at maria-5.5-galera/sql/item.cc:6367
#10 0x0000000000579c26 in Protocol::send_result_set_row (this=0x35c1438, row_items=0x7f9cec014428) at maria-5.5-galera/sql/protocol.cc:908
#11 0x00000000005dfd7a in select_send::send_data (this=0x7f9cec02c008, items=...) at maria-5.5-galera/sql/sql_class.cc:2591
#12 0x00000000006521fc in JOIN::exec (this=0x7f9cec02c028) at maria-5.5-galera/sql/sql_select.cc:2235
#13 0x0000000000655073 in mysql_select (thd=0x35c0e70, rref_pointer_array=0x7f9cec014570, tables=0x0, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147749632, result=0x7f9cec02c008, unit=0x7f9cec013c40, select_lex=0x7f9cec014318) at maria-5.5-galera/sql/sql_select.cc:3056
#14 0x000000000064bbfa in handle_select (thd=0x35c0e70, lex=0x7f9cec013b90, result=0x7f9cec02c008, setup_tables_done_option=0) at maria-5.5-galera/sql/sql_select.cc:316
#15 0x000000000062166e in execute_sqlcom_select (thd=0x35c0e70, all_tables=0x0) at maria-5.5-galera/sql/sql_parse.cc:5014
#16 0x00000000006191ab in mysql_execute_command (thd=0x35c0e70) at maria-5.5-galera/sql/sql_parse.cc:2488
#17 0x0000000000919568 in sp_instr_stmt::exec_core (this=0x7f9cec015230, thd=0x35c0e70, nextp=0x7f9d202dd6d8) at maria-5.5-galera/sql/sp_head.cc:3189
#18 0x0000000000918db5 in sp_lex_keeper::reset_lex_and_exec_core (this=0x7f9cec015270, thd=0x35c0e70, nextp=0x7f9d202dd6d8, open_tables=false, instr=0x7f9cec015230) at maria-5.5-galera/sql/sp_head.cc:2983
#19 0x0000000000919322 in sp_instr_stmt::execute (this=0x7f9cec015230, thd=0x35c0e70, nextp=0x7f9d202dd6d8) at maria-5.5-galera/sql/sp_head.cc:3121
#20 0x0000000000914f48 in sp_head::execute (this=0x7f9cec0133e8, thd=0x35c0e70, merge_da_on_success=true) at maria-5.5-galera/sql/sp_head.cc:1425
#21 0x0000000000916dd3 in sp_head::execute_procedure (this=0x7f9cec0133e8, thd=0x35c0e70, args=0x35c4100) at maria-5.5-galera/sql/sp_head.cc:2182
#22 0x000000000061f628 in mysql_execute_command (thd=0x35c0e70) at maria-5.5-galera/sql/sql_parse.cc:4445
#23 0x0000000000624da9 in mysql_parse (thd=0x35c0e70, rawbuf=0x7f9cec0063c8 "CALL proc1 ()", length=13, parser_state=0x7f9d202de550) at maria-5.5-galera/sql/sql_parse.cc:6304
#24 0x0000000000623e70 in wsrep_mysql_parse (thd=0x35c0e70, rawbuf=0x7f9cec0063c8 "CALL proc1 ()", length=13, parser_state=0x7f9d202de550) at maria-5.5-galera/sql/sql_parse.cc:6069
#25 0x0000000000616335 in dispatch_command (command=COM_QUERY, thd=0x35c0e70, packet=0x35c65d1 "CALL proc1 ()", packet_length=13) at maria-5.5-galera/sql/sql_parse.cc:1245
#26 0x0000000000615114 in do_command (thd=0x35c0e70) at maria-5.5-galera/sql/sql_parse.cc:891
#27 0x000000000071ddd7 in do_handle_one_connection (thd_arg=0x35c0e70) at maria-5.5-galera/sql/sql_connect.cc:1291
#28 0x000000000071d7af in handle_one_connection (arg=0x35c0e70) at maria-5.5-galera/sql/sql_connect.cc:1199
#29 0x00007f9d2fad3e9a in start_thread (arg=0x7f9d202df700) at pthread_create.c:308
#30 0x00007f9d2f204cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#31 0x0000000000000000 in ?? ()

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x7f9cec02bf08): SELECT func1()
Connection ID (thread ID): 8
Status: KILL_QUERY

It's enough to run the test workflow on one node with two threads.

Server command line:

maria-5.5-galera/sql/mysqld --no-defaults --basedir=maria-5.5-galera --datadir=maria-5.5-galera/data --log-error=maria-5.5-galera/data/log.err --lc-messages-dir=maria-5.5-galera/sql/share/ --port=8306 --socket=maria-5.5-galera/data/tmp/mysql.sock --tmpdir=maria-5.5-galera/data/tmp --core --datadir=maria-5.5-galera/data1 --tmpdir=maria-5.5-galera/data1/tmp --port=8306 --socket=maria-5.5-galera/data1/tmp/node1.sock --wsrep-provider=galera/libgalera_smm.so --wsrep-cluster-address=gcomm:// --binlog-format=row --wsrep-sst-method=rsync --log-error=maria-5.5-galera/data1/log.err --innodb_autoinc_lock_mode=2 --innodb_locks_unsafe_for_binlog=1 --general-log=1

RQG grammar (test.yy):

query:
	CALL proc1 () | ddl ;
 
ddl:
	create_function | drop_function |
	create_procedure | drop_procedure ; 
 
create_function:
	CREATE FUNCTION func1 () RETURNS INTEGER RETURN _digit ;
 
create_procedure:
	CREATE PROCEDURE proc1 () BEGIN SELECT func1() ; END ;
 
drop_function:
	DROP FUNCTION func1 ;
 
drop_procedure:
	DROP PROCEDURE proc1 ;

RQG command line:

perl ./gentest.pl --threads=2 --queries=100M --duration=600 --dsn=dbi:mysql:host=127.0.0.1:port=8306:user=root:database=test --grammar=test.yy

bzr version-info:

revision-id: seppo.jaakola@codership.com-20130216222240-syypg8kc355qcpsp
revno: 3380
branch-nick: maria-5.5-galera



 Comments   
Comment by Elena Stepanova [ 2014-04-08 ]

Still reproducible on the current maria-5.5-galera tree

revision-id: nirbhay@skysql.com-20140320223323-1823lty0btwccp4l
date: 2014-03-20 18:33:23 -0400
build-date: 2014-04-08 20:43:58 +0400
revno: 3476
branch-nick: maria-5.5-galera

Comment by Jan Lindström (Inactive) [ 2019-12-12 ]

Support for 5.5-galera has ended.

Generated at Thu Feb 08 06:54:27 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.