Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-37535

Innodb Crash in range_set::remove_value

    XMLWordPrintable

Details

    • Can result in hang or crash

    Description

      Innodb crash found on debug build

      SET GLOBAL innodb_immediate_scrub_data_uncompressed=ON;
      

      leads to :-

      10.11 21bb6a3e348f89c5cf23d4ee688c57f6078c7b02

      /usr/include/c++/11/debug/safe_iterator.h:614:
      In function:
          gnu_debug::_Safe_iterator<_Iterator, _Sequence, 
          std::bidirectional_iterator_tag>& gnu_debug::_Safe_iterator<_Iterator, 
          _Sequence, std::bidirectional_iterator_tag>::operator--() [with 
          _Iterator = std::_Rb_tree_const_iterator<range_t>; _Sequence = std::
          debug::set<range_t, range_compare>]
       
      Error: attempt to decrement a past-the-end iterator.
       
      Objects involved in the operation:
          iterator "this" @ 0x4a955710f8d0 {
            type = std::_Rb_tree_const_iterator<range_t> (constant iterator);
            state = past-the-end;
            references sequence with type 'std::debug::set<range_t, range_compare, std::allocator<range_t> >' @ 0x55944660dac0
          }
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=82005271324224) at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=82005271324224) at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=82005271324224, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
      #3  __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
      #4  __GI_abort () at ./stdlib/abort.c:79
      #5  ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
      #6  __gnu_debug::_Safe_iterator<std::_Rb_tree_const_iterator<range_t>, std::__debug::set<range_t, range_compare, std::allocator<range_t> >, std::bidirectional_iterator_tag>::operator-- (this=) at /usr/include/c++/11/debug/safe_iterator.h:614
      #7  std::__advance<__gnu_debug::_Safe_iterator<std::_Rb_tree_const_iterator<range_t>, std::__debug::set<range_t, range_compare, std::allocator<range_t> >, std::bidirectional_iterator_tag>, long> (__n=0, __i={first = 1, last = 0}) at /usr/include/c++/11/bits/stl_iterator_base_funcs.h:169
      #8  std::advance<__gnu_debug::_Safe_iterator<std::_Rb_tree_const_iterator<range_t>, std::__debug::set<range_t, range_compare, std::allocator<range_t> >, std::bidirectional_iterator_tag>, long> (__n=-1, __i={first = 1, last = 0}) at /usr/include/c++/11/bits/stl_iterator_base_funcs.h:206
      #9  std::prev<__gnu_debug::_Safe_iterator<std::_Rb_tree_const_iterator<range_t>, std::__debug::set<range_t, range_compare, std::allocator<range_t> >, std::bidirectional_iterator_tag> > (__n=1, __x={first = 1, last = 0}) at /usr/include/c++/11/bits/stl_iterator_base_funcs.h:230
      #10 range_set::remove_value (this=, value=1919) at /data/Server/10.11_new/storage/innobase/include/fil0fil.h:221
      #11 fil_space_t::free_page (add=false, offset=1919, this=) at /data/Server/10.11_new/storage/innobase/include/fil0fil.h:948
      #12 buf_page_create (space=space@entry=, offset=offset@entry=1919, zip_size=0, mtr=mtr@entry=, free_block=free_block@entry=) at /data/Server/10.11_new/storage/innobase/buf/buf0buf.cc:3676
      #13 fsp_page_create (space=space@entry=, offset=offset@entry=1919, mtr=mtr@entry=) at /data/Server/10.11_new/storage/innobase/fsp/fsp0fsp.cc:1053
      #14 fsp_alloc_free_page (space=space@entry=, hint=<optimized out>, hint@entry=0, mtr=mtr@entry=, init_mtr=init_mtr@entry=, err=err@entry=) at /data/Server/10.11_new/storage/innobase/fsp/fsp0fsp.cc:1177
      #15 fseg_alloc_free_page_low (space=space@entry=, seg_inode=seg_inode@entry="", iblock=, hint=hint@entry=0, direction=direction@entry=111 'o', has_done_reservation=has_done_reservation@entry=false, mtr=, init_mtr=, err=) at /data/Server/10.11_new/storage/innobase/fsp/fsp0fsp.cc:2165
      #16 fseg_create (space=space@entry=, byte_offset=byte_offset@entry=84, mtr=mtr@entry=, err=err@entry=, has_done_reservation=has_done_reservation@entry=false, block=block@entry=) at /data/Server/10.11_new/storage/innobase/fsp/fsp0fsp.cc:1753
      #17 btr_create (type=3, space=, index_id=5230, index=index@entry=, mtr=mtr@entry=, err=err@entry=) at /data/Server/10.11_new/storage/innobase/btr/btr0btr.cc:1094
      #18 dict_create_index_tree_in_mem (index=, trx=trx@entry=) at /data/Server/10.11_new/storage/innobase/dict/dict0crea.cc:831
      #19 row_create_index_for_mysql (index=<optimized out>, index@entry=, trx=trx@entry=, field_lengths=field_lengths@entry=, mode=FIL_ENCRYPTION_DEFAULT, key_id=1) at /data/Server/10.11_new/storage/innobase/row/row0mysql.cc:2184
      #20 create_index (trx=<optimized out>, form=<optimized out>, table=<optimized out>, key_num=key_num@entry=0) at /data/Server/10.11_new/storage/innobase/handler/ha_innodb.cc:11090
      #21 create_table_info_t::create_table (this=this@entry=, create_fk=create_fk@entry=false) at /data/Server/10.11_new/storage/innobase/handler/ha_innodb.cc:12851
      #22 ha_innobase::create (this=this@entry=, name=<optimized out>, form=, create_info=create_info@entry=, file_per_table=file_per_table@entry=true, trx=trx@entry=) at /data/Server/10.11_new/storage/innobase/handler/ha_innodb.cc:13328
      #23 ha_innobase::truncate (this=) at /data/Server/10.11_new/storage/innobase/handler/ha_innodb.cc:13946
      #24 handler::ha_truncate (this=) at /data/Server/10.11_new/sql/handler.cc:5267
      #25 Sql_cmd_truncate_table::handler_truncate (this=this@entry=, thd=thd@entry=, table_ref=table_ref@entry=, is_tmp_table=is_tmp_table@entry=true) at /data/Server/10.11_new/sql/sql_truncate.cc:255
      #26 Sql_cmd_truncate_table::truncate_table (this=this@entry=, thd=thd@entry=, table_ref=table_ref@entry=) at /data/Server/10.11_new/sql/sql_truncate.cc:469
      #27 Sql_cmd_truncate_table::execute (this=, thd=) at /data/Server/10.11_new/sql/sql_truncate.cc:602
      #28 mysql_execute_command (thd=thd@entry=, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /data/Server/10.11_new/sql/sql_parse.cc:6165
      #29 mysql_parse (thd=thd@entry=, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=) at /data/Server/10.11_new/sql/sql_parse.cc:8180
      #30 dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=, packet=packet@entry="\nTRUNCATE TABLE tmp_3275676_577 /* E_R Thread3 QNO 12109 CON_ID 17 */ ", packet_length=packet_length@entry=70, blocking=blocking@entry=true) at /data/Server/10.11_new/sql/sql_parse.cc:1906
      #31 do_command (thd=thd@entry=, blocking=blocking@entry=true) at /data/Server/10.11_new/sql/sql_parse.cc:1419
      #32 do_handle_one_connection (connect=<optimized out>, connect@entry=, put_in_cache=put_in_cache@entry=true) at /data/Server/10.11_new/sql/sql_connect.cc:1386
      #33 handle_one_connection (arg=) at /data/Server/10.11_new/sql/sql_connect.cc:1298
      #34 start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #35 clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
      
      

      RR trace is present on pluto:-

      rr replay /data/results/1756665680/TBR-2325-B/1/rr/latest-trace
      

      Attachments

        Issue Links

          Activity

            People

              marko Marko Mäkelä
              saahil Saahil Alam
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.