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

On error, row_ins_index_entry_big_rec() forgets mtr_t::commit()

    XMLWordPrintable

Details

    • Can result in hang or crash

    Description

      Assertion found on debug build:-
      Leads to

      GIT_SHOW: HEAD -> 10.11, origin/10.11 21bb6a3e348f89c5cf23d4ee688c57f6078c7b02 2025-08-27T11:02:19+03:00

      # 2025-08-27T20:04:17 [2235442] | mariadbd: /data/Server/10.11_new/storage/innobase/include/sux_lock.h:392: void sux_lock<ssux>::s_lock() [with ssux = ssux_lock_impl<true>]: Assertion `!have_x()' failed.
      

      10.11 21bb6a3e348f89c5cf23d4ee688c57f6078c7b02

      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=3759687232) at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=3759687232) at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=3759687232, 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  __assert_fail_base (fmt="%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion="!have_x()", file="/data/Server/10.11_new/storage/innobase/include/sux_lock.h", line=392, function=<optimized out>) at ./assert/assert.c:92
      #6  __GI___assert_fail (assertion="!have_x()", file="/data/Server/10.11_new/storage/innobase/include/sux_lock.h", line=392, function="void sux_lock<ssux>::s_lock() [with ssux = ssux_lock_impl<true>]") at ./assert/assert.c:101
      #7  sux_lock<ssux_lock_impl<true> >::s_lock (this=this@entry=) at /data/Server/10.11_new/storage/innobase/include/sux_lock.h:392
      #8  mtr_t::s_lock (lock=, this=) at /data/Server/10.11_new/storage/innobase/include/mtr0mtr.h:261
      #9  btr_cur_t::search_leaf (this=this@entry=, tuple=tuple@entry=, mode=mode@entry=PAGE_CUR_LE, latch_mode=<optimized out>, latch_mode@entry=BTR_MODIFY_LEAF, mtr=mtr@entry=)
          at /data/Server/10.11_new/storage/innobase/btr/btr0cur.cc:1238
      #10 btr_pcur_open (mtr=, cursor=, latch_mode=BTR_MODIFY_LEAF, mode=PAGE_CUR_LE, tuple=) at /data/Server/10.11_new/storage/innobase/include/btr0pcur.h:430
      #11 row_search_on_row_ref (pcur=pcur@entry=, mode=mode@entry=BTR_MODIFY_LEAF, table=<optimized out>, ref=, mtr=mtr@entry=) at /data/Server/10.11_new/storage/innobase/row/row0row.cc:1227
      #12 row_undo_search_clust_to_pcur (node=node@entry=) at /data/Server/10.11_new/storage/innobase/row/row0undo.cc:180
      #13 row_undo_ins_parse_undo_rec (node=node@entry=, dict_locked=dict_locked@entry=false) at /data/Server/10.11_new/storage/innobase/row/row0uins.cc:482
      #14 row_undo_ins (node=node@entry=, thr=thr@entry=) at /data/Server/10.11_new/storage/innobase/row/row0uins.cc:578
      #15 row_undo (node=node@entry=, thr=thr@entry=) at /data/Server/10.11_new/storage/innobase/row/row0undo.cc:401
      #16 row_undo_step (thr=thr@entry=) at /data/Server/10.11_new/storage/innobase/row/row0undo.cc:442
      #17 que_thr_step (thr=thr@entry=) at /data/Server/10.11_new/storage/innobase/que/que0que.cc:551
      #18 que_run_threads_low (thr=thr@entry=) at /data/Server/10.11_new/storage/innobase/que/que0que.cc:609
      #19 que_run_threads (thr=) at /data/Server/10.11_new/storage/innobase/que/que0que.cc:629
      #20 trx_t::rollback_low (this=this@entry=, savept=savept@entry=) at /data/Server/10.11_new/storage/innobase/trx/trx0roll.cc:116
      #21 trx_t::rollback (this=this@entry=, savept=savept@entry=) at /data/Server/10.11_new/storage/innobase/trx/trx0roll.cc:179
      #22 row_mysql_handle_errors (new_err=new_err@entry=, trx=trx@entry=, thr=thr@entry=, savept=savept@entry=) at /data/Server/10.11_new/storage/innobase/row/row0mysql.cc:684
      #23 row_insert_for_mysql (mysql_rec=mysql_rec@entry="\020\001\b\270\216", <incomplete sequence \354>, prebuilt=, ins_mode=<optimized out>) at /data/Server/10.11_new/storage/innobase/row/row0mysql.cc:1312
      #24 ha_innobase::write_row (this=, record="\020\001\b\270\216", <incomplete sequence \354>) at /data/Server/10.11_new/storage/innobase/handler/ha_innodb.cc:7828
      #25 handler::ha_write_row (this=, buf="\020\001\b\270\216", <incomplete sequence \354>) at /data/Server/10.11_new/sql/handler.cc:7765
      #26 Write_record::single_insert (this=, inserted=inserted@entry=) at /data/Server/10.11_new/sql/sql_insert.cc:2315
      #27 Write_record::write_record (this=this@entry=) at /data/Server/10.11_new/sql/sql_insert.cc:2357
      #28 mysql_insert (thd=thd@entry=, table_list=<optimized out>, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false, result=) at /data/Server/10.11_new/sql/sql_insert.cc:1217
      #29 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:4628
      #30 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
      #31 dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=, 
          packet=packet@entry=" INSERT INTO t1 (col1,col2, col_int, col_string, col_text) VALUES ( 1732, 1732, 1732 - 1, REPEAT(SUBSTR(CAST( 1732 AS CHAR),1,1), 10), REPEAT(SUBSTR(CAST( 1732 AS CHAR),1,1), @fill_amount) ) /* E_R Th"...,
       packet_length=packet_length@entry=228, blocking=blocking@entry=true) at /data/Server/10.11_new/sql/sql_parse.cc:1906
      #32 do_command (thd=thd@entry=, blocking=blocking@entry=true) at /data/Server/10.11_new/sql/sql_parse.cc:1419
      #33 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
      #34 handle_one_connection (arg=) at /data/Server/10.11_new/sql/sql_connect.cc:1298
      #35 start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #36 clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
      

      RR trace is present on pluto:-
      /data/results/1756324862/TBR-1406

      Attachments

        Issue Links

          Activity

            People

              saahil Saahil Alam
              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.