mdbx: исправление упущенного TXN_END_EOTDONE при сбое старта читающей транзакции (backport).

Упомянутый флажок отсутствовал в пути разрушения транзакции при ошибке
её запуска. Из-за чего делалась попытка разрушить курсоры, что приводило
к падению отладочных сборок, так как в них соответствующий массив
намеренно заполнен некорректными указателями.
This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2024-08-07 19:29:57 +03:00
parent a6a7a291c7
commit cf6d441e1b
2 changed files with 20 additions and 1 deletions

View File

@ -4,6 +4,22 @@ ChangeLog
English version [by Google](https://gitflic-ru.translate.goog/project/erthink/libmdbx/blob?file=ChangeLog.md&_x_tr_sl=ru&_x_tr_tl=en)
and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md).
## v0.12.12 (в процессе накопления исправлений)
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов.
Значимые исправления:
- Исправление упущенного `TXN_END_EOTDONE` при сбое старта читающей транзакции.
Упомянутый флажок отсутствовал в пути разрушения транзакции при ошибке
её запуска. Из-за чего делалась попытка разрушить курсоры, что приводило
к падению **отладочных сборок**, так как в них соответствующий массив
намеренно заполнен некорректными указателями.
--------------------------------------------------------------------------------
## v0.12.11 "Лиза и Соня" от 2024-07-23
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов,
@ -71,6 +87,9 @@ Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
- Отключение установки признака фатальной ошибки для не-активной среды при отличии идентификатора процесса.
--------------------------------------------------------------------------------
## v0.12.10 "СЭМ" от 2024-03-12
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов

View File

@ -9188,7 +9188,7 @@ static int txn_renew(MDBX_txn *txn, const unsigned flags) {
}
bailout:
tASSERT(txn, rc != MDBX_SUCCESS);
txn_end(txn, MDBX_END_SLOT | MDBX_END_FAIL_BEGIN);
txn_end(txn, MDBX_END_SLOT | MDBX_END_EOTDONE | MDBX_END_FAIL_BEGIN);
return rc;
}