6116cff52bb26f12ef5bcc3d5405a086a7d5a960
7 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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> |