v6.2.6.0
10 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
7ce2debb65 |
fix(build): correct -mno-avx512* flag spelling
GCC rejects -mno-avx512-4fmaps / -mno-avx512-4vnniw with the dash. The correct form is -mno-avx5124fmaps / -mno-avx5124vnniw (no dash between 'avx512' and the sub-feature name). v6.2.0-rc1 failed in CI with 'unrecognized command-line option' on these two flags; this fixes the spelling. |
||
|
|
8a48b308a8 |
build: v6.2.0 — disable AVX-512 autovec, fix v6.1.9 SIGILL
v6.1.9 was built on a GitHub Actions EPYC 7763 runner (AVX-512 capable)
and contained 741 vpbroadcastq EVEX instructions in inlined libstdc++
std::string paths. The resulting binary crashed with SIGILL on every
production node: KVM EPYC (DNS2), Ryzen 5 3600 (SAMI-PC), and any
non-x86_64 node.
cmake/AddCompilerFlags.cmake already set -march=x86-64-v2 -mtune=generic
but GCC 11.4 + libstdc++ inlining still autovectorized some paths to
AVX-512. The fix adds an explicit -mno-avx512f -mno-avx512* block
inside CMAKE_X86_64_BASELINE so the build cannot leak AVX-512 regardless
of the build host's capabilities.
Carries forward the v6.1.9 staking-selfheal fix (
|
||
|
|
fab44bb0fd |
build(tri-pi): add aarch64 + armhf cross toolchains, QEMU test harness, ARM64 libtor build
Five files for tri-pi cross-compilation and ARM64 Tor support: - cmake/aarch64-toolchain.cmake: CMake toolchain file for aarch64-linux-gnu - cmake/armhf-toolchain.cmake: same, for arm-linux-gnueabihf - scripts/tri-pi-test.sh: QEMU-based test harness (user-mode + full-system) for Pi 3B/3A+/4B/5. Runs the cross-compiled trianglesd under qemu-aarch64-static so ARM binary correctness can be validated without physical Pi hardware. - src/tor/build-libtor-aarch64.sh: cross-compile libtor.a for aarch64 using the vendored configure flow from src/tor/configure.vendored. These accompany the in-progress tri-pi bootstrap work (Hetzner Pi, raspbian packaging). Also staged (separately from the build scripts above): - src/test/fuzz/transaction_deserialize_fuzz.cpp: libFuzzer harness for CTransaction deserialization. Reads raw attacker-controlled bytes into a CDataStream and calls Unserialize on a CTransaction, then exercises hash determinism, round-trip serialize/parse, and CheckTransaction bounds. Mirrors the Bitcoin Core deserialize-fuzz pattern. Not yet wired into src/CMakeLists.txt — the BUILD_FUZZ=ON gate currently only builds fuzz_script; a follow-up patch should add the analogous stanza for this target. |
||
|
|
9a50ab3b2e |
Expand script.cpp test coverage: libFuzzer harness + EvalScript stress tests + UBSan fix (#27)
* simd: fix UBSan signed-shift UB in fft64 INNER macro
The INNER macro at src/simd.c:379 combines the low and high halves of
two FFT values with a multiplier:
((u32)((l) * (mm)) & 0xFFFFU) + ((u32)((h) * (mm)) << 16)
When (h)*(mm) is a negative s32, the (u32) cast recovers the bit
pattern (large positive number), but then << 16 operates on the
integer-promoted value (typically int on x86_64). UBSan flags this as
signed-shift of negative.
Fix: explicit (u32) cast inside the shift expression forces the shift
operand to unsigned (well-defined per C++20). Outer (u32) cast keeps
the result type consistent. Bit-equivalent at runtime; type-safe for
UBSan.
Mirrors the pattern Krystie applied in
|
||
|
|
5635cb5e57 |
build: enforce -march=x86-64-v2 on Linux x86_64
GCC 11+ on Intel CI runners (Skylake-X, Ice Lake, Sapphire Rapids) emits AVX-512/AVX10 instructions for std::string / memcpy inlining that crash with SIGILL on AMD EPYC and older Intel without those extensions. Root cause: libstdc++ is statically linked into the binary, so the build host's instruction set becomes a hard runtime requirement. The CI binary crashed immediately on DNS2/DNS3 (AMD EPYC Milan) with: traps: trianglesd[...] trap invalid opcode ip:...e432 error:0 in trianglesd[...+af3000] Disassembly of the crash site (file offset 0x15b432): 62 f1 7f 08 6f 41 ff vmovdqu8 -0x10(%rcx), %xmm0 This is an AVX10/AVX-512 instruction emitted inside std::basic_string::basic_string (statically linked libstdc++). Fix: -march=x86-64-v2 -mtune=generic for all Linux x86_64 builds. v2 baseline (SSE4.2 + POPCNT + CMPXCHG16B) is from 2009 Nehalem and supported on every x86_64 CPU we ship to. Override-able via -DCMAKE_X86_64_BASELINE=OFF if a CPU-specific build is needed. |
||
|
|
53f003aef1 |
v5.9.24: update TRI home + explorer links, networking fixes, checkpoint publisher
- qt: TRI home → https://cryptographic-triangles.org/ (UI + 65 locales) - qt: block explorer → https://blocks.cryptographic-triangles.org (65 locales) - net: networking hardening + checkpoint publisher support - build: MinGW cross-compilation toolchain, CI tridock rebuild trigger - test: checkpoint publisher + onion v3 test updates - test: chaindb equivalence test suite (LevelDB↔RocksDB migration parity) - util: expose ResetDataDirCache() for test fixture datadir switching - txdb: WriteRawPublic/ReadRawPublic test seam for raw byte-level access - version bump 5.9.23 → 5.9.24 |
||
|
|
25475d1057 |
Fix C++20 build: allocators + bundled LevelDB
C++20 broke two things in the prior bump: 1. std::allocator no longer exposes pointer/const_pointer/reference/ const_reference member typedefs, and the 2-arg allocate(n, hint) was removed. Both secure_allocator and zero_after_free_allocator inherited these from std::allocator. Define the typedefs ourselves and switch the secure_allocator allocate() to the single-arg form. 2. Bundled src/leveldb uses `std::memory_order::memory_order_relaxed` which was valid in C++17 but became a hard error in C++20 (memory_order is now a scoped enum class — the values are at namespace scope or memory_order::relaxed, not memory_order::memory_order_relaxed). LevelDB itself only needs C++11, so pin its targets to C++17 in BuildLevelDB.cmake instead of patching vendored code. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|
|
7d62e34868 |
Harden network security, fix moneysupply tracking, version system overhaul (v5.8.0)
- Fix moneysupply calculation in FastImportBlockFile and ConnectBlock assumevalid path - Route bootstrap downloads through Tor SOCKS proxy (no more clearnet leaks) - Remove hardcoded clearnet fallback IP from bootstrap - Fix snprintf missing argument in walletmodel.cpp narration key (UB/crash) - Fix potential null deref from db_strerror() in rpcwallet.cpp - Filter non-.onion addresses from HTTPS seed list parser - Add periodic re-seeding when node has 0 outbound peers - Make clientversion.h single source of truth for version display string - Remove redundant DISPLAY_VERSION macros from version.h - Update README: max supply 2,222,222, CMake build instructions, Tor-only config Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
104778fa61 |
Fix macOS build: restrict -z relro/now to Linux only
Build All Platforms / test-linux-unit (push) Failing after 40s
Build All Platforms / build-linux-qt (push) Failing after 40s
Build All Platforms / build-linux-daemon (push) Failing after 40s
Build All Platforms / build-windows-qt (push) Has been cancelled
Build All Platforms / build-windows-daemon (push) Has been cancelled
Build All Platforms / build-macos (push) Has been cancelled
Build All Platforms / release (push) Has been cancelled
Build All Platforms / Trigger TRI-PI ARM64 Build (push) Has been cancelled
The -Wl,-z,relro and -Wl,-z,now flags are ELF-specific and not supported by macOS's linker. Guard them with if(NOT APPLE). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
1bcaf6b615 |
Migrate build system from qmake/makefiles to CMake
Remove legacy build files (Makefile, makefile.unix/mingw/osx, triangles-qt.pro) and replace with CMake build system. Includes find modules for all dependencies, LevelDB bundled build, and updated CI workflow for CMake + Ninja on all platforms. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |