UltrafastSecp256k1/valgrind.supp
vano 4bd801ea01 fix(ci): valgrind.supp syntax + ct_memzero cache-line false positive
valgrind.supp: add obj:* location line — Valgrind 3.22 requires at
least one non-'...' location entry in each suppression block.

test_ct_sidechannel: ct_memzero test now uses a single aligned buffer
instead of two separate heap arrays (bufs0/bufs1). The old design
measured different memory addresses per class, causing cache-line
timing artifacts (|t|=32.10) that are unrelated to ct_memzero itself.
2026-02-24 13:09:32 +04:00

28 lines
985 B
Plaintext

# Valgrind Suppression File — UltrafastSecp256k1
#
# Purpose: suppress "still reachable" memory from program-lifetime allocations.
#
# The library maintains a ~2.5 MiB precomputed wNAF/comb table for the
# secp256k1 generator G. This table is allocated once (first use) and
# intentionally never freed — it lives for the entire process lifetime.
# Valgrind correctly classifies it as "still reachable" (a pointer to
# the block exists at program exit), NOT as a real leak.
#
# What IS still checked (will fail CI if found):
# • definitely lost (real leaks)
# • indirectly lost (real leaks)
# • possibly lost (potential leaks)
# • invalid read/write (memory errors)
# • use of uninitialised values
#
# CTest's -T MemCheck parser counts "still reachable" as a defect,
# so we suppress it here rather than weakening the error checks.
{
secp256k1_precomputed_tables_still_reachable
Memcheck:Leak
match-leak-kinds: reachable
obj:*
...
}