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

MariaDB server crashes after using ROLLBACK TO when encrypt_tmp_files=ON

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 10.1, 10.2
    • Fix Version/s: 10.1.32, 10.2.13
    • Component/s: Encryption
    • Labels:
      None
    • Environment:
      CentOS 7 64-bit
    • Sprint:
      10.2.13

      Description

      On a server started with encrypt-tmp-files=ON and binlog-format=row
      ROLLBACK TO sp
      causes server to crash in the follow-up COMMIT

      CREATE TABLE t (a TEXT) ENGINE = InnoDB;
      BEGIN;
        INSERT INTO t VALUES (REPEAT('a', 20000));
        SAVEPOINT sp;
        INSERT INTO t VALUES (REPEAT('a', 20000));
        ROLLBACK TO sp;
      COMMIT;
      

      #0  0x00007ffff63011f7 in raise () from /lib64/libc.so.6
      #1  0x00007ffff63028e8 in abort () from /lib64/libc.so.6
      #2  0x00007ffff62fa266 in __assert_fail_base () from /lib64/libc.so.6
      #3  0x00007ffff62fa312 in __assert_fail () from /lib64/libc.so.6
      #4  0x0000555555dce308 in MYSQL_BIN_LOG::write_cache (this=this@entry=0x555556edc200 <mysql_bin_log>, thd=<optimized out>, cache=cache@entry=0x7fff9402ffc8) at /mnt/hgfs/repos/mariadb-server/sql/log.cc:7051
      #5  0x0000555555dcea9e in MYSQL_BIN_LOG::write_transaction_or_stmt (this=this@entry=0x555556edc200 <mysql_bin_log>, entry=entry@entry=0x7fffec271110, commit_id=commit_id@entry=0) at /mnt/hgfs/repos/mariadb-server/sql/log.cc:8059
      #6  0x0000555555dd6c60 in MYSQL_BIN_LOG::trx_group_commit_leader (this=this@entry=0x555556edc200 <mysql_bin_log>, leader=leader@entry=0x7fffec271110) at /mnt/hgfs/repos/mariadb-server/sql/log.cc:7796
      #7  0x0000555555dd7469 in MYSQL_BIN_LOG::write_transaction_to_binlog_events (this=this@entry=0x555556edc200 <mysql_bin_log>, entry=entry@entry=0x7fffec271110) at /mnt/hgfs/repos/mariadb-server/sql/log.cc:7593
      #8  0x0000555555dd79f2 in MYSQL_BIN_LOG::write_transaction_to_binlog (this=this@entry=0x555556edc200 <mysql_bin_log>, thd=thd@entry=0x7fff94000b00, cache_mngr=cache_mngr@entry=0x7fff9402fe20, end_ev=end_ev@entry=0x7fffec2712a0, all=all@entry=true, using_stmt_cache=using_stmt_cache@entry=true, using_trx_cache=using_trx_cache@entry=true) at /mnt/hgfs/repos/mariadb-server/sql/log.cc:7267
      #9  0x0000555555dd7ba2 in binlog_flush_cache (thd=thd@entry=0x7fff94000b00, cache_mngr=cache_mngr@entry=0x7fff9402fe20, end_ev=end_ev@entry=0x7fffec2712a0, all=all@entry=true, using_stmt=using_stmt@entry=true, using_trx=using_trx@entry=true) at /mnt/hgfs/repos/mariadb-server/sql/log.cc:1785
      #10 0x0000555555dd7dc8 in binlog_commit_flush_xid_caches (thd=thd@entry=0x7fff94000b00, cache_mngr=cache_mngr@entry=0x7fff9402fe20, all=all@entry=true, xid=xid@entry=9) at /mnt/hgfs/repos/mariadb-server/sql/log.cc:1891
      #11 0x0000555555dd7fde in MYSQL_BIN_LOG::log_and_order (this=<optimized out>, thd=0x7fff94000b00, xid=9, all=<optimized out>, need_prepare_ordered=<optimized out>, need_commit_ordered=<optimized out>) at /mnt/hgfs/repos/mariadb-server/sql/log.cc:9530
      #12 0x0000555555cd3d59 in ha_commit_trans (thd=thd@entry=0x7fff94000b00, all=all@entry=true) at /mnt/hgfs/repos/mariadb-server/sql/handler.cc:1465
      #13 0x0000555555bc4dd7 in trans_commit (thd=thd@entry=0x7fff94000b00) at /mnt/hgfs/repos/mariadb-server/sql/transaction.cc:306
      #14 0x0000555555ac745b in mysql_execute_command (thd=thd@entry=0x7fff94000b00) at /mnt/hgfs/repos/mariadb-server/sql/sql_parse.cc:5756
      #15 0x0000555555aca3bd in mysql_parse (thd=thd@entry=0x7fff94000b00, rawbuf=<optimized out>, length=6, parser_state=parser_state@entry=0x7fffec273510, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /mnt/hgfs/repos/mariadb-server/sql/sql_parse.cc:7966
      #16 0x0000555555acc20f in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7fff94000b00, packet=packet@entry=0x7fff9400b161 "COMMIT", packet_length=packet_length@entry=6, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /mnt/hgfs/repos/mariadb-server/sql/sql_parse.cc:1824
      #17 0x0000555555ace3d6 in do_command (thd=0x7fff94000b00) at /mnt/hgfs/repos/mariadb-server/sql/sql_parse.cc:1369
      #18 0x0000555555bb7828 in do_handle_one_connection (connect=connect@entry=0x555557ec5390) at /mnt/hgfs/repos/mariadb-server/sql/sql_connect.cc:1420
      #19 0x0000555555bb7955 in handle_one_connection (arg=arg@entry=0x555557ec5390) at /mnt/hgfs/repos/mariadb-server/sql/sql_connect.cc:1326
      #20 0x000055555636dd8a in pfs_spawn_thread (arg=0x555557ecdb90) at /mnt/hgfs/repos/mariadb-server/storage/perfschema/pfs.cc:1863
      #21 0x00007ffff7bc6e25 in start_thread () from /lib64/libpthread.so.0
      #22 0x00007ffff63c434d in clone () from /lib64/libc.so.6
      

      Steps to reproduce:

      1. put the attached files `a000.test` and `a000-master.opt` into `encryption` MTR test suite (`mysql-test/suite/encryption/t`)
      2. run `./mysql-test/mtr --debug-server encryption.a000`

        Attachments

        1. a000.test
          0.4 kB
        2. a000-master.opt
          0.0 kB

          Issue Links

            Activity

              People

              • Assignee:
                serg Sergei Golubchik
                Reporter:
                ysorokin Yura Sorokin
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: