mariadb/storage
Marko Mäkelä 21bb6a3e34 MDEV-37447: Race condition between buf_pool_t::shrink() and page_guess()
buf_pool_t::shrink(): When relocating a buffer page, invalidate
the page identifier of the original page so that buf_pool_t::page_guess()
will not accidentally match it.

Before commit b6923420f3 (MDEV-29445)
introduced buf_pool_t::page_guess(), the validity of block descriptor
pointers was checked by buf_pool_t::is_uncompressed(const buf_block_t*).
Therefore, any block descriptors that used to be part of a larger buffer
pool would not be accessed at all.

This race condition is very hard to reproduce. To reproduce it,
an optimistic btr_pcur_t::restore_position() or similar will have to
be invoked on a block that has been relocated by buf_pool_t::shrink()
and that had not meanwhile been replaced with another page with a
different identifier.

Reviewed by: Vladislav Lesin
2025-08-27 11:02:19 +03:00
..
archive Merge 10.6 into 10.11 2024-06-27 10:26:09 +03:00
blackhole MDEV-34348: my_hash_get_key fixes 2024-11-23 08:14:22 -07:00
columnstore Merge branch '10.6' into 10.11 2025-07-28 18:06:31 +02:00
connect connect engine: correct two uninitalized variable errors 2025-07-29 13:15:02 +10:00
csv Merge 10.6 into 10.11 2025-08-22 06:47:54 +03:00
example MDEV-36729: ha_example::show_func_example is incorrectly defined 2025-05-29 10:10:52 +10:00
federated Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
federatedx Merge branch '10.6' into '10.11' 2025-04-16 03:34:40 +02:00
heap Merge 10.5 into 10.6 2025-01-20 09:57:37 +02:00
innobase MDEV-37447: Race condition between buf_pool_t::shrink() and page_guess() 2025-08-27 11:02:19 +03:00
maria MDEV-36542: remove _lint macro which is unused 2025-07-29 13:15:02 +10:00
mroonga MDEV-36542: remove _lint macro which is unused 2025-07-29 13:15:02 +10:00
myisam Merge 10.6 into 10.11 2025-08-08 14:15:04 +03:00
myisammrg Merge 10.6 into 10.11 2025-01-08 12:51:26 +02:00
oqgraph Merge 10.6 into 10.11 2024-11-29 13:43:17 +02:00
perfschema Merge 10.6 into 10.11 2025-08-22 06:47:54 +03:00
rocksdb MDEV-29001 DROP DEFAULT makes SHOW CREATE non-idempotent 2025-07-17 09:18:18 +02:00
sequence MDEV-33746 Supply missing override markings 2024-06-20 11:32:13 -04:00
sphinx Merge 10.5 into 10.6 2024-11-29 12:37:46 +02:00
spider Merge branch '10.6' into 10.11 2025-07-28 18:06:31 +02:00
test_sql_discovery Merge 10.5 into 10.6 2024-06-24 13:09:47 +03:00