mirror of
https://github.com/isar/libmdbx.git
synced 2025-10-17 09:02:47 +08:00
mdbx: устранение возможности SIGSEGV
внутри coherency_check()
(backport).
Падение происходило в случае когда: - Некоторый процесс увеличивал размер БД с изменением геометрии (с увеличением предельного размера БД и её отображения в ОЗУ), затем задействовал страницу из добавленного сегмента в качестве корневой для FreeDB/GC и/или MainDB и фиксировал транзакцию. - Другой процесс, уже работавший с БД до изменения геометрии первым процессом, запускал транзакцию чтения. Падение происходило при проверке «когерентности» отображения страниц БД в ОЗУ, при проверке отметок модификации внутри корневых страниц, так как в этом случае они были вне границ текущего отображения БД в адресном пространстве этого процесса. Похоже что в ходе какого-то рефакторинга потерялась соответствующая проверка. Этот коммит добавляет такую проверку.
This commit is contained in:
@@ -16,6 +16,10 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic
|
||||
к падению **отладочных сборок**, так как в них соответствующий массив
|
||||
намеренно заполнен некорректными указателями.
|
||||
|
||||
- Устранение возможности `SIGSEGV` внутри `coherency_check()` после
|
||||
изменения геометрии другим процессом с увеличением верхнего размера БД
|
||||
и увеличением БД больше предыдущего лимита.
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
Reference in New Issue
Block a user