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

trx_t::lock.was_chosen_as_deadlock_victim race in lock_wait_end()

Details

    Description

      I used my fuzzing tool to test Mariadb , and found a transaction-related bug that can result in an abortion.

      Mariadb installation:
      1) cd mariadb-10.8.3
      2) mkdir build; cd build
      3) cmake .. -DCMAKE_BUILD_TYPE=Debug
      4) make -j12 && sudo make install

      Test driver compilation:
      Note: "mariadb_reproduce" sets up several transactions and execute SQL statements according to /tmp/mysql_bk.sql, /tmp/stmts.sql and /tmp/tid.txt
      1) g++ -I/usr/local/mysql/include/ mariadb_reproduce.cc -o mariadb_reproduce -lmysqlclient -g

      Reproduce the bug:
      1) cp mysql_bk.sql /tmp; cp stmts.sql /tmp; cp tid.txt /tmp
      2) export ASAN_OPTIONS=detect_leaks=0
      3) /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql &
      4) bash reproduce.sh # "reproduce.sh" repeatedly executes "mariadb_reproduce" 100 times. "reproduce.sh" and "mariadb_reproduce" should be in the same directory

      I have simplified the content of fuzz.sql, and I hope fuzz.sql can help you reproduce and fix the bug. In addition, I attached the failure report (which has its stack trace).

      This bug seems related to concurrency and it cannot be reproduced stably. However, it did occur and crashed the server in my test. To stably trigger this bug, I use "reproduce.sh" to execute "mariadb_reproduce" 100 times. Hope you could reproduce the bug successfully

      Attachments

        1. bug_report.txt
          6 kB
        2. mariadb_reproduce.cc
          14 kB
        3. MDEV-29081.test
          4 kB
        4. mysql_bk.sql
          7 kB
        5. reproduce.sh
          0.1 kB
        6. stmts.sql
          18 kB
        7. tid.txt
          0.1 kB

        Issue Links

          Activity

            Zuming Jiang Zuming Jiang created issue -
            Zuming Jiang Zuming Jiang made changes -
            Field Original Value New Value
            Attachment bug_report.txt [ 64577 ]
            alice Alice Sherepa made changes -
            serg Sergei Golubchik made changes -
            Fix Version/s N/A [ 14700 ]
            Resolution Duplicate [ 3 ]
            Status Open [ 1 ] Closed [ 6 ]
            marko Marko Mäkelä made changes -
            Assignee Marko Mäkelä [ marko ]
            Resolution Duplicate [ 3 ]
            Status Closed [ 6 ] Stalled [ 10000 ]
            marko Marko Mäkelä made changes -
            Fix Version/s 10.6 [ 24028 ]
            Fix Version/s 10.7 [ 24805 ]
            Fix Version/s 10.8 [ 26121 ]
            Fix Version/s 10.9 [ 26905 ]
            Fix Version/s 10.10 [ 27530 ]
            Fix Version/s N/A [ 14700 ]
            marko Marko Mäkelä made changes -
            Status Stalled [ 10000 ] In Progress [ 3 ]
            marko Marko Mäkelä made changes -
            Assignee Marko Mäkelä [ marko ] Vladislav Lesin [ vlad.lesin ]
            vlad.lesin Vladislav Lesin made changes -
            Attachment MDEV-29081.test [ 65015 ]
            vlad.lesin Vladislav Lesin made changes -
            Attachment MDEV-29081.test [ 65015 ]
            vlad.lesin Vladislav Lesin made changes -
            Attachment MDEV-29081.test [ 65016 ]
            vlad.lesin Vladislav Lesin made changes -
            Attachment MDEV-29081.test [ 65016 ]
            vlad.lesin Vladislav Lesin made changes -
            Attachment MDEV-29081.test [ 65026 ]
            vlad.lesin Vladislav Lesin made changes -
            Summary Transaction-related assertions in lock0lock.cc:5994 trx_t::lock.was_chosen_as_deadlock_victim race
            vlad.lesin Vladislav Lesin made changes -
            Summary trx_t::lock.was_chosen_as_deadlock_victim race trx_t::lock.was_chosen_as_deadlock_victim race in lock_wait_end()
            marko Marko Mäkelä made changes -
            vlad.lesin Vladislav Lesin made changes -
            Component/s Storage Engine - InnoDB [ 10129 ]
            Fix Version/s 10.6.10 [ 28407 ]
            Fix Version/s 10.7.6 [ 28408 ]
            Fix Version/s 10.8.5 [ 28308 ]
            Fix Version/s 10.9.3 [ 28409 ]
            Fix Version/s 10.10.2 [ 28410 ]
            Fix Version/s 10.11.0 [ 28411 ]
            Fix Version/s 10.6 [ 24028 ]
            Fix Version/s 10.7 [ 24805 ]
            Fix Version/s 10.8 [ 26121 ]
            Fix Version/s 10.9 [ 26905 ]
            Fix Version/s 10.10 [ 27530 ]
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Closed [ 6 ]
            vlad.lesin Vladislav Lesin made changes -
            vlad.lesin Vladislav Lesin made changes -

            People

              vlad.lesin Vladislav Lesin
              Zuming Jiang Zuming Jiang
              Votes:
              0 Vote for this issue
              Watchers:
              7 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.