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

Broken recovery of SET GLOBAL innodb_log_archive=OFF on PMEM

    XMLWordPrintable

Details

    • Can result in hang or crash

    Description

      --source include/have_innodb.inc
      --let $lsn= query_get_value(SHOW STATUS LIKE 'Innodb_lsn_current', Value, 1)
      --let S2_LSN= $lsn
      --source include/kill_mysqld.inc
      --perl
      my $f= "$ENV{MARIADB_DATADIR}/ib_logfile0";
      open(my $h, '<', $f) or die "$f: $!";
      binmode $h;
      read($h, my $b, 16) == 16 or die;
      close $h;
      my $first= unpack('Q>', substr($b, 8, 8));
      my $lsn= $ENV{S2_LSN};
      my $start= $lsn - ($lsn - $first) % ((-s $f) - 12288);
      rename($f, sprintf("%s/ib_%016x.log", $ENV{MARIADB_DATADIR}, $start)) or die "rename: $!";
      EOF
      --source include/start_mysqld.inc
      CREATE TABLE t (a INT PRIMARY KEY) ENGINE=InnoDB;
      DROP TABLE t;
      SET GLOBAL innodb_log_archive=OFF;
      

      Leads to :-

      CS 13.0.2 620a4b5624222048fece7fe1789978ae0675cae2 (Debug, Clang 22.1.8-20260621) Build 12/10/2026

      mariadbd: /test/13.0_dbg/storage/innobase/mtr/mtr0mtr.cc:1343: static std::pair<lsn_t, lsn_t> mtr_t::finish_writer(mtr_t *, size_t) [how = log_t::ARCHIVED_MMAP]: Assertion `mode == log_t::WRITE_NORMAL || log_sys.archive == (mode == log_t::ARCHIVED_MMAP)' failed.
      

      CS 13.0.2 620a4b5624222048fece7fe1789978ae0675cae2 (Debug, Clang 22.1.8-20260621) Build 12/10/2026

      Core was generated by `/test/MD121026-mariadb-13.0.2-linux-x86_64-dbg/bin/mariadbd --defaults-group-su'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>)at ./nptl/pthread_kill.c:44
       
      [Current thread is 1 (LWP 4189029)]
      (gdb) bt
      #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  0x000072619644527e in __GI_raise (sig=sig@entry=6)at ../sysdeps/posix/raise.c:26
      #4  0x00007261964288ff in __GI_abort () at ./stdlib/abort.c:79
      #5  0x000072619642881b in __assert_fail_base (fmt=0x7261965d1208 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x654c38d6bc62 "mode == log_t::WRITE_NORMAL || log_sys.archive == (mode == log_t::ARCHIVED_MMAP)", file=file@entry=0x654c38d69fcf "/test/13.0_dbg/storage/innobase/mtr/mtr0mtr.cc", line=line@entry=1343, function=function@entry=0x654c38d6bb8f "static std::pair<lsn_t, lsn_t> mtr_t::finish_writer(mtr_t *, size_t) [how = log_t::ARCHIVED_MMAP]")at ./assert/assert.c:96
      #6  0x000072619643b517 in __assert_fail (assertion=0x654c38d6bc62 "mode == log_t::WRITE_NORMAL || log_sys.archive == (mode == log_t::ARCHIVED_MMAP)", file=0x654c38d69fcf "/test/13.0_dbg/storage/innobase/mtr/mtr0mtr.cc", line=1343, function=0x654c38d6bb8f "static std::pair<lsn_t, lsn_t> mtr_t::finish_writer(mtr_t *, size_t) [how = log_t::ARCHIVED_MMAP]") at ./assert/assert.c:105
      #7  0x0000654c3850eecd in mtr_t::finish_writer<(log_t::write)2> (mtr=0x726194069698, len=21)at /test/13.0_dbg/storage/innobase/mtr/mtr0mtr.cc:1342
      #8  0x0000654c385127a1 in mtr_t::finish_write (this=0x726194069698, len=21)at include/mtr0mtr.h:748
      #9  0x0000654c385070fa in mtr_t::do_write (this=0x726194069698)at /test/13.0_dbg/storage/innobase/mtr/mtr0mtr.cc:1220
      #10 0x0000654c38506911 in mtr_t::commit (this=0x726194069698)at /test/13.0_dbg/storage/innobase/mtr/mtr0mtr.cc:553
      #11 0x0000654c3873c077 in dict_hdr_get_new_id (trx=0x7261952a7680, table_id=0x6a60ac0345a8, index_id=0x0, space_id=0x6a60ac0345e0)at /test/13.0_dbg/storage/innobase/dict/dict0boot.cc:97
      #12 0x0000654c387401ad in dict_build_table_def_step (thr=0x6a60ac02bb38, node=0x6a60ac034238)at /test/13.0_dbg/storage/innobase/dict/dict0crea.cc:351
      #13 0x0000654c3873fad6 in dict_create_table_step (thr=0x6a60ac02bb38)at /test/13.0_dbg/storage/innobase/dict/dict0crea.cc:1025
      #14 0x0000654c385699ef in que_thr_step (thr=0x6a60ac02bb38)at /test/13.0_dbg/storage/innobase/que/que0que.cc:561
      #15 0x0000654c385690a6 in que_run_threads_low (thr=0x6a60ac02bb38)at /test/13.0_dbg/storage/innobase/que/que0que.cc:609
      #16 0x0000654c38568ec7 in que_run_threads (thr=0x6a60ac02bb38)at /test/13.0_dbg/storage/innobase/que/que0que.cc:629
      #17 0x0000654c385d6ad7 in row_create_table_for_mysql (table=0x6a60ac0345a8, trx=0x7261952a7680)at /test/13.0_dbg/storage/innobase/row/row0mysql.cc:2079
      #18 0x0000654c38406b62 in create_table_info_t::create_table_def (this=0x72619406a628)at /test/13.0_dbg/storage/innobase/handler/ha_innodb.cc:10889
      #19 0x0000654c383e5855 in create_table_info_t::create_table (this=0x72619406a628, create_fk=true, strict=true)at /test/13.0_dbg/storage/innobase/handler/ha_innodb.cc:12807
      #20 0x0000654c383d3b5e in ha_innobase::create (this=0x6a60ac0298c0, name=0x72619406d820 "./test/t", form=0x72619406add0, create_info=0x72619406dfa8, file_per_table=true, trx=0x7261952a7680)at /test/13.0_dbg/storage/innobase/handler/ha_innodb.cc:13317
      #21 0x0000654c383e6d77 in ha_innobase::create (this=0x6a60ac0298c0, name=0x72619406d820 "./test/t", form=0x72619406add0, create_info=0x72619406dfa8)at /test/13.0_dbg/storage/innobase/handler/ha_innodb.cc:13370
      #22 0x0000654c3800a512 in handler::ha_create (this=0x6a60ac0298c0, name=0x72619406d820 "./test/t", form=0x72619406add0, info_arg=0x72619406dfa8) at /test/13.0_dbg/sql/handler.cc:6288
      #23 0x0000654c3800c400 in ha_create_table_from_share (thd=0x6a60ac000d60, share=0x72619406c130, create_info=0x72619406dfa8, ref_length=0x72619406b294) at /test/13.0_dbg/sql/handler.cc:6748
      #24 0x0000654c3800bcc5 in ha_create_table (thd=0x6a60ac000d60, path=0x72619406d820 "./test/t", db=0x6a60ac019610 "test", table_name=0x6a60ac0195d0 "t", create_info=0x72619406dfa8, frm=0x72619406d7b0, skip_frm_file=false)at /test/13.0_dbg/sql/handler.cc:6821
      #25 0x0000654c37d04943 in create_table_impl (thd=0x6a60ac000d60, ddl_log_state_create=0x72619406db88, ddl_log_state_rm=0x72619406db68, orig_db=@0x6a60ac019650: {<Lex_ident_fs> = {<Lex_ident<Compare_table_names>> = {<Lex_cstring> = {<st_mysql_const_lex_string> = {str = 0x6a60ac019610 "test", length = 4}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, orig_table_name=@0x6a60ac019660: {<Lex_ident_fs> = {<Lex_ident<Compare_table_names>> = {<Lex_cstring> = {<st_mysql_const_lex_string> = {str = 0x6a60ac0195d0 "t", length = 1}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, db=@0x6a60ac019650: {str = 0x6a60ac019610 "test", length = 4}, table_name=@0x6a60ac019660: {str = 0x6a60ac0195d0 "t", length = 1}, path=@0x72619406d798: {str = 0x72619406d820 "./test/t", length = 8}, options={m_options = DDL_options_st::OPT_NONE}, create_info=0x72619406dfa8, alter_info=0x72619406de30, create_table_mode=0, is_trans=0x72619406db5f, key_info=0x72619406d7e0, key_count=0x72619406d7dc, frm=0x72619406d7b0)at /test/13.0_dbg/sql/sql_table.cc:4982
      #26 0x0000654c37d03ad5 in mysql_create_table_no_lock (thd=0x6a60ac000d60, ddl_log_state_create=0x72619406db88, ddl_log_state_rm=0x72619406db68, create_info=0x72619406dfa8, alter_info=0x72619406de30, is_trans=0x72619406db5f, create_table_mode=0, table_list=0x6a60ac019630)at /test/13.0_dbg/sql/sql_table.cc:5083
      #27 0x0000654c37d1db6d in mysql_create_table (thd=0x6a60ac000d60, create_table=0x6a60ac019630, create_info=0x72619406dfa8, alter_info=0x72619406de30) at /test/13.0_dbg/sql/sql_table.cc:5329
      #28 0x0000654c37d1c1ce in Sql_cmd_create_table_like::execute (this=0x6a60ac019590, thd=0x6a60ac000d60)at /test/13.0_dbg/sql/sql_table.cc:13926
      #29 0x0000654c37bff974 in mysql_execute_command (thd=0x6a60ac000d60, is_called_from_prepared_stmt=false) at /test/13.0_dbg/sql/sql_parse.cc:5892
      #30 0x0000654c37bf0ba8 in mysql_parse (thd=0x6a60ac000d60, rawbuf=0x6a60ac0194c0 "CREATE TABLE t (a INT PRIMARY KEY) ENGINE=InnoDB", length=48, parser_state=0x72619406f9f0)at /test/13.0_dbg/sql/sql_parse.cc:7930
      #31 0x0000654c37bee38e in dispatch_command (command=COM_QUERY, thd=0x6a60ac000d60, packet=0x6a60ac00b6d1 "CREATE TABLE t (a INT PRIMARY KEY) ENGINE=InnoDB", packet_length=48, blocking=true) at /test/13.0_dbg/sql/sql_parse.cc:1903
      #32 0x0000654c37bf162a in do_command (thd=0x6a60ac000d60, blocking=true)at /test/13.0_dbg/sql/sql_parse.cc:1437
      #33 0x0000654c37dc420e in do_handle_one_connection (connect=0x654c6c4c4700, put_in_cache=true) at /test/13.0_dbg/sql/sql_connect.cc:1514
      #34 0x0000654c37dc3ff1 in handle_one_connection (arg=0x654c6c4c4700)at /test/13.0_dbg/sql/sql_connect.cc:1426
      #35 0x000072619649cb84 in start_thread (arg=<optimized out>)at ./nptl/pthread_create.c:447
      #36 0x0000726196529ecc in clone3 ()at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
      

      ./mtr test --mem

      Attachments

        Issue Links

          Activity

            People

              marko Marko Mäkelä
              saahil Saahil Alam
              Marko Mäkelä Marko Mäkelä
              Thirunarayanan Balathandayuthapani Thirunarayanan Balathandayuthapani
              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 - 7h
                  7h

                  Git Integration

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