| Bug #92068 | InnoDB: Assertion failure: lock0lock.cc:1468:lock_rec_get_rec_not_gap(lock) | ||
|---|---|---|---|
| Submitted: | 19 Aug 2018 21:58 | Modified: | 5 Sep 2019 12:21 |
| Reporter: | Roel Van de Paar | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S1 (Critical) |
| Version: | 8.0.12 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[19 Aug 2018 21:58]
Roel Van de Paar
[19 Aug 2018 21:58]
Roel Van de Paar
Core was generated by `/sda/MS300718-mysql-8.0.12-linux-x86_64-debug/bin/mysqld --no-defaults --core-f'.
Program terminated with signal SIGABRT, Aborted.
#0 __pthread_kill (threadid=<optimized out>, signo=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:57
57 ../sysdeps/unix/sysv/linux/pthread_kill.c: No such file or directory.
[Current thread is 1 (Thread 0x7f781133a700 (LWP 17502))]
(gdb) bt
#0 __pthread_kill (threadid=<optimized out>, signo=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:57
#1 0x00005624bbbca78d in my_write_core (sig=6) at /git/MS-8.0.12_dbg/mysys/stacktrace.cc:278
#2 0x00005624ba91ed94 in handle_fatal_signal (sig=6) at /git/MS-8.0.12_dbg/sql/signal_handler.cc:249
#3 <signal handler called>
#4 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#5 0x00007f781137b801 in __GI_abort () at abort.c:79
#6 0x00005624bbfb4239 in ut_dbg_assertion_failed (expr=0x5624bd19ee28 "lock_rec_get_rec_not_gap(lock)",
file=0x5624bd19e580 "/git/MS-8.0.12_dbg/storage/innobase/lock/lock0lock.cc", line=1468)
at /git/MS-8.0.12_dbg/storage/innobase/ut/ut0dbg.cc:90
#7 0x00005624bbdc192d in RecLock::create (this=0x7f7811331730, trx=0x7f77fb0008d0, add_to_hash=true, prdt=0x0)
at /git/MS-8.0.12_dbg/storage/innobase/lock/lock0lock.cc:1468
#8 0x00005624bbdc294b in lock_rec_add_to_queue (type_mode=547, block=0x7f77f0a512a8, heap_no=319, index=0x7f77f01b1bb8,
trx=0x7f77fb0008d0) at /git/MS-8.0.12_dbg/storage/innobase/lock/lock0lock.cc:1770
#9 0x00005624bbdc3440 in lock_rec_lock_slow (impl=0, sel_mode=SELECT_ORDINARY, mode=515, block=0x7f77f0a512a8, heap_no=319,
index=0x7f77f01b1bb8, thr=0x7f77e2dbd538) at /git/MS-8.0.12_dbg/storage/innobase/lock/lock0lock.cc:1933
#10 0x00005624bbdc3809 in lock_rec_lock (impl=false, sel_mode=SELECT_ORDINARY, mode=515, block=0x7f77f0a512a8, heap_no=319,
index=0x7f77f01b1bb8, thr=0x7f77e2dbd538) at /git/MS-8.0.12_dbg/storage/innobase/lock/lock0lock.cc:1993
#11 0x00005624bbdcef0a in lock_sec_rec_read_check_and_lock (flags=0, block=0x7f77f0a512a8, rec=0x7f77f1cc69e1 "",
index=0x7f77f01b1bb8, offsets=0x7f7811331b00, sel_mode=SELECT_ORDINARY, mode=LOCK_X, gap_mode=512, thr=0x7f77e2dbd538)
at /git/MS-8.0.12_dbg/storage/innobase/lock/lock0lock.cc:6040
#12 0x00005624bbea3ec1 in row_ins_set_exclusive_rec_lock (type=512, block=0x7f77f0a512a8, rec=0x7f77f1cc69e1 "",
index=0x7f77f01b1bb8, offsets=0x7f7811331b00, thr=0x7f77e2dbd538) at /git/MS-8.0.12_dbg/storage/innobase/row/row0ins.cc:1337
#13 0x00005624bbea86a3 in row_ins_sec_index_entry_low (flags=0, mode=2, index=0x7f77f01b1bb8, offsets_heap=0x7f77e2c5d818,
heap=0x7f77e2c5dd18, entry=0x7f77e2c3dcb8, trx_id=0, thr=0x7f77e2dbd538, dup_chk_only=false)
at /git/MS-8.0.12_dbg/storage/innobase/row/row0ins.cc:2983
#14 0x00005624bbea9148 in row_ins_sec_index_entry (index=0x7f77f01b1bb8, entry=0x7f77e2c3dcb8, thr=0x7f77e2dbd538,
dup_chk_only=false) at /git/MS-8.0.12_dbg/storage/innobase/row/row0ins.cc:3217
#15 0x00005624bbea92ef in row_ins_index_entry (index=0x7f77f01b1bb8, entry=0x7f77e2c3dcb8, thr=0x7f77e2dbd538)
at /git/MS-8.0.12_dbg/storage/innobase/row/row0ins.cc:3263
#16 0x00005624bbea98e1 in row_ins_index_entry_step (node=0x7f77e2d1ac88, thr=0x7f77e2dbd538)
at /git/MS-8.0.12_dbg/storage/innobase/row/row0ins.cc:3395
#17 0x00005624bbea9c8f in row_ins (node=0x7f77e2d1ac88, thr=0x7f77e2dbd538)
at /git/MS-8.0.12_dbg/storage/innobase/row/row0ins.cc:3517
#18 0x00005624bbeaa2cb in row_ins_step (thr=0x7f77e2dbd538) at /git/MS-8.0.12_dbg/storage/innobase/row/row0ins.cc:3683
#19 0x00005624bbec7eff in row_insert_for_mysql_using_ins_graph (mysql_rec=0x7f77e2d14028 " \317\366\r\017", prebuilt=0x7f77e2d1a0b8)
at /git/MS-8.0.12_dbg/storage/innobase/row/row0mysql.cc:1556
#20 0x00005624bbec8566 in row_insert_for_mysql (mysql_rec=0x7f77e2d14028 " \317\366\r\017", prebuilt=0x7f77e2d1a0b8)
at /git/MS-8.0.12_dbg/storage/innobase/row/row0mysql.cc:1685
#21 0x00005624bbcf4f4e in ha_innobase::write_row (this=0x7f77e2d12028, record=0x7f77e2d14028 " \317\366\r\017")
at /git/MS-8.0.12_dbg/storage/innobase/handler/ha_innodb.cc:7629
#22 0x00005624baab0a54 in handler::ha_write_row (this=0x7f77e2d12028, buf=0x7f77e2d14028 " \317\366\r\017")
at /git/MS-8.0.12_dbg/sql/handler.cc:7478
#23 0x00005624bba319dd in dd::Raw_new_record::insert (this=0x7f77e2caa250) at /git/MS-8.0.12_dbg/sql/dd/impl/raw/raw_record.cc:311
#24 0x00005624bbad90c5 in dd::Weak_object_impl::store (this=0x7f77e2daaa00, otx=0x7f7811333420)
at /git/MS-8.0.12_dbg/sql/dd/impl/types/weak_object_impl.cc:124
#25 0x00005624bb8883a0 in dd::Collection<dd::Column*>::store_items (this=0x7f77e2de8918, otx=0x7f7811333420)
at /git/MS-8.0.12_dbg/sql/dd/collection.cc:220
#26 0x00005624bba8aedf in dd::Abstract_table_impl::store_children (this=0x7f77e2de88c0, otx=0x7f7811333420)
at /git/MS-8.0.12_dbg/sql/dd/impl/types/abstract_table_impl.cc:110
#27 0x00005624bbad3777 in dd::View_impl::store_children (this=0x7f77e2de88c0, otx=0x7f7811333420)
at /git/MS-8.0.12_dbg/sql/dd/impl/types/view_impl.cc:110
#28 0x00005624bbad8fd4 in dd::Weak_object_impl::store (this=0x7f77e2de88c0, otx=0x7f7811333420)
at /git/MS-8.0.12_dbg/sql/dd/impl/types/weak_object_impl.cc:110
#29 0x00005624bba1a0ec in dd::cache::Storage_adapter::store<dd::View> (thd=0x7f77e2c23000, object=0x7f77e2de8950)
at /git/MS-8.0.12_dbg/sql/dd/impl/cache/storage_adapter.cc:296
[19 Aug 2018 21:59]
Roel Van de Paar
#30 0x00005624bb915c7c in dd::cache::Dictionary_client::update<dd::View> (this=0x7f77e2c49000, new_object=0x7f77e2de8950)
at /git/MS-8.0.12_dbg/sql/dd/impl/cache/dictionary_client.cc:2491
#31 0x00005624bb8dcbe2 in dd::update_view (thd=0x7f77e2c23000, new_view=0x7f77e2de8950, view=0x7f77e2e459a8)
at /git/MS-8.0.12_dbg/sql/dd/dd_view.cc:600
#32 0x00005624baa35f73 in open_views_and_update_metadata (thd=0x7f77e2c23000, views=0x7f7811335b10, commit_dd_changes=false,
uncommitted_tables=0x7f7811336c30) at /git/MS-8.0.12_dbg/sql/dd_sql_view.cc:508
#33 0x00005624baa36d11 in update_view_metadata<dd::View_table> (thd=0x7f77e2c23000, db=0x7f77e2ebd810 "test",
tbl_or_sf_name=0x7f77e2ebca10 "t0", commit_dd_changes=false, uncommitted_tables=0x7f7811336c30)
at /git/MS-8.0.12_dbg/sql/dd_sql_view.cc:661
#34 0x00005624baa36727 in update_referencing_views_metadata (thd=0x7f77e2c23000, db=0x7f77e2ebd810 "test",
table_name=0x7f77e2ebca10 "t0", new_db=0x0, new_table_name=0x0, commit_dd_changes=false, uncommitted_tables=0x7f7811336c30)
at /git/MS-8.0.12_dbg/sql/dd_sql_view.cc:678
#35 0x00005624baa3688a in update_referencing_views_metadata (thd=0x7f77e2c23000, table=0x7f77e2ebd288, new_db=0x0,
new_table_name=0x0, commit_dd_changes=false, uncommitted_tables=0x7f7811336c30) at /git/MS-8.0.12_dbg/sql/dd_sql_view.cc:700
#36 0x00005624baa36904 in update_referencing_views_metadata (thd=0x7f77e2c23000, table=0x7f77e2ebd288, commit_dd_changes=false,
uncommitted_tables=0x7f7811336c30) at /git/MS-8.0.12_dbg/sql/dd_sql_view.cc:708
#37 0x00005624bad2fe97 in Query_result_create::send_eof (this=0x7f77e2dad028) at /git/MS-8.0.12_dbg/sql/sql_insert.cc:2828
#38 0x00005624bad063f7 in JOIN::exec (this=0x7f77e2e45410) at /git/MS-8.0.12_dbg/sql/sql_executor.cc:256
#39 0x00005624ba7d24a2 in handle_query (thd=0x7f77e2c23000, lex=0x7f77e2c28800, result=0x7f77e2dad028, added_options=268435456,
removed_options=0) at /git/MS-8.0.12_dbg/sql/sql_select.cc:199
#40 0x00005624bad002e1 in Sql_cmd_create_table::execute (this=0x7f77e2ebdaa8, thd=0x7f77e2c23000)
at /git/MS-8.0.12_dbg/sql/sql_cmd_ddl_table.cc:298
#41 0x00005624ba772536 in mysql_execute_command (thd=0x7f77e2c23000, first_level=true) at /git/MS-8.0.12_dbg/sql/sql_parse.cc:3228
#42 0x00005624ba777f94 in mysql_parse (thd=0x7f77e2c23000, parser_state=0x7f7811339330) at /git/MS-8.0.12_dbg/sql/sql_parse.cc:4925
#43 0x00005624ba76daeb in dispatch_command (thd=0x7f77e2c23000, com_data=0x7f7811339c90, command=COM_QUERY)
at /git/MS-8.0.12_dbg/sql/sql_parse.cc:1607
#44 0x00005624ba76c3c6 in do_command (thd=0x7f77e2c23000) at /git/MS-8.0.12_dbg/sql/sql_parse.cc:1232
#45 0x00005624ba90c678 in handle_connection (arg=0x7f77febbb480)
at /git/MS-8.0.12_dbg/sql/conn_handler/connection_handler_per_thread.cc:308
#46 0x00005624bc27b422 in pfs_spawn_thread (arg=0x7f7804be7720) at /git/MS-8.0.12_dbg/storage/perfschema/pfs.cc:2836
#47 0x00007f7812d676db in start_thread (arg=0x7f781133a700) at pthread_create.c:463
#48 0x00007f781145c88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
[20 Aug 2018 4:26]
MySQL Verification Team
Hello Roel, Thank you for the report and test case. Observed that 8.0.12 debug build is affected. regards, Umesh
[20 Aug 2018 4:29]
MySQL Verification Team
-- 5.7.23 build not affected
[17 May 2019 13:41]
Daniel Price
Posted by developer: Fixed as of the upcoming 8.0.17 release, and here's the changelog entry: A CREATE TABLE ... REPLACE SELECT operation raised a lock_rec_get_rec_not_gap(lock) assertion failure. The operation set a flag on the transaction object indicating that a REPLACE operation was requested, but did not clear the flag before updating dependent views, causing a subsequent INSERT operation to be interpreted as a REPLACE operation, leading to the wrong row locks being taken.
