Bitcoin full node and query server

Aug 7, 2026

View in context in the libbitcoin Slack #general mirror.

evoskuil00:50
A little piece of debug trivia that I find very interesting, given that we build release with full noexcept enabled...
A race that corrupts state kills the process with SIGSEGV/SIGBUS on a wild access. noexcept is invisible to that: it governs C++ exception propagation, not signal delivery. The .ips report and any core capture the faulting instruction and all thread stacks regardless.

Here noexcept changes the shape of the dump, in our favor: the throw hits the noexcept boundary and std::terminate fires at the throw site, without unwinding — SIGABRT with the origin frames still on the stack (abort ← terminate ← __cxa_throw ← the actual thrower). In a debug build with NOEXCEPT off, the exception would unwind — and if anything up-stack caught it, the origin would vanish entirely.

So for localization, release-with-noexcept is arguably the better trap.