mdbx: update man-pages and TODO (v0.14.1-490-gcc4dadfd).

2026-03-22 mdbx: update ChangeLog.
2026-03-22 mdbx: add `panic_at()` and `MDBX_PANIC()`.
2026-03-20 mdbx: simplify/strip "option" string of `mdbx_build`.
2026-03-20 mdbx: initial DTrace/SystemTap support.
2026-03-20 mdbx-doc: update TODO.
2026-03-22 mdbx: minor clarify/refine `dxb_setup()` and recent changes.
2026-03-22 mdbx: fix nested txn db-resize detection in `nested_undo()`.
2026-03-22 mdbx: fix fall-through in `osal_bootid()` kstat switch on Solaris.
2026-03-22 mdbx: fix stray/typo parenthesis in `ST_EXPORTED` branch of `osal_check_fs_local()`.
2026-03-22 mdbx-tools: remove duplicate `envname` assignment in `mdbx_stat`.
2026-03-21 mdbx: return error instead of triggering panic on invalid input.
2026-03-20 mdbx-doc: update man-pages.
This commit is contained in:
Леонид Юрьев (Leonid Yuriev)
2026-03-22 18:41:08 +03:00
parent 7855234f5e
commit 7041b18e58
23 changed files with 205 additions and 71 deletions
+8 -1
View File
@@ -23,7 +23,8 @@ BTC `bc1qzvl9uegf2ea6cwlytnanrscyv8snwsvrc0xfsu`, SOL `FTCTgbHajoLVZGr8aEFWMzx3N
- [Артёму Воротникову](https://github.com/vorot93) за сообщение об ошибках и тестировании [призязок для Rust](https://github.com/vorot93/libmdbx-rs).
- [Stefan de Konink](https://github.com/skinkie) for fixing [Python bindings](https://github.com/wtdcode/mdbx-py) and documentation improvement.
- [Cosmin Apreutesei](https://github.com/capr) за сообщение об ошибках и тестирование.
- [Segwaz at Axeinos](https://github.com/Segwaz) for fuzzing and bug reporing.
- [Chloe Cano](https://github.com/Segwaz) for fuzzing, bug reporing and fixes.
- [Weixie Cui](https://github.com/cuiweixie) for bug fixing through pull-requests.
Новое:
@@ -118,6 +119,12 @@ BTC `bc1qzvl9uegf2ea6cwlytnanrscyv8snwsvrc0xfsu`, SOL `FTCTgbHajoLVZGr8aEFWMzx3N
- Исправлено падение `SIGSEGV` в случае, когда все мета-страницы не полностью пригодны для использования.
- Исправлена опечатка в условии определения изменении размера БД при откате вложенной транзакции.
- Исправлен сбор информации посредством `kstat()` для bootid на Solaris и родственных платформах.
- Исправлена опечатка в пути обработки `ST_EXPORTED` что ломало сборку на платформах где для `fstatvfs()` определён упомянутый флаг.
Изменение поведения:
- Вновь включена/разрешена на старых ядрах Linux, начиная с версии 3.16, так как сейчас уже нет причин отказываться от работы на 3.16 поддерживая при этом ядра 4.x, и еще есть проекты (Isar, Isar-Community, Hive) которым требуется такая поддержка.
+6 -2
View File
@@ -2,10 +2,13 @@
TODO
----
- preserve/restore cursors state during `mdbx_txn_checkpoint()`, `mdbx_txn_amend()` and `mdbx_txn_commit_embark_read()`.
- man-page for `mdbx_defrag`.
- Предоставление информации о размере рагруженной/кешируемой в ОЗУ части БД и её использование для управления упреждающим чтением.
- split ASSERT() to CHECK{0,1,2,3} and basal `assert()`.
- [SWIG](https://www.swig.org/).
- Интеграция c DTrace и аналогами.
- LTTng for tracing.
- Новый стиль обработки ошибок с записью "трассы" и причин.
- Формирование отладочной информации посредством gdb.
- Поддержка WASM.
@@ -16,15 +19,16 @@ TODO
- [Support for RAW devices](https://libmdbx.dqdkfa.ru/dead-github/issues/124).
- [Support MessagePack for Keys & Values](https://libmdbx.dqdkfa.ru/dead-github/issues/115).
- Packages for [Astra Linux](https://astralinux.ru/), [ALT Linux](https://www.altlinux.org/), [ROSA Linux](https://www.rosalinux.ru/), etc.
- Extended example of using the C++ API, which can also be used as a simple smoke-test.
In development
--------------
- Extended example of using the C++ API, which can also be used as a simple smoke-test.
- Ultra-fast deletion of consecutive elements by cutting off b-tree branches.
- add CLI-options to mdbx_defrag and mdbx_load.
- Refine/simplify assertion-like errors handling.
Done
----
- CLI-options to mdbx_defrag and mdbx_load.
- Optional page-get operation statistics for transactions.
- digging/refactoring/optimizing page splitting and tree rebalance.
- Явная уплотнение/дефрагментация и mdbx_defrag.
+1 -1
View File
@@ -1 +1 @@
{ "git_describe": "v0.14.1-477-g051b7437", "git_timestamp": "2026-03-20T06:30:27+03:00", "git_tree": "27b0aaea4bda4436bf8f7fad00661cca07368130", "git_commit": "051b7437a2cfc1e3c71132579728970490d6ad98", "semver": "0.14.1.477" }
{ "git_describe": "v0.14.1-490-gcc4dadfd", "git_timestamp": "2026-03-22T18:24:09+03:00", "git_tree": "d42c9209ba712a1e42854ccb8af9a5489d5af3e2", "git_commit": "cc4dadfd90cf847157c9e04c7e4e1cf4511f89d2", "semver": "0.14.1.490" }
+2
View File
@@ -37,6 +37,8 @@ option(ENABLE_GCOV "Enable integration with gcov, a code coverage program" OFF)
option(ENABLE_GPROF "Enable integration with gprof, a performance analyzing tool" OFF)
option(ENABLE_DTRACE "Enable using DTrace dynamic tracing framework" OFF)
option(ENABLE_ASAN "Enable AddressSanitizer, a fast memory error detector based on compiler instrumentation" OFF)
option(ENABLE_UBSAN
+3 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00),
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00),
* it is the template for libmdbx's config.h
******************************************************************************/
@@ -9,6 +9,8 @@
#cmakedefine ENABLE_MEMCHECK
#cmakedefine ENABLE_GPROF
#cmakedefine ENABLE_GCOV
#cmakedefine ENABLE_DTRACE
#cmakedefine ENABLE_SYSTEMTAP
#cmakedefine ENABLE_ASAN
#cmakedefine ENABLE_UBSAN
#cmakedefine01 MDBX_FORCE_ASSERTIONS
+12 -2
View File
@@ -1,6 +1,6 @@
.\" Copyright 2015-2026 Leonid Yuriev <leo@yuriev.ru>.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_CHK 1 "2025-01-14" "MDBX 0.14"
.TH MDBX_CHK 1 "2026-03-20" "MDBX 0.14"
.SH NAME
mdbx_chk \- MDBX checking tool
.SH SYNOPSIS
@@ -23,6 +23,16 @@ mdbx_chk \- MDBX checking tool
.BR \-i ]
[\c
.BI \-s \ table\fR]
[\c
.BR \-0|1|2] ]
[\c
.BR \-t ]
[\c
.BR \-T ]
[\c
.BR \-u ]
[\c
.BR \-U ]
.BR \ dbpath
.SH DESCRIPTION
The
@@ -103,4 +113,4 @@ if no quiet mode was requested.
.BR mdbx_load (1)
.BR mdbx_drop (1)
.SH AUTHOR
Leonid Yuriev <https://gitflic.ru/user/erthink>
Leonid Yuriev <https://libmdbx.dqdkfa.ru>
+6 -2
View File
@@ -2,7 +2,7 @@
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copyright 2012-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_COPY 1 "2025-01-14" "MDBX 0.14"
.TH MDBX_COPY 1 "2026-03-20" "MDBX 0.14"
.SH NAME
mdbx_copy \- MDBX environment copy tool
.SH SYNOPSIS
@@ -21,6 +21,10 @@ mdbx_copy \- MDBX environment copy tool
.BR \-p ]
[\c
.BR \-n ]
[\c
.BR \-u ]
[\c
.BR \-U ]
.B src_path
[\c
.BR dest_path ]
@@ -97,4 +101,4 @@ free during copying cannot be reused until the copy is done.
.BR mdbx_drop (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>,
Leonid Yuriev <https://gitflic.ru/user/erthink>
Leonid Yuriev <https://libmdbx.dqdkfa.ru>
+2 -1
View File
@@ -1,7 +1,7 @@
.\" Copyright 2021-2026 Leonid Yuriev <leo@yuriev.ru>.
.\" Copyright 2014-2021 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_DROP 1 "2025-01-14" "MDBX 0.14"
.TH MDBX_DROP 1 "2026-03-20" "MDBX 0.14"
.SH NAME
mdbx_drop \- MDBX database delete tool
.SH SYNOPSIS
@@ -46,3 +46,4 @@ a diagnostic message being written to standard error.
.BR mdbx_stat (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>
Leonid Yuriev <https://libmdbx.dqdkfa.ru>
+6 -2
View File
@@ -2,7 +2,7 @@
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copyright 2014-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_DUMP 1 "2025-01-14" "MDBX 0.14"
.TH MDBX_DUMP 1 "2026-03-20" "MDBX 0.14"
.SH NAME
mdbx_dump \- MDBX environment export tool
.SH SYNOPSIS
@@ -25,6 +25,10 @@ mdbx_dump \- MDBX environment export tool
[\c
.BR \-r ]
[\c
.BR \-u ]
[\c
.BR \-U ]
[\c
.BR \-n ]
.BR \ dbpath
.SH DESCRIPTION
@@ -103,4 +107,4 @@ utility to load the database using the correct comparison functions.
.BR mdbx_drop (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>,
Leonid Yuriev <https://gitflic.ru/user/erthink>
Leonid Yuriev <https://libmdbx.dqdkfa.ru>
+2 -2
View File
@@ -2,7 +2,7 @@
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copyright 2014-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_LOAD 1 "2025-01-14" "MDBX 0.14"
.TH MDBX_LOAD 1 "2026-03-20" "MDBX 0.14"
.SH NAME
mdbx_load \- MDBX environment import tool
.SH SYNOPSIS
@@ -145,4 +145,4 @@ a diagnostic message being written to standard error.
.BR mdbx_drop (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>,
Leonid Yuriev <https://gitflic.ru/user/erthink>
Leonid Yuriev <https://libmdbx.dqdkfa.ru>
+2 -2
View File
@@ -2,7 +2,7 @@
.\" Copyright 2015,2016 Peter-Service R&D LLC <http://billing.ru/>.
.\" Copyright 2012-2015 Howard Chu, Symas Corp. All Rights Reserved.
.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
.TH MDBX_STAT 1 "2025-01-14" "MDBX 0.14"
.TH MDBX_STAT 1 "2026-03-20" "MDBX 0.14"
.SH NAME
mdbx_stat \- MDBX environment status tool
.SH SYNOPSIS
@@ -83,4 +83,4 @@ a diagnostic message being written to standard error.
.BR mdbx_drop (1)
.SH AUTHOR
Howard Chu of Symas Corporation <http://www.symas.com>,
Leonid Yuriev <https://gitflic.ru/user/erthink>
Leonid Yuriev <https://libmdbx.dqdkfa.ru>
+64 -2
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
@@ -24,7 +24,7 @@
#define xMDBX_ALLOY 1 /* alloyed build */
#define MDBX_BUILD_SOURCERY bd049221a76b67334b3d40a56c63c0aff3e758a205c7fd0fe6eb1868ab9062c8_v0_14_1_477_g051b7437
#define MDBX_BUILD_SOURCERY 1b1947c5a5bfc0b74df7d01001b14cc811e466e90ceeb8c7b02e99da3e22dc40_v0_14_1_490_gcc4dadfd
#define LIBMDBX_INTERNALS
#define MDBX_DEPRECATED
@@ -917,6 +917,42 @@ __extern_C key_t ftok(const char *, int);
#define ASAN_UNPOISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size))
#endif /* __SANITIZE_ADDRESS__ */
/*----------------------------------------------------------------------------*/
/* DTrace dynamic tracing framework */
#if defined(ENABLE_DTRACE) || defined(ENABLE_SYSTEMTAP)
#include <sys/sdt.h>
#else
#define DTRACE_PROBE(provider, probe) __noop
#define DTRACE_PROBE1(provider, probe, parm1) __noop
#define DTRACE_PROBE2(provider, probe, parm1, parm2) __noop
#define DTRACE_PROBE3(provider, probe, parm1, parm2, parm3) __noop
#define DTRACE_PROBE4(provider, probe, parm1, parm2, parm3, parm4) __noop
#define DTRACE_PROBE5(provider, probe, parm1, parm2, parm3, parm4, parm5) __noop
#define DTRACE_PROBE6(provider, probe, parm1, parm2, parm3, parm4, parm5, parm6) __noop
#define DTRACE_PROBE7(provider, probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7) __noop
#define DTRACE_PROBE8(provider, probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8) __noop
#define DTRACE_PROBE9(provider, probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9) __noop
#endif /* ENABLE_DTRACE || ENABLE_SYSTEMTAP */
#define MDBX_DTRACE_PROVIDER mdbx
#define MDBX_DTRACE(probe) DTRACE_PROBE(MDBX_DTRACE_PROVIDER, probe)
#define MDBX_DTRACE1(probe, parm1) DTRACE_PROBE1(MDBX_DTRACE_PROVIDER, probe, parm1)
#define MDBX_DTRACE2(probe, parm1, parm2) DTRACE_PROBE2(MDBX_DTRACE_PROVIDER, probe, parm1, parm2)
#define MDBX_DTRACE3(probe, parm1, parm2, parm3) DTRACE_PROBE3(MDBX_DTRACE_PROVIDER, probe, parm1, parm2, parm3)
#define MDBX_DTRACE4(probe, parm1, parm2, parm3, parm4) \
DTRACE_PROBE4(MDBX_DTRACE_PROVIDER, probe, parm1, parm2, parm3, parm4)
#define MDBX_DTRACE5(probe, parm1, parm2, parm3, parm4, parm5) \
DTRACE_PROBE5(MDBX_DTRACE_PROVIDER, probe, parm1, parm2, parm3, parm4, parm5)
#define MDBX_DTRACE6(probe, parm1, parm2, parm3, parm4, parm5, parm6) \
DTRACE_PROBE6(MDBX_DTRACE_PROVIDER, probe, parm1, parm2, parm3, parm4, parm5, parm6)
#define MDBX_DTRACE7(probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7) \
DTRACE_PROBE7(MDBX_DTRACE_PROVIDER, probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7)
#define MDBX_DTRACE8(probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8) \
DTRACE_PROBE8(MDBX_DTRACE_PROVIDER, probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8)
#define MDBX_DTRACE9(probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9) \
DTRACE_PROBE9(MDBX_DTRACE_PROVIDER, probe, parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9)
/*----------------------------------------------------------------------------*/
#ifndef ARRAY_LENGTH
@@ -3138,6 +3174,32 @@ MDBX_MAYBE_UNUSED static inline int log_if_error(const int err, const char *func
#define LOG_IFERR(err) log_if_error((err), __func__, __LINE__)
struct MDBX_panic_point {
const char *const function;
const char *const msg;
unsigned line;
};
MDBX_MAYBE_UNUSED MDBX_NORETURN MDBX_INTERNAL void panic_at(const struct MDBX_panic_point *const at);
MDBX_MAYBE_UNUSED MDBX_NORETURN MDBX_INTERNAL void panic_ex_at(const struct MDBX_panic_point *const at,
const void *ctx);
#define MDBX_PANIC(msg_text) \
do { \
const unsigned source_line = __LINE__; \
static const char panic_msg[] = msg_text; \
static const struct MDBX_panic_point panic_point = {__func__, panic_msg, source_line}; \
panic_at(&panic_point); \
} while (0)
#define MDBX_PANIC_EX(msg_text, ctx) \
do { \
const unsigned source_line = __LINE__; \
static const char panic_msg[] = msg_text; \
static const struct MDBX_panic_point panic_point = {__func__, panic_msg, source_line}; \
panic_ex_at(&panic_point, ctx); \
} while (0)
#endif /* !__cplusplus */
/* Test if the flags f are set in a flag word w. */
+78 -43
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
@@ -19717,13 +19717,12 @@ __cold int dxb_setup(MDBX_env *env, const int lck_rc, const mdbx_mode_t mode_bit
header.geometry.lower, header.geometry.now, header.geometry.upper, pv2pages(header.geometry.shrink_pv),
pv2pages(header.geometry.grow_pv), next_txnid);
if (unlikely(header.unsafe_txnid != recent.txnid))
{
if (unlikely(header.unsafe_txnid != recent.txnid)) {
const pgno_t recent_pgno = bytes2pgno(env, ptr_dist(recent.ptr_c, env->dxb_mmap.base));
ERROR("meta[%u] recent steady txnid %" PRIaTXN " != header txnid %" PRIaTXN
", manual recovery needed",
", this is too unexpected and requires manual analysis.",
recent_pgno, recent.txnid, header.unsafe_txnid);
return MDBX_CORRUPTED;
return MDBX_PROBLEM;
}
meta_set_txnid(env, &header, next_txnid);
err = dxb_sync_locked(env, env->flags | txn_shrink_allowed, &header, &troika);
@@ -24088,11 +24087,11 @@ __dll_export
"-" MDBX_BUILD_TYPE
#endif /* MDBX_BUILD_TYPE */
,
"MDBX_DEBUG=" MDBX_STRINGIFY(MDBX_DEBUG)
"DEBUG=" MDBX_STRINGIFY(MDBX_DEBUG)
#ifdef ENABLE_GPROF
" ENABLE_GPROF"
#endif /* ENABLE_GPROF */
" MDBX_WORDBITS=" MDBX_STRINGIFY(MDBX_WORDBITS)
" WORDBITS=" MDBX_STRINGIFY(MDBX_WORDBITS)
" BYTE_ORDER="
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
"LITTLE_ENDIAN"
@@ -24101,30 +24100,35 @@ __dll_export
#else
#error "FIXME: Unsupported byte order"
#endif /* __BYTE_ORDER__ */
" MDBX_ENABLE_BIGFOOT=" MDBX_STRINGIFY(MDBX_ENABLE_BIGFOOT)
" MDBX_ENV_CHECKPID=" MDBX_ENV_CHECKPID_CONFIG
" MDBX_TXN_CHECKOWNER=" MDBX_TXN_CHECKOWNER_CONFIG
" MDBX_64BIT_ATOMIC=" MDBX_64BIT_ATOMIC_CONFIG
" MDBX_64BIT_CAS=" MDBX_64BIT_CAS_CONFIG
" MDBX_TRUST_RTC=" MDBX_TRUST_RTC_CONFIG
" MDBX_AVOID_MSYNC=" MDBX_STRINGIFY(MDBX_AVOID_MSYNC)
" MDBX_ENABLE_REFUND=" MDBX_STRINGIFY(MDBX_ENABLE_REFUND)
" MDBX_USE_MINCORE=" MDBX_STRINGIFY(MDBX_USE_MINCORE)
" MDBX_ENABLE_PGOP_STAT=" MDBX_STRINGIFY(MDBX_ENABLE_PGOP_STAT)
" MDBX_ENABLE_PROFGC=" MDBX_STRINGIFY(MDBX_ENABLE_PROFGC)
" MDBX_ENABLE_PGET_STAT=" MDBX_STRINGIFY(MDBX_ENABLE_PGET_STAT)
" ENABLE_BIGFOOT=" MDBX_STRINGIFY(MDBX_ENABLE_BIGFOOT)
" ENV_CHECKPID=" MDBX_ENV_CHECKPID_CONFIG
" TXN_CHECKOWNER=" MDBX_TXN_CHECKOWNER_CONFIG
" 64BIT_ATOMIC=" MDBX_64BIT_ATOMIC_CONFIG
" 64BIT_CAS=" MDBX_64BIT_CAS_CONFIG
" TRUST_RTC=" MDBX_TRUST_RTC_CONFIG
" AVOID_MSYNC=" MDBX_STRINGIFY(MDBX_AVOID_MSYNC)
" ENABLE_REFUND=" MDBX_STRINGIFY(MDBX_ENABLE_REFUND)
" USE_MINCORE=" MDBX_STRINGIFY(MDBX_USE_MINCORE)
" ENABLE_PGOP_STAT=" MDBX_STRINGIFY(MDBX_ENABLE_PGOP_STAT)
" ENABLE_PROFGC=" MDBX_STRINGIFY(MDBX_ENABLE_PROFGC)
" ENABLE_PGET_STAT=" MDBX_STRINGIFY(MDBX_ENABLE_PGET_STAT)
#if MDBX_DISABLE_VALIDATION
" MDBX_DISABLE_VALIDATION=YES"
" DISABLE_VALIDATION=YES"
#endif /* MDBX_DISABLE_VALIDATION */
#ifdef __SANITIZE_ADDRESS__
" SANITIZE_ADDRESS=YES"
#endif /* __SANITIZE_ADDRESS__ */
#ifdef ENABLE_MEMCHECK
" ENABLE_MEMCHECK=YES"
" MEMCHECK=YES"
#endif /* ENABLE_MEMCHECK */
#if MDBX_FORCE_ASSERTIONS
" MDBX_FORCE_ASSERTIONS=YES"
" FORCE_ASSERTIONS=YES"
#endif /* MDBX_FORCE_ASSERTIONS */
#ifdef ENABLE_SYSTEMTAP
" SYSTEMTAP=YES"
#elif defined(ENABLE_DTRACE)
" DTRACE=YES"
#endif /* ENABLE_DTRACE || ENABLE_SYSTEMTAP */
#ifdef _GNU_SOURCE
" _GNU_SOURCE=YES"
#else
@@ -24134,23 +24138,23 @@ __dll_export
" MDBX_APPLE_SPEED_INSTEADOF_DURABILITY=" MDBX_STRINGIFY(MDBX_APPLE_SPEED_INSTEADOF_DURABILITY)
#endif /* MacOS */
#if defined(_WIN32) || defined(_WIN64)
" MDBX_WITHOUT_MSVC_CRT=" MDBX_STRINGIFY(MDBX_WITHOUT_MSVC_CRT)
" MDBX_BUILD_SHARED_LIBRARY=" MDBX_STRINGIFY(MDBX_BUILD_SHARED_LIBRARY)
" WITHOUT_MSVC_CRT=" MDBX_STRINGIFY(MDBX_WITHOUT_MSVC_CRT)
" BUILD_SHARED_LIBRARY=" MDBX_STRINGIFY(MDBX_BUILD_SHARED_LIBRARY)
#if !MDBX_BUILD_SHARED_LIBRARY
" MDBX_MANUAL_MODULE_HANDLER=" MDBX_STRINGIFY(MDBX_MANUAL_MODULE_HANDLER)
" MANUAL_MODULE_HANDLER=" MDBX_STRINGIFY(MDBX_MANUAL_MODULE_HANDLER)
#endif
" WINVER=" MDBX_STRINGIFY(WINVER)
#else /* Windows */
" MDBX_LOCKING=" MDBX_LOCKING_CONFIG
" MDBX_USE_OFDLOCKS=" MDBX_USE_OFDLOCKS_CONFIG
" MDBX_USE_FALLOCATE=" MDBX_USE_FALLOCATE_CONFIG
" LOCKING=" MDBX_LOCKING_CONFIG
" USE_OFDLOCKS=" MDBX_USE_OFDLOCKS_CONFIG
" USE_FALLOCATE=" MDBX_USE_FALLOCATE_CONFIG
#endif /* !Windows */
" MDBX_CACHELINE_SIZE=" MDBX_STRINGIFY(MDBX_CACHELINE_SIZE)
" MDBX_CPU_WRITEBACK_INCOHERENT=" MDBX_STRINGIFY(MDBX_CPU_WRITEBACK_INCOHERENT)
" MDBX_MMAP_INCOHERENT_CPU_CACHE=" MDBX_STRINGIFY(MDBX_MMAP_INCOHERENT_CPU_CACHE)
" MDBX_MMAP_INCOHERENT_FILE_WRITE=" MDBX_STRINGIFY(MDBX_MMAP_INCOHERENT_FILE_WRITE)
" MDBX_UNALIGNED_OK=" MDBX_STRINGIFY(MDBX_UNALIGNED_OK)
" MDBX_PNL_ASCENDING=" MDBX_STRINGIFY(MDBX_PNL_ASCENDING)
" CACHELINE_SIZE=" MDBX_STRINGIFY(MDBX_CACHELINE_SIZE)
" CPU_WRITEBACK_INCOHERENT=" MDBX_STRINGIFY(MDBX_CPU_WRITEBACK_INCOHERENT)
" MMAP_INCOHERENT_CPU_CACHE=" MDBX_STRINGIFY(MDBX_MMAP_INCOHERENT_CPU_CACHE)
" MMAP_INCOHERENT_FILE_WRITE=" MDBX_STRINGIFY(MDBX_MMAP_INCOHERENT_FILE_WRITE)
" UNALIGNED_OK=" MDBX_STRINGIFY(MDBX_UNALIGNED_OK)
" PNL_ASCENDING=" MDBX_STRINGIFY(MDBX_PNL_ASCENDING)
,
#ifdef MDBX_BUILD_COMPILER
MDBX_BUILD_COMPILER
@@ -26351,6 +26355,16 @@ __cold void page_list(page_t *mp) {
total, page_room(mp));
}
__cold __noinline void panic_ex_at(const struct MDBX_panic_point *const at, const void *ctx) {
const char *const function = at->function;
const char *const msg = at->msg;
const unsigned line = at->line;
MDBX_DTRACE3(panic, function, line, msg);
mdbx_panic_ex(ctx, "%s:%u %s", function, line, msg);
}
__cold __noinline void panic_at(const struct MDBX_panic_point *const at) { panic_ex_at(at, nullptr); }
typedef struct meta_snap {
uint64_t txnid;
size_t is_steady;
@@ -28046,18 +28060,23 @@ __cold void assert_fail(const char *msg, const char *func, unsigned line) {
}
}
__cold void mdbx_panic(const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
MDBX_NORETURN __cold static void panic_va_list(const void *ptr, const char *fmt, va_list ap) {
char *message = nullptr;
const int num = osal_vasprintf(&message, fmt, ap);
va_end(ap);
const char *const const_message =
unlikely(num < 1 || !message) ? "<troubles with panic-message preparation>" : message;
if (ptr) {
/* TODO:
* - check ptr is valid and readable;
* - check signature to determine a type of the object (cursor, txn, env);
* - try to dump useful information if debugger or logger is attached.
*/
}
const char *const nl = (num > 0 && const_message[num - 1] == '\n') ? "" : "\n";
if (globals.logger.ptr)
debug_log(MDBX_LOG_FATAL, "mdbx-panic", 0, "%s", const_message);
debug_log(MDBX_LOG_FATAL, "mdbx-panic", 0, "%s%s", const_message, nl);
while (1) {
#if defined(_WIN32) || defined(_WIN64)
@@ -28066,6 +28085,8 @@ __cold void mdbx_panic(const char *fmt, ...) {
#else
OutputDebugStringA("\r\nMDBX-PANIC: ");
OutputDebugStringA(const_message);
if (*nl)
OutputDebugStringA("\r\n");
#endif
if (IsDebuggerPresent())
DebugBreak();
@@ -28077,6 +28098,20 @@ __cold void mdbx_panic(const char *fmt, ...) {
}
}
__cold void mdbx_panic(const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
panic_va_list(nullptr, fmt, ap);
va_end(ap);
}
__cold void mdbx_panic_ex(const void *ptr, const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
panic_va_list(ptr, fmt, ap);
va_end(ap);
}
/*----------------------------------------------------------------------------*/
#ifndef osal_vasprintf
@@ -39743,10 +39778,10 @@ __dll_export
0,
14,
1,
477,
490,
"", /* pre-release suffix of SemVer
0.14.1.477 */
{"2026-03-20T06:30:27+03:00", "27b0aaea4bda4436bf8f7fad00661cca07368130", "051b7437a2cfc1e3c71132579728970490d6ad98", "v0.14.1-477-g051b7437"},
0.14.1.490 */
{"2026-03-22T18:24:09+03:00", "d42c9209ba712a1e42854ccb8af9a5489d5af3e2", "cc4dadfd90cf847157c9e04c7e4e1cf4511f89d2", "v0.14.1-490-gcc4dadfd"},
sourcery};
__dll_export
+1 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
+4 -1
View File
@@ -1,4 +1,4 @@
/** This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/** This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
\file mdbx.h
\brief The libmdbx C API header file.
@@ -1023,6 +1023,9 @@ LIBMDBX_API const char *mdbx_dump_val(const MDBX_val *key, char *const buf, cons
/** \brief Panics with message and causes abnormal process termination. */
MDBX_NORETURN LIBMDBX_API void mdbx_panic(const char *fmt, ...) MDBX_PRINTF_ARGS(1, 2);
/** \brief Panics with message and causes abnormal process termination with some extra information. */
MDBX_NORETURN LIBMDBX_API void mdbx_panic_ex(const void* handle, const char *fmt, ...) MDBX_PRINTF_ARGS(2, 3);
/** \brief Panics with asserton failed message and causes abnormal process
* termination. */
#if !((defined(_WIN32) || defined(_WIN64)) && !MDBX_WITHOUT_MSVC_CRT)
+1 -1
View File
@@ -1,4 +1,4 @@
/// This file is part of the libmdbx amalgamated source code (v0.14.1-477-g15f1ce1f at 2026-03-20T00:51:59+03:00).
/// This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
/// \file mdbx.h++
/// \brief The libmdbx C++ API header file.
///
+1 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
+1 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
+1 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
+1 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
+1 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
+1 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight
+1 -1
View File
@@ -1,4 +1,4 @@
/* This file is part of the libmdbx amalgamated source code (v0.14.1-477-g051b7437 at 2026-03-20T06:30:27+03:00).
/* This file is part of the libmdbx amalgamated source code (v0.14.1-490-gcc4dadfd at 2026-03-22T18:24:09+03:00).
*
* libmdbx (aka MDBX) is an extremely fast, compact, powerful, embeddedable, transactional key-value storage engine with
* open-source code. MDBX has a specific set of properties and capabilities, focused on creating unique lightweight