Repository navigation
v0.3.1
Added
- Sample native allocations across process threads with independent byte-sampling
state, monotonic session thread identities, stable overflow merging, and
per-thread spark Viewer roots. - Patch supported allocator relocations in the Linux main executable and loaded
ELF modules, with REL/RELA validation, RELRO permission restoration, periodic
rescans, and unload-safe cleanup. - Export distinct allocation hook, success, sampling-point, enqueue, drop,
queue high-water, live-index, thread, module, and truncation metadata.
Fixed
- Avoid Windows loader-TLS recursion by keeping allocation-hook thread state in a
preallocated native TLS registry and bypassing hooks while a thread's static TLS
vector is being constructed. - Preserve sampled allocation identity across cross-thread free and realloc,
including failure, zero-size, in-place, moved, and address-reuse cases. - Use a bounded multi-producer allocation event queue on Linux, enforce the declared
tick-event capacity on both native backends, and shard their live-allocation
indexes. - Suppress allocation sampling from aggregation, module scanning, export, and
symbolization control paths. - Quiesce active Windows detours before restoring allocator entry points during
shutdown, including allocations originating in other loaded DLLs.
Limitations
- Allocation coverage does not include static or private allocators,
VirtualAlloc/VirtualFree,mmap/munmap, or module lifetimes that begin and
end entirely between Linux rescans.
Full Changelog: v0.3.0...v0.3.1