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

mariabackup crashes if my.cnf has a plugin-load command

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 10.2.16
    • 10.2.18, 10.3.10
    • Backup
    • None

    Description

      I have a my.cnf like so:

      [mysqld]
      skip-slave-start
       
      bind-address=0.0.0.0
      datadir=/home/ubuntu/data-mariadb-10.2
      plugin-dir=/home/ubuntu/mariadb-10.2/storage/rocksdb
      plugin-load=ha_rocksdb.so
       
      log-error
      lc_messages_dir=/home/ubuntu/mariadb-10.2/sql/share
       
      default-storage-engine=rocksdb
      default-tmp-storage-engine=MyISAM
       
      log-bin=pslp
      binlog-format=row
      tmpdir=/tmp
      port=3306
      socket=/tmp/mysql.sock
      gdb
      server-id=12
      

      I ran mariabackup --backup to create a backup:

      ./mariadb-10.2/extra/mariabackup/mariabackup --defaults-file=~/my-mariadb-10.2.cnf --user=root --socket=/tmp/mysql.sock  --backup
      

      Then I run mariabackup --prepare

      ./mariadb-10.2/extra/mariabackup/mariabackup --defaults-file=~/my-mariadb-10.2.cnf --user=root --socket=/tmp/mysql.sock  --prepare
      

      and it crashes:

      Program received signal SIGSEGV, Segmentation fault.
      0x0000000000000000 in ?? ()
      (gdb) wher
      #0  0x0000000000000000 in ?? ()
      #1  0x00005555564fe40e in my_hash_insert (info=0x5555570ed4a0 <ignore_db_dirs_hash>, record=0x555557ba0180 "\220\001\272WUU") at /home/ubuntu/mariadb-10.2/mysys/hash.c:391
      #2  0x0000555555c7ce0f in ignore_db_dirs_append (dirname_arg=0x7ffff50a1904 "#rocksdb") at /home/ubuntu/mariadb-10.2/sql/sql_show.cc:813
      #3  0x00007ffff4bdef1d in myrocks::rocksdb_init_func (p=0x555557bd39c0) at /home/ubuntu/mariadb-10.2/storage/rocksdb/ha_rocksdb.cc:4437
      #4  0x0000555555e57b2d in ha_initialize_handlerton (plugin=0x55555799f1f8) at /home/ubuntu/mariadb-10.2/sql/handler.cc:520
      #5  0x0000555555c06b38 in plugin_initialize (tmp_root=0x7fffffffd460, plugin=0x55555799f1f8, argc=0x7fffffffd7bc, argv=0x5555579990a0, options_only=false)
          at /home/ubuntu/mariadb-10.2/sql/sql_plugin.cc:1416
      #6  0x0000555555c07765 in plugin_init (argc=0x7fffffffd7bc, argv=0x5555579990a0, flags=2) at /home/ubuntu/mariadb-10.2/sql/sql_plugin.cc:1697
      #7  0x0000555555a5d577 in encryption_plugin_init (argc=15, argv=0x5555579990a0) at /home/ubuntu/mariadb-10.2/extra/mariabackup/encryption_plugin.cc:155
      #8  0x0000555555a5d4c8 in encryption_plugin_prepare_init (argc=14, argv=0x55555799f018) at /home/ubuntu/mariadb-10.2/extra/mariabackup/encryption_plugin.cc:143
      #9  0x0000555555a408a8 in xtrabackup_prepare_func (argv=0x55555799f018) at /home/ubuntu/mariadb-10.2/extra/mariabackup/xtrabackup.cc:4976
      #10 0x0000555555a42a8d in main_low (argv=0x55555799f018) at /home/ubuntu/mariadb-10.2/extra/mariabackup/xtrabackup.cc:5793
      #11 0x0000555555a4229f in main (argc=5, argv=0x7fffffffe4f8) at /home/ubuntu/mariadb-10.2/extra/mariabackup/xtrabackup.cc:5586
      

      Attachments

        Activity

          It crashes because ignore_db_dirs_hash is not initialized:

          (gdb) p ignore_db_dirs_hash
          $3 = {key_offset = 0, key_length = 0, blength = 0, records = 0, flags = 0, array = {buffer = 0x0, elements = 0, max_element = 0, alloc_increment = 0, size_of_element = 0, 
              malloc_flags = 0}, get_key = 0x0, hash_function = 0x0, free = 0x0, charset = 0x0}
          

          psergei Sergei Petrunia added a comment - It crashes because ignore_db_dirs_hash is not initialized: (gdb) p ignore_db_dirs_hash $3 = {key_offset = 0, key_length = 0, blength = 0, records = 0, flags = 0, array = {buffer = 0x0, elements = 0, max_element = 0, alloc_increment = 0, size_of_element = 0, malloc_flags = 0}, get_key = 0x0, hash_function = 0x0, free = 0x0, charset = 0x0}
          psergei Sergei Petrunia added a comment - - edited

          Takeaways from discussion with wlad:

          • mariabackup --prepare starts a haf-featured server in order to apply InnoDB's redo log.
          • It may need to load encryption plugins
          • However it does not need to load other kinds of plugins (e.g. MyRocks plugin).
          • Starting MyRocks on a partially-initialized server causes a crash.

          I could run mariabackup -prepare without -defaults-file and it worked:

          ./mariadb-10.2/extra/mariabackup/mariabackup  --user=root --socket=/tmp/mysql.sock  --prepare
          

          psergei Sergei Petrunia added a comment - - edited Takeaways from discussion with wlad : mariabackup --prepare starts a haf-featured server in order to apply InnoDB's redo log. It may need to load encryption plugins However it does not need to load other kinds of plugins (e.g. MyRocks plugin). Starting MyRocks on a partially-initialized server causes a crash. I could run mariabackup - prepare without -defaults-file and it worked: ./mariadb-10.2/extra/mariabackup/mariabackup --user=root --socket=/tmp/mysql.sock --prepare

          People

            wlad Vladislav Vaintroub
            psergei Sergei Petrunia
            Votes:
            0 Vote for this issue
            Watchers:
            2 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.