mleich found a race condition between buffer pool resizing and an update of the adaptive hash index, while testing MDEV-14425.
==3752116==ERROR: AddressSanitizer: heap-use-after-free on address 0x61d00000d300 at pc 0x5588ff9718a7 bp 0x5038216570b0 sp 0x5038216570a0
|
READ of size 8 at 0x61d00000d300 thread T26
|
#0 0x5588ff9718a6 in buf_pool_t::is_block_field(void const*) const /data/Server/preview-10.8-MDEV-14425-innodbF/storage/innobase/include/buf0buf.h:1308
|
#1 0x5588ff97190a in buf_pool_t::is_uncompressed(buf_block_t const*) const /data/Server/preview-10.8-MDEV-14425-innodbF/storage/innobase/include/buf0buf.h:1449
|
#2 0x5588ffcd648f in btr_search_update_block_hash_info /data/Server/preview-10.8-MDEV-14425-innodbF/storage/innobase/btr/btr0sea.cc:415
|
The function is being called as part of a debug assertion there, so this particular failure only affects debug builds. The culprit (found by setting a hardware watchpoint on the AddressSanitizer reported poison byte and executing reverse-continue in rr) is buffer pool resizing:
Thread 50 (Thread 3752116.3794577):
|
#0 __memset_avx2_unaligned_erms () at ../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:200
|
#1 0x00007ff70bf479d9 in ?? () from /lib/x86_64-linux-gnu/libasan.so.5
|
#2 0x00007ff70c028799 in free () from /lib/x86_64-linux-gnu/libasan.so.5
|
#3 0x00005588ffd17b0b in buf_pool_t::resize (this=0x558901d978c0 <buf_pool>) at /data/Server/preview-10.8-MDEV-14425-innodbF/storage/innobase/buf/buf0buf.cc:1894
|
#4 0x00005588ffcf9ab8 in buf_resize_callback () at /data/Server/preview-10.8-MDEV-14425-innodbF/storage/innobase/buf/buf0buf.cc:1989
|
During the time of this, the thread that is going to fail is already executing that function:
Thread 3 (Thread 3752116.3757608):
|
#0 0x00005588ff971864 in buf_pool_t::is_block_field (this=0x558901d978c0 <buf_pool>, ptr=0x304715439930) at /data/Server/preview-10.8-MDEV-14425-innodbF/storage/innobase/include/buf0buf.h:1307
|
#1 0x00005588ff97190b in buf_pool_t::is_uncompressed (this=0x558901d978c0 <buf_pool>, block=0x304715439930) at /data/Server/preview-10.8-MDEV-14425-innodbF/storage/innobase/include/buf0buf.h:1449
|
#2 0x00005588ffcd6490 in btr_search_update_block_hash_info (info=0x61a000553a68, block=0x304715439930) at /data/Server/preview-10.8-MDEV-14425-innodbF/storage/innobase/btr/btr0sea.cc:415
|
Most invocations of buf_pool_t::is_uncompressed() are in debug assertions, and this faulty debug assertion was introduced in 10.6.
MDEV-27058 in 10.6 would allow the buf_pool.is_uncompressed(block) assertions to be rewritten simply as block->page.frame. That would be a null pointer for blocks of ROW_FORMAT=COMPRESSED tables whose uncompressed page frame has been discarded.
The calls to buf_pool.is_uncompressed() outside assertions seem to be protected correctly by buf_pool.page_hash latch. Those are in Block_hint::buffer_fix_block_if_still_valid() and buf_page_get_low().
The failing debug assertion was added in MDEV-27058.
A similar assertion had been added to mtr_t::modify() already in MDEV-22110 (MariaDB Server 10.5.5). That one is best removed.
This bug only affects debug builds during buffer pool resizing, possibly only when running with ASAN.
{"report":{"fcp":848.0999999046326,"ttfb":237.69999980926514,"pageVisibility":"visible","entityId":106667,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":1,"journeyId":"45ad973d-514e-4b9d-8e99-770b9c8b24db","navigationType":0,"readyForUser":925.5,"redirectCount":0,"resourceLoadedEnd":644.5,"resourceLoadedStart":245.79999995231628,"resourceTiming":[{"duration":15.200000047683716,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bsh/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":245.79999995231628,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":245.79999995231628,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":261,"responseStart":0,"secureConnectionStart":0},{"duration":15.099999904632568,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bsh/820016/12ta74/eb142f92e4bd16bd1ef8b08c1b9d5d56/_/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","startTime":246.09999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":246.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":261.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":220.70000004768372,"initiatorType":"script","name":"https://jira.mariadb.org/s/c54b129276d75dc2a3460e1d78f37913-CDN/lu2bsh/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":246.39999985694885,"connectEnd":246.39999985694885,"connectStart":246.39999985694885,"domainLookupEnd":246.39999985694885,"domainLookupStart":246.39999985694885,"fetchStart":246.39999985694885,"redirectEnd":0,"redirectStart":0,"requestStart":264.69999980926514,"responseEnd":467.09999990463257,"responseStart":299.09999990463257,"secureConnectionStart":246.39999985694885},{"duration":327,"initiatorType":"script","name":"https://jira.mariadb.org/s/f867843cd2fdb209d4d1d4f760f86346-CDN/lu2bsh/820016/12ta74/eb142f92e4bd16bd1ef8b08c1b9d5d56/_/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","startTime":246.39999985694885,"connectEnd":246.39999985694885,"connectStart":246.39999985694885,"domainLookupEnd":246.39999985694885,"domainLookupStart":246.39999985694885,"fetchStart":246.39999985694885,"redirectEnd":0,"redirectStart":0,"requestStart":264.89999985694885,"responseEnd":573.3999998569489,"responseStart":326.7999999523163,"secureConnectionStart":246.39999985694885},{"duration":60.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/ffdb17665775c5b4d6f097f3974ee359-CDN/lu2bsh/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":246.5,"connectEnd":246.5,"connectStart":246.5,"domainLookupEnd":246.5,"domainLookupStart":246.5,"fetchStart":246.5,"redirectEnd":0,"redirectStart":0,"requestStart":265.59999990463257,"responseEnd":307,"responseStart":306,"secureConnectionStart":246.5},{"duration":62.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bsh/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":246.59999990463257,"connectEnd":246.59999990463257,"connectStart":246.59999990463257,"domainLookupEnd":246.59999990463257,"domainLookupStart":246.59999990463257,"fetchStart":246.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":265.89999985694885,"responseEnd":309.09999990463257,"responseStart":307.19999980926514,"secureConnectionStart":246.59999990463257},{"duration":62.90000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bsh/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":246.69999980926514,"connectEnd":246.69999980926514,"connectStart":246.69999980926514,"domainLookupEnd":246.69999980926514,"domainLookupStart":246.69999980926514,"fetchStart":246.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":267.59999990463257,"responseEnd":309.59999990463257,"responseStart":308,"secureConnectionStart":246.69999980926514},{"duration":18.799999952316284,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bsh/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":246.79999995231628,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":246.79999995231628,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":265.59999990463257,"responseStart":0,"secureConnectionStart":0},{"duration":88.79999995231628,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":247,"connectEnd":247,"connectStart":247,"domainLookupEnd":247,"domainLookupStart":247,"fetchStart":247,"redirectEnd":0,"redirectStart":0,"requestStart":268.5,"responseEnd":335.7999999523163,"responseStart":334.69999980926514,"secureConnectionStart":247},{"duration":20.5,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bsh/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":247.09999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":247.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":267.59999990463257,"responseStart":0,"secureConnectionStart":0},{"duration":76.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/81b5d7c27af3ebc078cc4a36383678ba-CDN/lu2bsh/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":247.19999980926514,"connectEnd":247.19999980926514,"connectStart":247.19999980926514,"domainLookupEnd":247.19999980926514,"domainLookupStart":247.19999980926514,"fetchStart":247.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":272.19999980926514,"responseEnd":324,"responseStart":308.39999985694885,"secureConnectionStart":247.19999980926514},{"duration":395.2999999523163,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bsh/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":248,"connectEnd":248,"connectStart":248,"domainLookupEnd":248,"domainLookupStart":248,"fetchStart":248,"redirectEnd":0,"redirectStart":0,"requestStart":290.89999985694885,"responseEnd":643.2999999523163,"responseStart":636.1999998092651,"secureConnectionStart":248},{"duration":394.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bsh/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":250.19999980926514,"connectEnd":250.19999980926514,"connectStart":250.19999980926514,"domainLookupEnd":250.19999980926514,"domainLookupStart":250.19999980926514,"fetchStart":250.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":309.39999985694885,"responseEnd":644.5,"responseStart":639.5,"secureConnectionStart":250.19999980926514},{"duration":128.5,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":611.8999998569489,"connectEnd":611.8999998569489,"connectStart":611.8999998569489,"domainLookupEnd":611.8999998569489,"domainLookupStart":611.8999998569489,"fetchStart":611.8999998569489,"redirectEnd":0,"redirectStart":0,"requestStart":707.1999998092651,"responseEnd":740.3999998569489,"responseStart":739.0999999046326,"secureConnectionStart":611.8999998569489},{"duration":102.20000004768372,"initiatorType":"script","name":"https://www.google-analytics.com/analytics.js","startTime":841.7999999523163,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":841.7999999523163,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":944,"responseStart":0,"secureConnectionStart":0},{"duration":134.10000014305115,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":848.6999998092651,"connectEnd":848.6999998092651,"connectStart":848.6999998092651,"domainLookupEnd":848.6999998092651,"domainLookupStart":848.6999998092651,"fetchStart":848.6999998092651,"redirectEnd":0,"redirectStart":0,"requestStart":950.6999998092651,"responseEnd":982.7999999523163,"responseStart":981.7999999523163,"secureConnectionStart":848.6999998092651}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":76,"responseStart":238,"responseEnd":245,"domLoading":241,"domInteractive":1025,"domContentLoadedEventStart":1025,"domContentLoadedEventEnd":1072,"domComplete":1269,"loadEventStart":1269,"loadEventEnd":1269,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":997.6999998092651},{"name":"bigPipe.sidebar-id.end","time":998.3999998569489},{"name":"bigPipe.activity-panel-pipe-id.start","time":998.5999999046326},{"name":"bigPipe.activity-panel-pipe-id.end","time":1000.7999999523163},{"name":"activityTabFullyLoaded","time":1090.1999998092651}],"measures":[],"correlationId":"f45384820fef1b","effectiveType":"4g","downlink":9,"rtt":0,"serverDuration":81,"dbReadsTimeInMs":14,"dbConnsTimeInMs":21,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
RQG
-------
# git clone https://github.com/mleich1/rqg --branch experimental RQG
#
# GIT_SHOW: HEAD -> experimental, origin/experimental f1cb1e206678662cb17c7e1d948fd5e0a9fd50b7 2021-12-21T17:57:05+01:00
# rqg.pl : Version 4.0.4 (2021-12)
#
# $RQG_HOME/rqg.pl \
# --grammar=conf/mariadb/table_stress_innodb_nocopy1.yy \
# --gendata=conf/mariadb/table_stress.zz \
# --gendata_sql=conf/mariadb/table_stress.sql \
# --reporters=Mariabackup_linux \
# --mysqld=--loose-innodb_lock_schedule_algorithm=fcfs \
# --mysqld=--loose-idle_write_transaction_timeout=0 \
# --mysqld=--loose-idle_transaction_timeout=0 \
# --mysqld=--loose-idle_readonly_transaction_timeout=0 \
# --mysqld=--connect_timeout=60 \
# --mysqld=--interactive_timeout=28800 \
# --mysqld=--slave_net_timeout=60 \
# --mysqld=--net_read_timeout=30 \
# --mysqld=--net_write_timeout=60 \
# --mysqld=--loose-table_lock_wait_timeout=50 \
# --mysqld=--wait_timeout=28800 \
# --mysqld=--lock-wait-timeout=86400 \
# --mysqld=--innodb-lock-wait-timeout=50 \
# --no-mask \
# --queries=10000000 \
# --seed=random \
# --reporters=Backtrace \
# --reporters=ErrorLog \
# --reporters=Deadlock1 \
# --validators=None \
# --mysqld=--log_output=none \
# --mysqld=--log_bin_trust_function_creators=1 \
# --mysqld=--loose-debug_assert_on_not_freed_memory=0 \
# --engine=InnoDB \
# --restart_timeout=240 \
# --mysqld=--plugin-load-add=file_key_management.so \
# --mysqld=--loose-file-key-management-filename=$RQG_HOME/conf/mariadb/encryption_keys.txt \
# --duration=300 \
# --mysqld=--loose-innodb_fatal_semaphore_wait_threshold=300 \
# --mysqld=--loose-innodb_read_only_compressed=OFF \
# --mysqld=--loose-innodb-sync-debug \
# --mysqld=--innodb_stats_persistent=off \
# --mysqld=--innodb_adaptive_hash_index=on \
# --mysqld=--log-bin \
# --mysqld=--sync-binlog=1 \
# --mysqld=--loose-innodb_evict_tables_on_commit_debug=off \
# --mysqld=--loose-max-statement-time=30 \
# --threads=33 \
# --mysqld=--innodb-use-native-aio=0 \
# --mysqld=--loose-gdb \
# --mysqld=--loose-debug-gdb \
# --rr=Extended \
# --rr_options=--chaos --wait \
# --mysqld=--innodb_rollback_on_timeout=OFF \
# --vardir_type=fast \
# --mysqld=--innodb_page_size=32K \
# --mysqld=--innodb-buffer-pool-size=256M \
# --no_mask \
# <local settings>