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

Assertion failure after lock wait is unblocked in SKIP LOCKED

    XMLWordPrintable

Details

    • Can result in hang or crash

    Description

      Assertion found on 13.0 debug build

      origin/13.0 eb0f3282ae8d1f3762c86d682dba99c892498049

      # 2026-06-19T10:18:53 [2505515] | mariadbd: /data/Server/13.0_1/storage/innobase/row/row0sel.cc:5545: dberr_t row_search_mvcc(byte*, page_cur_mode_t, row_prebuilt_t*, ulint, ulint): Assertion `prebuilt->select_lock_type == LOCK_NONE || (index)->is_spatial()' failed.
      

      RQG startup options

      # $RQG_HOME/rqg.pl \
      # --gendata=conf/mariadb/innodb_ai.zz \
      # --gendata_sql=conf/mariadb/table_stress.sql \
      # --max_gd_duration=900 \
      # --grammar=conf/mariadb/innodb_ai.yy \
      # --redefine=conf/mariadb/redefine_ai_locking_reads.yy \
      # --mysqld=--loose-innodb_lock_schedule_algorithm=fcfs \
      # --mysqld=--loose-idle_write_transaction_timeout=0 \
      # --mysqld=--loose-idle_transaction_timeout=0 \
      # --mysqld=--loose-idle_readonly_transaction_timeout=0 \
      # --mysqld=--connect_timeout=60 \
      # --mysqld=--interactive_timeout=28800 \
      # --mysqld=--slave_net_timeout=60 \
      # --mysqld=--net_read_timeout=30 \
      # --mysqld=--net_write_timeout=60 \
      # --mysqld=--loose-table_lock_wait_timeout=50 \
      # --mysqld=--wait_timeout=28800 \
      # --no_mask \
      # --queries=10000000 \
      # --seed=random \
      # --reporters=None \
      # --reporters=ErrorLog \
      # --reporters=Deadlock \
      # --validators=None \
      # --mysqld=--log_output=none \
      # --mysqld=--log_bin_trust_function_creators=1 \
      # --mysqld=--loose-debug_assert_on_not_freed_memory=0 \
      # --engine=InnoDB \
      # --restart_timeout=240 \
      # --mysqld=--plugin-load-add=file_key_management.so \
      # --mysqld=--loose-file-key-management-filename=$RQG_HOME/conf/mariadb/encryption_keys.txt \
      # --mysqld=--plugin-load-add=provider_lzo.so \
      # --mysqld=--plugin-load-add=provider_bzip2.so \
      # --mysqld=--plugin-load-add=provider_lzma.so \
      # --mysqld=--plugin-load-add=provider_snappy.so \
      # --mysqld=--plugin-load-add=provider_lz4.so \
      # --mysqld=--loose-innodb_compression_level=1 \
      # --duration=300 \
      # --mysqld=--loose-innodb_fatal_semaphore_wait_threshold=300 \
      # --mysqld=--lock-wait-timeout=15 \
      # --mysqld=--innodb-lock-wait-timeout=10 \
      # --mysqld=--sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION \
      # --mysqld=--loose-innodb_read_only_compressed=OFF \
      # --mysqld=--loose-innodb-sync-debug \
      # --mysqld=--innodb_stats_persistent=on \
      # --mysqld=--innodb_adaptive_hash_index=off \
      # --mysqld=--innodb_random_read_ahead=OFF \
      # --mysqld=--loose-innodb_evict_tables_on_commit_debug=off \
      # --mysqld=--loose-max-statement-time=30 \
      # --threads=33 \
      # --rr=rr record --wait \
      # --mysqld=--innodb_undo_log_truncate=ON \
      # --mysqld=--innodb_undo_tablespaces=0 \
      # --mysqld=--innodb_rollback_on_timeout=ON \
      # --mysqld=--innodb_page_size=64K \
      # --mysqld=--innodb-buffer-pool-size=256M \
      # --vardir_type=fast \
      # --no_mask \
      # --batch \
      # --basedir1=/Server_bin/13.0_1_debug_Og \
      # --basedir2=/Server_bin/13.0_1_debug_Og \
      # --script_debug=_nix_ \
      # --major_runid=1781871857 \
      # --minor_runid=149
      

      Stacktrace

       
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
      #1  __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
      #2  __GI___pthread_kill (threadid=<optimized out>, 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=assertion@entry="prebuilt->select_lock_type == LOCK_NONE || (index)->is_spatial()",
          file=file@entry="/data/Server/13.0_1/storage/innobase/row/row0sel.cc", line=line@entry=5545, function=function@entry="dberr_t row_search_mvcc(byte*, page_cur_mode_t, row_prebuilt_t*, ulint, ulint)")
          at ./assert/assert.c:94
      #6  __assert_fail (assertion="prebuilt->select_lock_type == LOCK_NONE || (index)->is_spatial()", file="/data/Server/13.0_1/storage/innobase/row/row0sel.cc", line=5545,
          function="dberr_t row_search_mvcc(byte*, page_cur_mode_t, row_prebuilt_t*, ulint, ulint)") at ./assert/assert.c:103
      #7  row_search_mvcc (buf=buf@entry=" \004\231", <incomplete sequence \322>, mode=<optimized out>, mode@entry=PAGE_CUR_UNSUPP, prebuilt=, match_mode=match_mode@entry=0, direction=direction@entry=1)
          at /data/Server/13.0_1/storage/innobase/row/row0sel.cc:5545
      #8  ha_innobase::general_fetch (this=, buf=" \004\231", <incomplete sequence \322>, direction=direction@entry=1, match_mode=match_mode@entry=0) at /data/Server/13.0_1/storage/innobase/handler/ha_innodb.cc:9305
      #9  ha_innobase::index_next (this=<optimized out>, buf=<optimized out>) at /data/Server/13.0_1/storage/innobase/handler/ha_innodb.cc:9360
      #10 handler::ha_index_next (this=, buf=" \004\231", <incomplete sequence \322>) at /data/Server/13.0_1/sql/handler.cc:4195
      #11 join_read_next (info=) at /data/Server/13.0_1/sql/sql_select.cc:25879
      #12 READ_RECORD::read_record (this=) at /data/Server/13.0_1/sql/records.h:77
      #13 sub_select (join=, join_tab=, end_of_records=false) at /data/Server/13.0_1/sql/sql_select.cc:24736
      #14 do_select (join=join@entry=, procedure=<optimized out>) at /data/Server/13.0_1/sql/sql_select.cc:24230
      #15 JOIN::exec_inner (this=this@entry=) at /data/Server/13.0_1/sql/sql_select.cc:5125
      #16 JOIN::exec (this=this@entry=) at /data/Server/13.0_1/sql/sql_select.cc:4913
      #17 mysql_select (thd=thd@entry=, tables=, fields=..., conds=, og_num=1, order=<optimized out>, group=, having=, proc_param=, select_options=2165049856, result=, unit=, select_lex=)
          at /data/Server/13.0_1/sql/sql_select.cc:5439
      #18 handle_select (thd=thd@entry=, lex=lex@entry=, result=result@entry=, setup_tables_done_option=setup_tables_done_option@entry=0) at /data/Server/13.0_1/sql/sql_select.cc:636
      #19 execute_sqlcom_select (thd=thd@entry=, all_tables=) at /data/Server/13.0_1/sql/sql_parse.cc:6217
      #20 mysql_execute_command (thd=thd@entry=, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /data/Server/13.0_1/sql/sql_parse.cc:3991
      #21 mysql_parse (thd=thd@entry=, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=) at /data/Server/13.0_1/sql/sql_parse.cc:7945
      #22 dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=, packet=packet@entry="", packet_length=packet_length@entry=175, blocking=blocking@entry=true) at /data/Server/13.0_1/sql/sql_parse.cc:1903
      #23 do_command (thd=thd@entry=, blocking=blocking@entry=true) at /data/Server/13.0_1/sql/sql_parse.cc:1437
      #24 do_handle_one_connection (connect=<optimized out>, connect@entry=, put_in_cache=put_in_cache@entry=true) at /data/Server/13.0_1/sql/sql_connect.cc:1503
      #25 handle_one_connection (arg=) at /data/Server/13.0_1/sql/sql_connect.cc:1415
      #26 start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
      #27 clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
      (rr) frame 7
      #7  row_search_mvcc (buf=buf@entry=" \004\231", <incomplete sequence \322>, mode=<optimized out>, mode@entry=PAGE_CUR_UNSUPP, prebuilt=, match_mode=match_mode@entry=0, direction=direction@entry=1)
          at /data/Server/13.0_1/storage/innobase/row/row0sel.cc:5545
      5545                                    ut_ad(prebuilt->select_lock_type == LOCK_NONE
      (rr) info args
      buf = " \004\231", <incomplete sequence \322>
      mode = <optimized out>
      prebuilt =
      match_mode = 0
      direction = 1
      (rr) info locals
      no_gap_lock = <optimized out>
      __PRETTY_FUNCTION__ = "dberr_t row_search_mvcc(byte*, page_cur_mode_t, row_prebuilt_t*, ulint, ulint)"
      index = <optimized out>
      comp = <optimized out>
      search_tuple =
      pcur =
      trx =
      clust_index = <optimized out>
      thr = <optimized out>
      rec = "\200"
      vrow =
      result_rec = <optimized out>
      clust_rec =
      row_sel_get_clust_rec_for_mysql = {cached_clust_rec = , cached_old_vers = , cached_lsn = 0, cached_page_id = {m_id = 0}}
      unique_search = <optimized out>
      mtr_extra_clust_savepoint = <optimized out>
      moves_up = <optimized out>
      next_offs = 10096
      same_user_rec = true
      table_lock_waited = <optimized out>
      next_buf = <optimized out>
      spatial_search = false
      need_vrow = <optimized out>
      did_semi_consistent_read = <optimized out>
      mtr = {m_start = true, m_commit = false, m_freeing_tree = false, m_last = , m_last_offset = 0, m_log_mode = 0, m_modifications = 0, m_made_dirty = 0, m_latch_ex = 0, m_trim_pages = 0, m_crc = 27522, trx = ,
        m_user_space = , m_user_space_id = 0, m_memo = {<small_vector_base> = {BeginX = , Size = 2, Capacity = 16}, small = {{object = , type = MTR_MEMO_PAGE_S_FIX}, {object = , type = MTR_MEMO_PAGE_S_FIX}, {
              object = , type = MTR_MEMO_PAGE_S_FIX}, {object = , type = MTR_MEMO_PAGE_S_FIX}, {object = , type = 1141259183}, {object = , type = 373418240}, {object = , type = 1544258448}, {object = ,
              type = MTR_MEMO_S_LOCK}, {object = , type = 1544275616}, {object = , type = 4243864223}, {object = , type = 4243861625}, {object = , type = 4240966456}, {object = , type = 4239282378}, {object = ,
              type = 1971310776}, {object = , type = 1971310760}, {object = , type = 0}}}, m_log = {m_heap = , m_list = {sentinel_ = {next = , prev = }}, m_first_block = {<ilist_node<void>> = {next = , prev = },
            m_buf_end = 0, m_magic_n = 375767,
            m_data = "$3\213\374\263`\000\000\000\000\000\000\000\000\000\000\220\321\177u\202s\000\0008$Y\375\263`\000\000\003", '\000' <repeats 16 times>, "\250\006D\202k\000\000\220\321\177u\202s\000\000\2720\314\374\263`\000\000\220\321\177u\202s\000\000\020[\005D\202k\000\000\000\250\006D\202k\000\000\200\322\177u\202s\000\000\000\000\000\000\000\000\000\000\220\321\177u\202s\000\000\000\000\000\000\000\000\000\000\0225\213\374\263`\000\0000k\374\375\263`", '\000' <repeats 34 times>, "\240W\0038\202k\000\000\004\000\000\000\000\000\000\000\333\332\337\374\263`\000\000"..., m_used = 0}}, m_commit_lsn = 0, m_freed_space = ,
        m_freed_pages = , m_binlog_page = }
      heap =
      offsets_ = {300, 35, 142, 31712, 27522, 0, 53320, 14368, 27522, 0, 49174, 4, 10, 17, 22, 54, 2379, 2380, 2385, 18789, 2415, 2423, 2424, 35192, 2432, 2437, 2438, 2439, 2449, 2481, 2491, 2494, 2499, 13811, 13815,
        46583, 46583, 13819, 13823, 13831, 13832, 13835, 13867, 13875, 13907, 13911, 0, 16368, 7072, 23562, 27522, 0, 98, 0, 0, 0, 0, 0, 0, 0, 57449, 64649, 24755, 0, 0, 0, 0, 0, 0, 0, 57344, 16526, 23312, 17413,
        27522, 0, 0, 0, 0, 0, 1, 0, 24756, 0, 50768, 17414, 27522, 0, 7544, 23562, 27522, 0, 36939, 64757, 24755, 0, 58240, 17414, 27522, 0, 58240, 17414, 27522, 0, 0, 0, 65534, 65535, 33, 0, 24576, 0, 48192, 64974,
        24755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54017, 30079, 29570, 0, 48192, 64974, 24755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54785, 30079, 29570, 0, 48192, 64974, 24755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26113, 64769, 24755, 0, 16512,
        29568, 27522, 0, 46233, 29655, 27522, 0, 21816, 14481, 27522, 0, 112, 0, 0, 0, 52520, 30079, 29570, 0, 0, 0, 57344, 16526, 64, 0, 0, 0, 53392, 30079, 29570, 0, 0, 0, 57344, 16526, 13168, 64673, 24755, 0...}
      offsets =
      set_also_gap_locks = <optimized out>
      err = DB_SUCCESS
      

      RR trace is present on SDP
      /data/results/1781871857/TBR-2423

      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:

                Time Tracking

                  Estimated:
                  Original Estimate - 0d
                  0d
                  Remaining:
                  Remaining Estimate - 0d
                  0d
                  Logged:
                  Time Spent - 2.75h
                  2.75h

                  Git Integration

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