Bug #73702 Segmentation fault in fill_record for multi_update
Submitted: 25 Aug 2014 4:52 Modified: 9 Feb 2015 17:48
Reporter: Shipra Jain Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S3 (Non-critical)
Version:5.7.5 OS:Any
Assigned to: CPU Architecture:Any

[25 Aug 2014 4:52] Shipra Jain
Description:
Segmentation fault in fill_record for  multi_update for bitmap field. This is seen in wl7159 and other related wls(8003,7828). However it does not look related to wls implementation. tried reproducing on trunk but could not but its a multithreaded bug and difficult to conclude anything on this. 

 2014-08-13T13:12:57 [Thread debugging using libthread_db enabled]
# 2014-08-13T13:12:57 Core was generated by `/log/RQG/shipjain/mysql-trunk-wl7159-7/mysql-5.7.5-m15-linux-x86_64/bin/mysqld'.
# 2014-08-13T13:12:57 Program terminated with signal 11, Segmentation fault.
# 2014-08-13T13:12:57 #0  0x00007f754b4fc69c in pthread_kill () from /lib64/libpthread.so.0
# 2014-08-13T13:12:57 #0  0x00007f754b4fc69c in pthread_kill () from /lib64/libpthread.so.0
# 2014-08-13T13:12:57 #1  0x0000000000dd92e9 in my_write_core (sig=11) at /log/RQG/shipjain/mysql-trunk-wl7159-7/mysys/stacktrace.c:246
# 2014-08-13T13:12:57 #2  0x00000000007fe708 in handle_fatal_signal (sig=11) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/signal_handler.cc:219
# 2014-08-13T13:12:57 #3  <signal handler called>
# 2014-08-13T13:12:57 #4  0x0000000000a9893f in fill_record (thd=0x7f74bc011ac0, ptr=0x7f74bc1063a8, values=..., bitmap=0x0, insert_into_fields_bitmap=0x0) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_base.cc:9417
# 2014-08-13T13:12:57 #5  0x0000000000bacc2e in multi_update::send_data (this=0x7f74bc0fd890, not_used_values=...) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_update.cc:2235
# 2014-08-13T13:12:57 #6  0x0000000000acb2e2 in end_send (join=0x7f74bc0fd950, qep_tab=0x7f74bc102898, end_of_records=false) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_executor.cc:2812
# 2014-08-13T13:12:57 #7  0x0000000000ac8284 in evaluate_join_record (join=0x7f74bc0fd950, qep_tab=0x7f74bc102728) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_executor.cc:1598
# 2014-08-13T13:12:57 #8  0x0000000000ac76e9 in sub_select (join=0x7f74bc0fd950, qep_tab=0x7f74bc102728, end_of_records=false) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_executor.cc:1264
# 2014-08-13T13:12:57 #9  0x0000000000ac8284 in evaluate_join_record (join=0x7f74bc0fd950, qep_tab=0x7f74bc1025b8) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_executor.cc:1598
# 2014-08-13T13:12:57 #10 0x0000000000ac76e9 in sub_select (join=0x7f74bc0fd950, qep_tab=0x7f74bc1025b8, end_of_records=false) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_executor.cc:1264
# 2014-08-13T13:12:57 #11 0x0000000000ac6f66 in do_select (join=0x7f74bc0fd950) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_executor.cc:920
# 2014-08-13T13:12:57 #12 0x0000000000ac4e2b in JOIN::exec (this=0x7f74bc0fd950) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_executor.cc:190
# 2014-08-13T13:12:57 #13 0x0000000000b49da0 in mysql_select (thd=0x7f74bc011ac0, fields=..., select_options=1342177408, result=0x7f74bc0fd890, select_lex=0x7f74bc131100) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_select.cc:1055
# 2014-08-13T13:12:57 #14 0x0000000000baa61f in mysql_multi_update (thd=0x7f74bc011ac0, fields=0x7f74bc131208, values=0x7f74bc0141f0, options=0, handle_duplicates=DUP_ERROR, select_lex=0x7f74bc131100, result=0x7f754b808c78) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_update.cc:1585
# 2014-08-13T13:12:57 #15 0x0000000000b0c21e in mysql_execute_command (thd=0x7f74bc011ac0) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_parse.cc:3285
# 2014-08-13T13:12:57 #16 0x0000000000b12950 in mysql_parse (thd=0x7f74bc011ac0, parser_state=0x7f754b809680) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_parse.cc:5400
# 2014-08-13T13:12:57 #17 0x0000000000b06cbf in dispatch_command (command=COM_QUERY, thd=0x7f74bc011ac0, packet=0x7f74bc0ae6b1 "UPDATE   testdb_S . t1_base3_N  AS A NATURAL JOIN testdb_S . t1_base1_S  B SET A.  `col_decimal` = 1 , B.  `col_decimal` = 9", packet_length=124) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_parse.cc:1247
# 2014-08-13T13:12:57 #18 0x0000000000b059f6 in do_command (thd=0x7f74bc011ac0) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_parse.cc:834
# 2014-08-13T13:12:57 #19 0x0000000000c11152 in handle_connection (arg=0x36632b0) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/conn_handler/connection_handler_per_thread.cc:297
# 2014-08-13T13:12:57 #20 0x000000000116cf79 in pfs_spawn_thread (arg=0x365dc10) at /log/RQG/shipjain/mysql-trunk-wl7159-7/storage/perfschema/pfs.cc:2072
 2014-08-13T13:12:57 #17 0x0000000000b06cbf in dispatch_command (command=COM_QUERY, thd=0x7f74bc011ac0, packet=0x7f74bc0ae6b1 "UPDATE   testdb_S . t1_base3_N  AS A NATURAL JOIN testdb_S . t1_base1_S  B SET A.  `col_decimal` = 1 , B.  `col_decimal` = 9", packet_length=124) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_parse.cc:1247
