mariadb/storage/innobase/buf
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
..
buf0buddy.cc MDEV-36781: Assertion i < BUF_BUDDY_SIZES failed in buf_buddy_shrink() 2025-05-13 12:27:46 +03:00
buf0buf.cc MDEV-37447: Race condition between buf_pool_t::shrink() and page_guess() 2025-08-27 11:02:19 +03:00
buf0checksum.cc Cleanup: Replace ut_crc32c(x,y) with my_crc32c(0,x,y) 2022-01-21 16:13:04 +02:00
buf0dblwr.cc MDEV-21923: LSN allocation is a bottleneck 2025-04-10 13:02:17 +03:00
buf0dump.cc MDEV-29445: Reimplement SET GLOBAL innodb_buffer_pool_size 2025-03-26 17:05:44 +02:00
buf0flu.cc Merge branch '10.6' into 10.11 2025-07-28 18:06:31 +02:00
buf0lru.cc MDEV-36781: Assertion i < BUF_BUDDY_SIZES failed in buf_buddy_shrink() 2025-05-13 12:27:46 +03:00
buf0rea.cc MDEV-29445: Reimplement SET GLOBAL innodb_buffer_pool_size 2025-03-26 17:05:44 +02:00