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
{"report":{"fcp":1353,"ttfb":525.7999999523163,"pageVisibility":"visible","entityId":112658,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"b687ac81-afad-4a46-a95f-2dd2393c50e2","navigationType":0,"readyForUser":1498.2999999523163,"redirectCount":0,"resourceLoadedEnd":1067.5999999046326,"resourceLoadedStart":532.1999999284744,"resourceTiming":[{"duration":224.39999997615814,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":532.1999999284744,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":532.1999999284744,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":756.5999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":224.60000002384186,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true&whisper-enabled=true","startTime":532.3999999761581,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":532.3999999761581,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":757,"responseStart":0,"secureConnectionStart":0},{"duration":416,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":532.6999999284744,"connectEnd":532.6999999284744,"connectStart":532.6999999284744,"domainLookupEnd":532.6999999284744,"domainLookupStart":532.6999999284744,"fetchStart":532.6999999284744,"redirectEnd":0,"redirectStart":0,"requestStart":757.3999999761581,"responseEnd":948.6999999284744,"responseStart":787.8999999761581,"secureConnectionStart":532.6999999284744},{"duration":534.7999999523163,"initiatorType":"script","name":"https://jira.mariadb.org/s/2d8175ec2fa4c816e8023260bd8c1786-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true&whisper-enabled=true","startTime":532.7999999523163,"connectEnd":532.7999999523163,"connectStart":532.7999999523163,"domainLookupEnd":532.7999999523163,"domainLookupStart":532.7999999523163,"fetchStart":532.7999999523163,"redirectEnd":0,"redirectStart":0,"requestStart":758,"responseEnd":1067.5999999046326,"responseStart":793.2999999523163,"secureConnectionStart":532.7999999523163},{"duration":271.2999999523163,"initiatorType":"script","name":"https://jira.mariadb.org/s/a9324d6758d385eb45c462685ad88f1d-CDN/lu2cib/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":533,"connectEnd":533,"connectStart":533,"domainLookupEnd":533,"domainLookupStart":533,"fetchStart":533,"redirectEnd":0,"redirectStart":0,"requestStart":759.7999999523163,"responseEnd":804.2999999523163,"responseStart":794,"secureConnectionStart":533},{"duration":277.2000000476837,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":533.1999999284744,"connectEnd":533.1999999284744,"connectStart":533.1999999284744,"domainLookupEnd":533.1999999284744,"domainLookupStart":533.1999999284744,"fetchStart":533.1999999284744,"redirectEnd":0,"redirectStart":0,"requestStart":777.5,"responseEnd":810.3999999761581,"responseStart":808.0999999046326,"secureConnectionStart":533.1999999284744},{"duration":277.1999999284744,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":533.3999999761581,"connectEnd":533.3999999761581,"connectStart":533.3999999761581,"domainLookupEnd":533.3999999761581,"domainLookupStart":533.3999999761581,"fetchStart":533.3999999761581,"redirectEnd":0,"redirectStart":0,"requestStart":777.6999999284744,"responseEnd":810.5999999046326,"responseStart":808.6999999284744,"secureConnectionStart":533.3999999761581},{"duration":224.70000004768372,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2cib/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":533.5999999046326,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":533.5999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":758.2999999523163,"responseStart":0,"secureConnectionStart":0},{"duration":278.2000000476837,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":533.7999999523163,"connectEnd":533.7999999523163,"connectStart":533.7999999523163,"domainLookupEnd":533.7999999523163,"domainLookupStart":533.7999999523163,"fetchStart":533.7999999523163,"redirectEnd":0,"redirectStart":0,"requestStart":778.2999999523163,"responseEnd":812,"responseStart":809.5,"secureConnectionStart":533.7999999523163},{"duration":243.19999992847443,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":533.8999999761581,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":533.8999999761581,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":777.0999999046326,"responseStart":0,"secureConnectionStart":0},{"duration":301,"initiatorType":"script","name":"https://jira.mariadb.org/s/5d5e8fe91fbc506585e83ea3b62ccc4b-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":534.0999999046326,"connectEnd":534.0999999046326,"connectStart":534.0999999046326,"domainLookupEnd":534.0999999046326,"domainLookupStart":534.0999999046326,"fetchStart":534.0999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":779.0999999046326,"responseEnd":835.0999999046326,"responseStart":810.8999999761581,"secureConnectionStart":534.0999999046326},{"duration":514.3999999761581,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":535.1999999284744,"connectEnd":535.1999999284744,"connectStart":535.1999999284744,"domainLookupEnd":535.1999999284744,"domainLookupStart":535.1999999284744,"fetchStart":535.1999999284744,"redirectEnd":0,"redirectStart":0,"requestStart":1038.5,"responseEnd":1049.5999999046326,"responseStart":1048.7999999523163,"secureConnectionStart":535.1999999284744},{"duration":516.8000000715256,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":535.1999999284744,"connectEnd":535.1999999284744,"connectStart":535.1999999284744,"domainLookupEnd":535.1999999284744,"domainLookupStart":535.1999999284744,"fetchStart":535.1999999284744,"redirectEnd":0,"redirectStart":0,"requestStart":1041.2999999523163,"responseEnd":1052,"responseStart":1051.1999999284744,"secureConnectionStart":535.1999999284744},{"duration":122.79999995231628,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":1092.5,"connectEnd":1092.5,"connectStart":1092.5,"domainLookupEnd":1092.5,"domainLookupStart":1092.5,"fetchStart":1092.5,"redirectEnd":0,"redirectStart":0,"requestStart":1180.1999999284744,"responseEnd":1215.2999999523163,"responseStart":1214.6999999284744,"secureConnectionStart":1092.5}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":316,"responseStart":526,"responseEnd":529,"domLoading":529,"domInteractive":1587,"domContentLoadedEventStart":1587,"domContentLoadedEventEnd":1656,"domComplete":2681,"loadEventStart":2682,"loadEventEnd":2682,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1540.6999999284744},{"name":"bigPipe.sidebar-id.end","time":1557.1999999284744},{"name":"bigPipe.activity-panel-pipe-id.start","time":1557.3999999761581},{"name":"bigPipe.activity-panel-pipe-id.end","time":1559.8999999761581},{"name":"activityTabFullyLoaded","time":1677.2999999523163}],"measures":[],"correlationId":"1bb06ac470a260","effectiveType":"4g","downlink":9.4,"rtt":0,"serverDuration":150,"dbReadsTimeInMs":23,"dbConnsTimeInMs":33,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
I can't backport the test on 10.5 because of two reasons:
1. trx->lock.was_chosen_as_deadlock_victim is not reset from the functions which cancel and release locks in 10.5, in 10.6 it is,
2. lock_trx_handle_wait() cancels waiting in 10.5, while in 10.6 it just checks lock state, and the thread will be suspended in row_search_mvcc() if the lock is still in "waiting" state.
I think 10.5 is not affected because of (1).
UPD: I was wrong about (1). 10.5 resets trx->lock.was_chosen_as_deadlock_victim in lock_wait_release_thread_if_suspended(). So currently I am not so sure about if 10.5 is affected or not. The current test will not work anyway due to (2), so 10.5 requires separate test case.