# 2014-08-13T13:12:57 #18 0x0000000000b059f6 in do_command (thd=0x7f74bc011ac0) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_parse.cc:834
# 2014-08-13T13:12:57 #19 0x0000000000c11152 in handle_connection (arg=0x36632b0) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/conn_handler/connection_handler_per_thread.cc:297
# 2014-08-13T13:12:57 #20 0x000000000116cf79 in pfs_spawn_thread (arg=0x365dc10) at /log/RQG/shipjain/mysql-trunk-wl7159-7/storage/perfschema/pfs.cc:2072
# 2014-08-13T13:12:57 #21 0x00007f754b4f7851 in start_thread () from /lib64/libpthread.so.0
# 2014-08-13T13:12:57 #22 0x00007f754a26167d in clone () from /lib64/libc.so.6
# 2014-08-13T13:12:57 #5  0x0000000000bacc2e in multi_update::send_data (this=0x7f74bc0fd890, not_used_values=...) at /log/RQG/shipjain/mysql-trunk-wl7159-7/sql/sql_update.cc:2235
# 2014-08-13T13:12:57 2235                        *values_for_table[offset], NULL, NULL);
# 2014-08-13T13:12:57 2230            }
# 2014-08-13T13:12:57 2231      
# 2014-08-13T13:12:57 2232            /* Store regular updated fields in the row. */
# 2014-08-13T13:12:57 2233            fill_record(thd,
# 2014-08-13T13:12:57 2234                        tmp_table->field + 1 + unupdated_check_opt_tables.elements,
# 2014-08-13T13:12:57 2235                        *values_for_table[offset], NULL, NULL);
# 2014-08-13T13:12:57 2236      
# 2014-08-13T13:12:57 2237            /* Write row, ignoring duplicated updates to a row */
# 2014-08-13T13:12:57 2238            error= tmp_table->file->ha_write_row(tmp_table->record[0]);
# 2014-08-13T13:12:57 2239            if (error != HA_ERR_FOUND_DUPP_KEY && error != HA_ERR_FOUND_DUPP_UNIQUE)
============================================

How to repeat:
Run concurrency_1.yy grammar using RMR
[9 Feb 2015 17:48] Paul DuBois
Noted in 5.7.6 changelog.

The capabililty of using InnoDB for temporary tables in MySQL 5.7.5
resulted in certain queries failing: Some queries involving
multiple-table UPDATE, queries involving long PRIMARY KEY values, and
queries involving DISTINCT SUM().