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

Assertion `mode == 9 ? __builtin_expect(recv_sys.recovery_on, (0)) || log_sys.get_lsn() < 120000 : !__builtin_expect(recv_sys.recovery_on, (0)) || recv_sys.after_apply' failed in buf_page_get_gen

Details

    Description

      Assertion if I'm trying to start server on datadir from Mysql 5.7.44 (attached)

      mysqld: //git/11.4/src/storage/innobase/buf/buf0buf.cc:2611: buf_block_t* buf_page_get_gen(page_id_t, ulint, ulint, buf_block_t*, ulint, mtr_t*, dberr_t*, bool*): Assertion `mode == 9 ? __builtin_expect(recv_sys.recovery_on, (0)) || log_sys.get_lsn() < 120000 : !__builtin_expect(recv_sys.recovery_on, (0)) || recv_sys.after_apply' failed.
      240805 18:15:02 [ERROR] mysqld got signal 6 ;
       
      Server version: 11.4.3-MariaDB-debug source revision: 2ee061c2585430ce0b94085813dffb61355eac15
       
      stack_bottom = 0x0 thread_stack 0xb00000
      sanitizer_common/sanitizer_common_interceptors.inc:4022(__interceptor_backtrace.part.0)[0x7fde085cad40]
      mysys/stacktrace.c:215(my_print_stacktrace)[0x5628af227975]
      sql/signal_handler.cc:239(handle_fatal_signal)[0x5628addeee45]
      sigaction.c:0(__restore_rt)[0x7fde080e9420]
      /lib/x86_64-linux-gnu/libc.so.6(+0x22729)[0x7fde07bb1729]
      /lib/x86_64-linux-gnu/libc.so.6(+0x33fd6)[0x7fde07bc2fd6]
      buf/buf0buf.cc:2614(buf_page_get_gen(page_id_t, unsigned long, unsigned long, buf_block_t*, unsigned long, mtr_t*, dberr_t*, bool*))[0x5628aedf5222]
      log/log0recv.cc:3675(recv_sys_t::recover(page_id_t, mtr_t*, dberr_t*))[0x5628ae9c306f]
      dict/dict0boot.cc:224(dict_boot())[0x5628aee61863]
      srv/srv0start.cc:1554(srv_start(bool))[0x5628aeca5e7d]
      handler/ha_innodb.cc:4214(innodb_init(void*))[0x5628ae7d57f3]
      sql/handler.cc:695(ha_initialize_handlerton(st_plugin_int*))[0x5628addf8e69]
      sql/sql_plugin.cc:1454(plugin_do_initialize(st_plugin_int*, unsigned int&))[0x5628ad4edeca]
      sql/sql_plugin.cc:1507(plugin_initialize(st_mem_root*, st_plugin_int*, int*, char**, bool))[0x5628ad4ee865]
      sql/sql_plugin.cc:1765(plugin_init(int*, char**, int))[0x5628ad4f0390]
      sql/mysqld.cc:5238(init_server_components())[0x5628ad0a717b]
      sql/mysqld.cc:5904(mysqld_main(int, char**))[0x5628ad0a95c3]
      sql/main.cc:34(main)[0x5628ad09143d]
      /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7fde07bb3083]
      //git/11.4/bld/sql//mysqld(_start+0x2e)[0x5628ad09135e]
      

      Attachments

        Issue Links

          Activity

            In MDEV-34426, this assertion expression was relaxed so that on InnoDB bootstrap, we could write up to 120,000 bytes of log. I may have to think of a different solution while retaining a debug check.

            marko Marko Mäkelä added a comment - In MDEV-34426 , this assertion expression was relaxed so that on InnoDB bootstrap, we could write up to 120,000 bytes of log. I may have to think of a different solution while retaining a debug check.

            On an upgrade from an older-format ib_logfile* (MySQL 5.7 uses a similar format as MariaDB 10.2, 10.3, 10.4) it should be possible to relax the assertion with another condition. It should be possible to cover this scenario by extending the test innodb.log_corruption.

            marko Marko Mäkelä added a comment - On an upgrade from an older-format ib_logfile* (MySQL 5.7 uses a similar format as MariaDB 10.2, 10.3, 10.4) it should be possible to relax the assertion with another condition. It should be possible to cover this scenario by extending the test innodb.log_corruption .

            Thanks for fixing the debug specific issue. Please go ahead.

            We might want to eliminate the assert for checking LSN altogether. I checked the reasoning but It doesn't seem to be good validating against some constant value. Also, checking for LSN in buf_page_get_gen looks a bit misplaced.

            debarun Debarun Banerjee added a comment - Thanks for fixing the debug specific issue. Please go ahead. We might want to eliminate the assert for checking LSN altogether. I checked the reasoning but It doesn't seem to be good validating against some constant value. Also, checking for LSN in buf_page_get_gen looks a bit misplaced.

            People

              marko Marko Mäkelä
              alice Alice Sherepa
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

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