Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MDEV-13720 #22

Closed
midenok opened this issue Oct 13, 2017 · 2 comments
Closed

MDEV-13720 #22

midenok opened this issue Oct 13, 2017 · 2 comments

Comments

@midenok
Copy link
Owner

midenok commented Oct 13, 2017

https://jira.mariadb.org/browse/MDEV-13720

CREATE TEMPORARY TABLE tmp (i INT);
SELECT NEXT VALUE FOR tmp;

Assertion for temporary table

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff644cf5d in __GI_abort () at abort.c:90
#2  0x00007ffff6442f17 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x5555567f0b20 "table && table->s->sequence", file=file@entry=0x5555567f0020 "/home/midenok/src/mariadb/midenok/src/sql/item_func.cc", line=line@entry=6960, function=function@entry=0x5555567f31e0 <Item_func_nextval::val_int()::__PRETTY_FUNCTION__> "virtual longlong Item_func_nextval::val_int()") at assert.c:92
#3  0x00007ffff6442fc2 in __GI___assert_fail (assertion=0x5555567f0b20 "table && table->s->sequence", file=0x5555567f0020 "/home/midenok/src/mariadb/midenok/src/sql/item_func.cc", line=6960, function=0x5555567f31e0 <Item_func_nextval::val_int()::__PRETTY_FUNCTION__> "virtual longlong Item_func_nextval::val_int()") at assert.c:101
#4  0x0000555555e95a79 in Item_func_nextval::val_int (this=0x7fff78013b58) at /home/midenok/src/mariadb/midenok/src/sql/item_func.cc:6960
#5  0x0000555555e2f697 in Item::send (this=0x7fff78013b58, protocol=0x7fff780012f0, buffer=0x7fffe54b0af0) at /home/midenok/src/mariadb/midenok/src/sql/item.cc:7163
#6  0x0000555555a8c40d in Protocol::send_result_set_row (this=0x7fff780012f0, row_items=0x7fff780051c8) at /home/midenok/src/mariadb/midenok/src/sql/protocol.cc:979
#7  0x0000555555b0fbdf in select_send::send_data (this=0x7fff78013d00, items=...) at /home/midenok/src/mariadb/midenok/src/sql/sql_class.cc:2803
#8  0x0000555555bab9ff in JOIN::exec_inner (this=0x7fff78013d20) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:3755
#9  0x0000555555bab3da in JOIN::exec (this=0x7fff78013d20) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:3675
#10 0x0000555555bac881 in mysql_select (thd=0x7fff78000d50, tables=0x0, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fff78013d00, unit=0x7fff78004938, select_lex=0x7fff78005098) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:4077
#11 0x0000555555b9ec82 in handle_select (thd=0x7fff78000d50, lex=0x7fff78004870, result=0x7fff78013d00, setup_tables_done_option=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_select.cc:363
#12 0x0000555555b69dde in execute_sqlcom_select (thd=0x7fff78000d50, all_tables=0x7fff78013520) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6476
#13 0x0000555555b6195e in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3575
#14 0x0000555555b6d100 in mysql_parse (thd=0x7fff78000d50, rawbuf=0x7fff78013438 "SELECT NEXT VALUE FOR tmp2", length=26, parser_state=0x7fffe54b26a0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7923
@midenok
Copy link
Owner Author

midenok commented Oct 13, 2017

not a SEQUENCE error

#0  my_error (nr=4064, MyFlags=0) at /home/midenok/src/mariadb/midenok/src/mysys/my_error.c:109
#1  0x0000555555ae36b6 in open_table (thd=0x7fff78000d50, table_list=0x7fff78013518, ot_ctx=0x7fffe54b1020) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:1939
#2  0x0000555555ae6065 in open_and_process_table (thd=0x7fff78000d50, lex=0x7fff78004870, tables=0x7fff78013518, counter=0x7fffe54b10b4, flags=0, prelocking_strategy=0x7fffe54b1140, has_prelocking_list=false, ot_ctx=0x7fffe54b1020) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3414
#3  0x0000555555ae725e in open_tables (thd=0x7fff78000d50, options=..., start=0x7fffe54b1098, counter=0x7fffe54b10b4, flags=0, prelocking_strategy=0x7fffe54b1140) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:3932
#4  0x0000555555ae88e5 in open_and_lock_tables (thd=0x7fff78000d50, options=..., tables=0x7fff78013518, derived=true, flags=0, prelocking_strategy=0x7fffe54b1140) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.cc:4687
#5  0x0000555555adba44 in open_and_lock_tables (thd=0x7fff78000d50, tables=0x7fff78013518, derived=true, flags=0) at /home/midenok/src/mariadb/midenok/src/sql/sql_base.h:495
#6  0x0000555555b69938 in execute_sqlcom_select (thd=0x7fff78000d50, all_tables=0x7fff78013518) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:6397
#7  0x0000555555b6195e in mysql_execute_command (thd=0x7fff78000d50) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:3575
#8  0x0000555555b6d100 in mysql_parse (thd=0x7fff78000d50, rawbuf=0x7fff78013438 "SELECT NEXT VALUE FOR tmp", length=25, parser_state=0x7fffe54b26a0, is_com_multi=false, is_next_command=false) at /home/midenok/src/mariadb/midenok/src/sql/sql_parse.cc:7923

