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

Assertion `page_is_empty(block->page.frame)' failed

    XMLWordPrintable

Details

    • Can result in hang or crash

    Description

      Assertion found on 12.3

      origin/12.3 5b665f0069bada02ccd0be6bcbbc563d343667cd

      # 2026-04-28T01:49:06 [2554879] | mariadbd: /data/Server/12.3/storage/innobase/row/row0ins.cc:2842: dberr_t row_ins_clust_index_entry_low(ulint, btr_latch_mode, dict_index_t*, ulint, dtuple_t*, ulint, que_thr_t*): Assertion `page_is_empty(block->page.frame)' failed.
      

      RQG startup options

      # $RQG_HOME/rqg.pl \
      # --gendata=conf/mariadb/table_stress.zz \
      # --gendata_sql=conf/mariadb/table_stress.sql \
      # --grammar=conf/mariadb/table_stress_innodb.yy \
      # --reporters=CrashRecovery \
      # --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 \
      # --redefine=conf/mariadb/redefine_innodb_variables_enhanced.yy \
      # --mysqld=--lock-wait-timeout=15 \
      # --mysqld=--innodb-lock-wait-timeout=10 \
      # --mysqld=--loose-innodb_fast_shutdown=0 \
      # --mysqld=--sql_mode=traditional \
      # --mysqld=--innodb_file_per_table=1 \
      # --mysqld=--loose-innodb_read_only_compressed=OFF \
      # --mysqld=--innodb_stats_persistent=off \
      # --mysqld=--innodb_adaptive_hash_index=on \
      # --mysqld=--innodb_random_read_ahead=OFF \
      # --mysqld=--log-bin \
      # --mysqld=--sync-binlog=1 \
      # --mysqld=--loose-innodb_evict_tables_on_commit_debug=off \
      # --threads=3 \
      # --rr=rr record --chaos --wait \
      # --mysqld=--innodb_undo_log_truncate=OFF \
      # --mysqld=--innodb_undo_tablespaces=0 \
      # --mysqld=--innodb_rollback_on_timeout=OFF \
      # --mysqld=--innodb_page_size=64K \
      # --mysqld=--innodb-buffer-pool-size=256M \
      # --vardir_type=fast \
      # --no_mask \
      # --batch \
      # --basedir1=/Server_bin/12.3_debug_Og \
      # --basedir2=/Server_bin/12.3_debug_Og \
      # --script_debug=_nix_ \
      # --major_runid=1777364866 \
      # --minor_runid=137
      #--------
      # rqg_rr_add ->"--innodb-use-native-aio=0" "--loose-innodb-write-io-threads=2" "--loose-innodb-read-io-threads=1" "--loose-gdb" "--loose-debug-gdb"<-
      # vardir ->/dev/shm/rqg/1777364866/137<- fs_type=tmpfs
      

      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="page_is_empty(block->page.frame)", file=file@entry="/data/Server/12.3/storage/innobase/row/row0ins.cc", line=line@entry=2842, 
          function=function@entry="dberr_t row_ins_clust_index_entry_low(ulint, btr_latch_mode, dict_index_t*, ulint, dtuple_t*, ulint, que_thr_t*)") at ./assert/assert.c:94
      #6  __assert_fail (assertion="page_is_empty(block->page.frame)", file="/data/Server/12.3/storage/innobase/row/row0ins.cc", line=2842, 
          function="dberr_t row_ins_clust_index_entry_low(ulint, btr_latch_mode, dict_index_t*, ulint, dtuple_t*, ulint, que_thr_t*)") at ./assert/assert.c:103
      #7  row_ins_clust_index_entry_low (flags=flags@entry=3, mode=mode@entry=BTR_MODIFY_LEAF, index=index@entry=, n_uniq=n_uniq@entry=0, entry=entry@entry=, n_ext=n_ext@entry=0, thr=) at /data/Server/12.3/storage/innobase/row/row0ins.cc:2842
      #8  row_ins_clust_index_entry (index=index@entry=, entry=entry@entry=, thr=thr@entry=, n_ext=n_ext@entry=0) at /data/Server/12.3/storage/innobase/row/row0ins.cc:3332
      #9  row_ins_index_entry (index=, entry=, thr=thr@entry=) at /data/Server/12.3/storage/innobase/row/row0ins.cc:3472
      #10 row_ins_index_entry_step (node=node@entry=, thr=thr@entry=) at /data/Server/12.3/storage/innobase/row/row0ins.cc:3638
      #11 row_ins (node=node@entry=, thr=thr@entry=) at /data/Server/12.3/storage/innobase/row/row0ins.cc:3755
      #12 row_ins_step (thr=thr@entry=) at /data/Server/12.3/storage/innobase/row/row0ins.cc:3884
      #13 row_insert_for_mysql (mysql_rec=mysql_rec@entry="\220\246\001", prebuilt=, ins_mode=<optimized out>) at /data/Server/12.3/storage/innobase/row/row0mysql.cc:1295
      #14 ha_innobase::write_row (this=, record="\220\246\001") at /data/Server/12.3/storage/innobase/handler/ha_innodb.cc:7765
      #15 handler::ha_write_row (this=, buf="\220\246\001") at /data/Server/12.3/sql/handler.cc:8514
      #16 copy_data_between_tables (thd=thd@entry=, from=from@entry=, to=to@entry=, ignore=false, order_num=order_num@entry=0, order=order@entry=, copied=, deleted=, alter_info=, alter_ctx=, online=true, start_alter_id=0)
          at /data/Server/12.3/sql/sql_table.cc:12978
      #17 mysql_alter_table (thd=thd@entry=, new_db=new_db@entry=, new_name=<optimized out>, create_info=create_info@entry=, table_list=<optimized out>, table_list@entry=, recreate_info=recreate_info@entry=, alter_info=<optimized out>, 
          order_num=<optimized out>, order=<optimized out>, ignore=<optimized out>, if_exists=<optimized out>) at /data/Server/12.3/sql/sql_table.cc:12015
      #18 Sql_cmd_alter_table::execute (this=<optimized out>, thd=) at /data/Server/12.3/sql/sql_alter.cc:695
      #19 mysql_execute_command (thd=thd@entry=, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /data/Server/12.3/sql/sql_parse.cc:5905
      #20 mysql_parse (thd=thd@entry=, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=) at /data/Server/12.3/sql/sql_parse.cc:7944
      #21 dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=, packet=packet@entry=" ALTER TABLE t3 ADD COLUMN IF NOT EXISTS col_date DATE DEFAULT CURDATE(), ALGORITHM = COPY, LOCK = NONE  /* E_R Thread2 QNO 465 CON_ID 20 */ ", 
          packet_length=packet_length@entry=141, blocking=blocking@entry=true) at /data/Server/12.3/sql/sql_parse.cc:1898
      #22 do_command (thd=thd@entry=, blocking=blocking@entry=true) at /data/Server/12.3/sql/sql_parse.cc:1432
      #23 do_handle_one_connection (connect=<optimized out>, connect@entry=, put_in_cache=put_in_cache@entry=true) at /data/Server/12.3/sql/sql_connect.cc:1503
      #24 handle_one_connection (arg=) at /data/Server/12.3/sql/sql_connect.cc:1415
      #25 start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
      #26 clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
      (rr) frame 7
      #7  row_ins_clust_index_entry_low (flags=flags@entry=3, mode=mode@entry=BTR_MODIFY_LEAF, index=index@entry=, n_uniq=n_uniq@entry=0, entry=entry@entry=, n_ext=n_ext@entry=0, thr=) at /data/Server/12.3/storage/innobase/row/row0ins.cc:2842
      2842                            ut_ad(page_is_empty(block->page.frame));
      (rr) info args
      flags = 3
      mode = BTR_MODIFY_LEAF
      index = 
      n_uniq = 0
      entry = 
      n_ext = 0
      thr = 
      (rr) info locals
      m = {first = <error reading variable: Cannot access memory at address 0x10088>, second = false}
      pcur = {btr_cur = {page_cur = {index = , rec = "", offsets = , block = }, flag = BTR_CUR_BINARY, tree_height = 1, up_match = 0, up_bytes = 0, low_match = 0, low_bytes = 0, n_bytes_fields = 0, fold = 0, rtr_info = }, 
        latch_mode = BTR_MODIFY_LEAF, old_rec = , old_n_core_fields = 0, old_n_fields = 0, rel_pos = 0, old_page_id = {m_id = 0}, modify_clock = 0, pos_state = BTR_PCUR_IS_POSITIONED, search_mode = PAGE_CUR_LE, trx_if_known = , old_rec_buf = , 
        buf_size = 0}
      err = DB_SUCCESS
      big_rec = 
      auto_inc = 0
      offsets_heap = 
      offsets_ = {300, 8196, 31025, 0, 27488, 12911, 3601, 0, 27440, 12911, 3601, 0, 1672, 15204, 5893, 0, 28800, 15229, 5893, 0, 1856, 15204, 5893, 0, 35200, 8196, 31025, 0, 35200, 8196, 31025, 0, 9048, 8576, 25424, 0, 5051, 7919, 22117, 0, 
        27592, 12911, 3601, 0, 54976, 12911, 3601, 0, 64912, 8207, 31025, 0, 0, 0, 0, 0, 0, 0, 5893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27520, 12911, 3601, 0, 64912, 8207, 31025, 0, 0, 0, 0, 0, 0, 0, 5893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64769, 8207, 0, 0, 0, 
        0, 0, 0, 0, 0, 0, 0, 1, 0, 31025, 0 <repeats 13 times>, 29088, 12911, 3601, 0, 0, 49152, 0, 0, 9024, 8576, 25424, 0, 18160, 4199, 20452, 0, 27592, 12911, 3601, 0, 60929, 7907, 22117, 0, 29104, 12911, 3601, 0, 29368, 12911, 3601, 0, 29344, 
        12911, 3601, 0, 56762, 7918, 22117, 0, 29024, 12911, 3601, 0, 30000, 12911, 3601, 0, 17872, 4199, 20452, 0, 56979, 7918, 22117, 0, 29024, 12911, 3601, 0, 50499, 7918, 22117, 0, 9024, 8576, 25424, 0, 6114, 8624, 25424, 0, 54264, 12319, 
        9677, 0, 6114, 0, 0, 0, 27720, 12911, 3601...}
      offsets = 
      trx = 
      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 = 2326050487, trx = , m_user_space = , 
        m_user_space_id = 155, m_memo = {<small_vector_base> = {BeginX = , Size = 1, Capacity = 16}, small = {{object = , type = MTR_MEMO_PAGE_X_FIX}, {object = , type = MTR_MEMO_PAGE_X_FIX}, {object = , type = 2779096485} <repeats 14 times>}}, 
        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 = '\000' <repeats 16 times>, " \003\200\033\005\006+\b\001\001\000\001\262", '\000' <repeats 14 times>, "\0342\000^\021\000\003%1\017\025", '\000' <repeats 18 times>, "\320no2\021\016\000\000\000\000\000\000\020\000\000\000", '\24
      5' <repeats 232 times>..., m_used = 0}}, m_commit_lsn = 0, m_freed_space = , m_freed_pages = , m_binlog_page = }
      block = 
      __PRETTY_FUNCTION__ = "dberr_t row_ins_clust_index_entry_low(ulint, btr_latch_mode, dict_index_t*, ulint, dtuple_t*, ulint, que_thr_t*)"
      

      RR trace is present on SDP:-
      {{ /data/results/1777364866/TBR-2406}}

      Attachments

        Activity

          People

            thiru Thirunarayanan Balathandayuthapani
            saahil Saahil Alam
            Votes:
            0 Vote for this issue
            Watchers:
            1 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.