mirror of
https://gitflic.ru/project/erthink/libmdbx.git
synced 2026-07-14 18:46:08 +00:00
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:
+8
-1
@@ -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) которым требуется такая поддержка.
|
||||
|
||||
@@ -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
@@ -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" }
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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. */
|
||||
|
||||
@@ -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,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,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,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user