@midenok
Copy link
Owner Author

midenok commented Oct 13, 2017

Fixed in 13720-sequence

@midenok midenok mentioned this issue Oct 14, 2017
@midenok midenok closed this as completed Oct 26, 2017
midenok pushed a commit that referenced this issue Nov 19, 2021
WARNING: ThreadSanitizer: data race (pid=1506937)
  Write of size 8 at 0x0000067ab740 by thread T6:
    #0 buf_page_get_low(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool) /storage/innobase/buf/buf0buf.cc:2946:8 (mariadbd+0x2014c7f)
    #1 buf_page_get_gen(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool) /storage/innobase/buf/buf0buf.cc:3047:10 (mariadbd+0x2016216)
    #2 btr_cur_search_to_nth_level_func(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_cur_t*, ssux_lock_impl<true>*, mtr_t*, unsigned long) /storage/innobase/btr/btr0cur.cc:1613:10 (mariadbd+0x1fb5bff)
    #3 btr_pcur_open_low(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_pcur_t*, unsigned long, mtr_t*) /storage/innobase/include/btr0pcur.ic:439:8 (mariadbd+0x24ddead)
    #4 row_search_on_row_ref(btr_pcur_t*, unsigned long, dict_table_t const*, dtuple_t const*, mtr_t*) /storage/innobase/row/row0row.cc:1215:7 (mariadbd+0x24dd537)
    #5 row_purge_reposition_pcur(unsigned long, purge_node_t*, mtr_t*) /storage/innobase/row/row0purge.cc:81:23 (mariadbd+0x24c5369)
    #6 row_purge_reset_trx_id(purge_node_t*, mtr_t*) /storage/innobase/row/row0purge.cc:748:6 (mariadbd+0x24c90c7)
    #7 row_purge_record_func(purge_node_t*, unsigned char*, que_thr_t const*, bool) /storage/innobase/row/row0purge.cc:1174:4 (mariadbd+0x24c8262)
    #8 row_purge(purge_node_t*, unsigned char*, que_thr_t*) /storage/innobase/row/row0purge.cc:1218:18 (mariadbd+0x24c5af3)
    #9 row_purge_step(que_thr_t*) /storage/innobase/row/row0purge.cc:1267:3 (mariadbd+0x24c5996)
    #10 que_thr_step(que_thr_t*) /storage/innobase/que/que0que.cc:653:9 (mariadbd+0x23d5298)
    #11 que_run_threads_low(que_thr_t*) /storage/innobase/que/que0que.cc:709:25 (mariadbd+0x23d3f29)
    #12 que_run_threads(que_thr_t*) /storage/innobase/que/que0que.cc:729:2 (mariadbd+0x23d3bdf)
    #13 srv_task_execute() /storage/innobase/srv/srv0srv.cc:1692:3 (mariadbd+0x2562841)
    #14 purge_worker_callback(void*) /storage/innobase/srv/srv0srv.cc:1864:10 (mariadbd+0x255f361)
    #15 tpool::task_group::execute(tpool::task*) /tpool/task_group.cc:55:9 (mariadbd+0x260a5ca)
    #16 tpool::task::execute() /tpool/task.cc:47:16 (mariadbd+0x260adf6)
    #17 tpool::thread_pool_generic::worker_main(tpool::worker_data*) /tpool/tpool_generic.cc:550:11 (mariadbd+0x25fc590)
    #18 void std::__invoke_impl<void, void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>(std::__invoke_memfun_deref, void (tpool::thread_pool_generic::*&&)(tpool::worker_data*), tpool::thread_pool_generic*&&, tpool::worker_data*&&) /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74:14 (mariadbd+0x26061b5)
    #19 std::__invoke_result<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>::type std::__invoke<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>(void (tpool::thread_pool_generic::*&&)(tpool::worker_data*), tpool::thread_pool_generic*&&, tpool::worker_data*&&) /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96:14 (mariadbd+0x2605f57)
    #20 void std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:253:13 (mariadbd+0x2605ecb)
    #21 std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::operator()() /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:260:11 (mariadbd+0x2605e35)
    #22 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> > >::_M_run() /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:211:13 (mariadbd+0x2605ac9)
    #23 <null> <null> (libstdc++.so.6+0xd230f)

  Previous write of size 8 at 0x0000067ab740 by thread T8:
    #0 buf_page_get_low(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool) /storage/innobase/buf/buf0buf.cc:2946:8 (mariadbd+0x2014c7f)
    #1 buf_page_get_gen(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool) /storage/innobase/buf/buf0buf.cc:3047:10 (mariadbd+0x2016216)
    #2 btr_cur_search_to_nth_level_func(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_cur_t*, ssux_lock_impl<true>*, mtr_t*, unsigned long) /storage/innobase/btr/btr0cur.cc:1613:10 (mariadbd+0x1fb5bff)
    #3 btr_pcur_open_low(dict_index_t*, unsigned long, dtuple_t const*, page_cur_mode_t, unsigned long, btr_pcur_t*, unsigned long, mtr_t*) /storage/innobase/include/btr0pcur.ic:439:8 (mariadbd+0x24ddead)
    #4 row_search_on_row_ref(btr_pcur_t*, unsigned long, dict_table_t const*, dtuple_t const*, mtr_t*) /storage/innobase/row/row0row.cc:1215:7 (mariadbd+0x24dd537)
    #5 row_purge_reposition_pcur(unsigned long, purge_node_t*, mtr_t*) /storage/innobase/row/row0purge.cc:81:23 (mariadbd+0x24c5369)
    #6 row_purge_reset_trx_id(purge_node_t*, mtr_t*) /storage/innobase/row/row0purge.cc:748:6 (mariadbd+0x24c90c7)
    #7 row_purge_record_func(purge_node_t*, unsigned char*, que_thr_t const*, bool) /storage/innobase/row/row0purge.cc:1174:4 (mariadbd+0x24c8262)
    #8 row_purge(purge_node_t*, unsigned char*, que_thr_t*) /storage/innobase/row/row0purge.cc:1218:18 (mariadbd+0x24c5af3)
    #9 row_purge_step(que_thr_t*) /storage/innobase/row/row0purge.cc:1267:3 (mariadbd+0x24c5996)
    #10 que_thr_step(que_thr_t*) /storage/innobase/que/que0que.cc:653:9 (mariadbd+0x23d5298)
    #11 que_run_threads_low(que_thr_t*) /storage/innobase/que/que0que.cc:709:25 (mariadbd+0x23d3f29)
    #12 que_run_threads(que_thr_t*) /storage/innobase/que/que0que.cc:729:2 (mariadbd+0x23d3bdf)
    #13 trx_purge(unsigned long, bool) /storage/innobase/trx/trx0purge.cc:1271:2 (mariadbd+0x25841b4)
    #14 srv_do_purge(unsigned long*) /storage/innobase/srv/srv0srv.cc:1784:20 (mariadbd+0x2563224)
    #15 purge_coordinator_callback_low() /storage/innobase/srv/srv0srv.cc:1881:35 (mariadbd+0x2562b3b)
    #16 purge_coordinator_callback(void*) /storage/innobase/srv/srv0srv.cc:1910:3 (mariadbd+0x255f4ab)
    #17 tpool::task_group::execute(tpool::task*) /tpool/task_group.cc:55:9 (mariadbd+0x260a5ca)
    #18 tpool::task::execute() /tpool/task.cc:47:16 (mariadbd+0x260adf6)
    #19 tpool::thread_pool_generic::worker_main(tpool::worker_data*) /tpool/tpool_generic.cc:550:11 (mariadbd+0x25fc590)
    #20 void std::__invoke_impl<void, void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>(std::__invoke_memfun_deref, void (tpool::thread_pool_generic::*&&)(tpool::worker_data*), tpool::thread_pool_generic*&&, tpool::worker_data*&&) /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74:14 (mariadbd+0x26061b5)
    #21 std::__invoke_result<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>::type std::__invoke<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*>(void (tpool::thread_pool_generic::*&&)(tpool::worker_data*), tpool::thread_pool_generic*&&, tpool::worker_data*&&) /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96:14 (mariadbd+0x2605f57)
    #22 void std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:253:13 (mariadbd+0x2605ecb)
    #23 std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> >::operator()() /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:260:11 (mariadbd+0x2605e35)
    #24 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (tpool::thread_pool_generic::*)(tpool::worker_data*), tpool::thread_pool_generic*, tpool::worker_data*> > >::_M_run() /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_thread.h:211:13 (mariadbd+0x2605ac9)
    #25 <null> <null> (libstdc++.so.6+0xd230f)

  Location is global 'buf_dbg_counter' of size 8 at 0x0000067ab740 (mariadbd+0x67ab740)

  The obvious fix is to make counter atomic.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant