libmdbx/TODO.md
Леонид Юрьев (Leonid Yuriev) edfa526138 mdbx: устранение возможности SIGSEGV внутри coherency_check().
Падение происходило в случае когда:

 - Некоторый процесс увеличивал размер БД с изменением геометрии (с
   увеличением предельного размера БД и её отображения в ОЗУ), затем
   задействовал страницу из добавленного сегмента в качестве корневой для
   FreeDB/GC и/или MainDB и фиксировал транзакцию.

 - Другой процесс, уже работавший с БД до изменения геометрии первым
   процессом, запускал транзакцию чтения. Падение происходило при проверке
   «когерентности» отображения страниц БД в ОЗУ, при проверке отметок
   модификации внутри корневых страниц, так как в этом случае они были вне
   границ текущего отображения БД в адресном пространстве этого процесса.

Похоже что в ходе какого-то рефакторинга потерялась соответствующая
проверка. Этот коммит добавляет её как временное решение, до переноса
проверки «когерентности» после изменения размера отображения (добавлено в
TODO).
2024-08-07 17:38:53 +03:00

3.0 KiB
Raw Blame History

TODO

Unfortunately, on 2022-04-15 the Github administration, without any warning nor explanation, deleted libmdbx along with a lot of other projects, simultaneously blocking access for many developers. Therefore on 2022-04-21 we have migrated to a reliable trusted infrastructure. The origin for now is atGitFlic with backup at ABF by ROSA Лаб. For the same reason Github is blacklisted forever.

So currently most of the links are broken due to noted malicious Github sabotage.

Done

Canceled

  • Replace SRW-lock on Windows to allow shrink DB with MDBX_NOSTICKYTHREADS option. Доработка не может быть реализована, так как замена SRW-блокировки лишает лишь предварительную проблему, но не главную. На Windows уменьшение размера отображенного в память файла не поддерживается ядром ОС. Для этого необходимо снять отображение, изменить размер файла и затем отобразить обратно. В свою очередь, для это необходимо приостановить работающие с БД потоки выполняющие транзакции чтения, либо готовые к такому выполнению. Но в режиме MDBX_NOSTICKYTHREADS нет возможности отслеживать работающие с БД потоки, а приостановка всех потоков неприемлема для большинства приложений.