Releases: parca-dev/parca-agent
v0.31.0
Highlights
- Custom labels to turn Go profiling labels into pprof labels
- MUSL support
- Enhanced python support, especially on arm64 and alpine/MUSL systems
- Arm64 fixes for PAC mode
- Synthetic unwinder errors
- Improved dwarf unwinding by using .debug_frame and .debug_link
- Fixes for linux 6.8 kernels (verifier errors)
What's Changed
- java: Add groundwork for the naive unwinder by @kakkoyun in #2591
- Use object file pool cache for unwind information by @gnurizen in #2595
- Fix benign but bogus main executable assumption by @gnurizen in #2596
- bpf/unwinder/native: remove duplicated code by @Sylfrena in #2603
- Scripts ergonomics by @gnurizen in #2601
- Various fixes for aarch64 by @umanwizard in #2604
- go.*: Update runtime-data by @kakkoyun in #2610
- Only attempt to profile online CPUs by @umanwizard in #2646
- Fix function end detection by @umanwizard in #2636
- Surface unwind failure reasons in status page by @umanwizard in #2649
- Bump Ainur to fix Go version misdetection by @umanwizard in #2656
- Add a bit more logging/metrics when unwind table adding fails by @umanwizard in #2670
- pkg/profiler/cpu/bpf/maps: Improve too many mappings error message by @brancz in #2675
- Add "unwind failed" synthetic stacks by @umanwizard in #2682
- add failed reasons stacks even when there are no other stacks in the profile by @umanwizard in #2687
- Avoid filling uploadJob channel w/ NoopDebugInfoManager by @gnurizen in #2686
- Fix template test by @gnurizen in #2690
- Fix bug where event processors exit on error by @umanwizard in #2688
- Oops, don't log unconditionally by @umanwizard in #2693
- Fix off-by-one error in chunk splitting by @umanwizard in #2697
- Add "request read" event by @umanwizard in #2705
- Makefile fixes for guix by @umanwizard in #2706
- fast integration by @gnurizen in #2698
- Don't swallow errors from GenerateCompactUnwindTable by @umanwizard in #2718
- minor logging improvements by @umanwizard in #2709
- Run amd64 integration tests on public github actions runners by @brancz in #2720
- remove no-op Close statement by @umanwizard in #2721
- Fix pointer authentication for FP-based unwinding by @umanwizard in #2732
- Fix arm native integration tests by @gnurizen in #2734
- Fix unwinder loading on 6.8 kernels by @umanwizard in #2667
- Bump max per-process mappings up to 2000 by @gnurizen in #2749
- bpf/unwinders/pyperf: Use an LRU map and increase the size by @brancz in #2760
- Properly get return address for leaf frames on ARM during syscalls by @umanwizard in #2761
- Log in another case where we unexpectedly fail to add unwind table by @umanwizard in #2766
- Use both .eh_frame and .debug_frame by @umanwizard in #2717
- Update MAINTAINERS.md by @Sylfrena in #2771
- Fix build ID precedence by @brancz in #2775
- spam opaquify in more places to fix verifier issues on 6.8 by @umanwizard in #2781
- .github: Don't skip building snap if only changing .c files by @brancz in #2783
- Don't use .debug_frame info for Go binaries by @umanwizard in #2782
- Fix Python version detection by @umanwizard in #2794
- feat: add procfs cmdline by @dreamerlzl in #2799
- don't hang on panic in Run() by @umanwizard in #2792
- fix duplicated leaf frame for dwarf unwinding by @umanwizard in #2811
- Get Go custom label offsets dynamically by @umanwizard in #2808
- fix verification on 5.4 by @umanwizard in #2816
- Add Tommy to MAINTAINERS.md by @gnurizen in #2820
- support musl 1.2.5/alpine 3.20 by @gnurizen in #2823
- Musl support by @gnurizen in #2605
- fix go runtime detection to work with containers by @gnurizen in #2815
- Refix 5.4 verifier error by @gnurizen in #2837
- add the stack anyway in the case of truncation for native frames. by @umanwizard in #2850
- Deduplicate list of PIDs in processEventBatcher by @umanwizard in #2845
- If we have should_use_fp_by_default set we need to honor it or we will fail to unwind go binaries with no dwarf info. by @gnurizen in #2858
- memset entire unwind_state by @gnurizen in #2857
- Use arm for skip-check by @gnurizen in #2863
- Use --verbose instead of --debug by @brancz in #2867
- ra-1 fix for FP unwinding by @umanwizard in #2874
- Fix one more case where we should assume we're done walking the stack when we have dwarf info but encounter a pc out of range. by @gnurizen in #2872
- Revert "memset the entire unwind_state to make sure no" by @gnurizen in #2878
- Remove synthetic unwinder error frames from agent and instead generate them in the unwinder with more context by @gnurizen in #2851
- Collect custom labels by @umanwizard in #2833
- fix x86 verification issues with custom labels by @umanwizard in #2886
- fix wrong computation of current goroutine in kernel code on arm by @umanwizard in #2887
- Fix various issues with debuginfo uploading by @umanwizard in #2895
- Fix various panics in DWARF decoding by @umanwizard in #2896
- Increase warning level when failing to fetch unwinder info by @umanwizard in #2892
- Fix golang runtime detection for containers by @umanwizard in #2903
New Contributors
- @umanwizard made their first contribution in #2604
Full Changelog: v0.30.0...v0.31.0
v0.30.0
v0.29.0
Changelog
Features
- *: Use fp unwinding for erlang and add erlang metadata by @brancz in #2339
- unwinder/native: Per code region unwinder selection by @javierhonduco in #2419
- python: Add initial ARM64 Support by @kakkoyun in #2439
- ruby: Add initial Ruby ARM64 support by @kakkoyun in #2523
- python: Add Python 3.12 Support by @kakkoyun in #2553
- python: Add Python 3.13 support by @kakkoyun in #2560
Fixes
- fix: bpf struct sizes fixes by @korniltsev in #2476
- Use OS num CPUs instead of runtime schedulable ones by @brancz in #2493
- Reverting unneeded sorting of mappings on wrong field by @gnurizen in #2532
Enhancements
- pkg/objectfile: Use mount namespace id in cache key instead of build id by @brancz in #2348
- feat(snap): add config option for external labels by @morphis in #2340
- test/integration: Add CPU profiler integration tests for arm64 by @Sylfrena in #2403
- Add counter metric for total bytes sent to remote store by @metalmatze in #2421
- Add metric to track number of bpf program runs by @brancz in #2460
- Add metrics to track number and type of bpf program early exits by @gnurizen in #2486
- DWARF: Add logging for unexpected CFA opcodes by @Sylfrena in #2479
- test/integration: Add initial tests for ruby and python by @kakkoyun in #2501
- Cache executables for unwind tables to speed up CGI-like workloads by @gnurizen in #2517
- debug: Make process filtering work by @gnurizen in #2550
New Contributors
- @morphis made their first contribution in #2340
- @korniltsev made their first contribution in #2476
- @gnurizen made their first contribution in #2486
Full Changelog: v0.28.0...v0.29.0
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.29.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.28.0
Changelog
Features
- interpreter: Enable Python and Ruby Unwinding by default by @kakkoyun in #2281
- interpreter: Add filenames for interpreted functions by @kakkoyun in #2278
- profiler: Make the profile events rate limits adjustable by @javierhonduco in #2322
Fixes
- python: Fix detection logic by @javierhonduco in #2263
- Fix unbounded memory growth with perfmaps/JIT dumps by @brancz in #2265
- pprof: Fix panic while assembling interpreter's profile by @javierhonduco in #2267
- pkg/compiler: Fix path building by @brancz in #2315
- pkg/metadata/compiler: Use filepath.Join by @brancz in #2316
Enhancements
- metadata: Add arch label by @kakkoyun in #2218
- metadata: Add runtime labels for NodeJS by @kakkoyun in #2233
- main: Allow passing token via env var by @brancz in #2256
- metadata: Separate label sets per runtime by @kakkoyun in https://github.com/parca-dev/parca-agent/pull/2253pull/2272
- profiler: Improve BPF events handling by @javierhonduco in #2285
- metadata: Cache and control compiler metadata fetches by @kakkoyun in #2287
- interpreter: Reduce the number of the reads from the interpreter symbol table by @kakkoyun in #2290
- runtime: Use ainur.StreamReader instead of io.RuneReader by @kakkoyun in #2304
- runtime: Optimize FindSymbol by @kakkoyun in #2305
- bpf: Remove line number from the frame by @javierhonduco in #2286
- *: Use optimized symtabs for jitdump and perfmaps by @brancz in #2307
- profiler: Fix error handling by @javierhonduco in #2318
- pkg/symtab: Use bufio.Writer to reduce write syscalls by @brancz in #2321
- pkg/perf: Prevent intermediate perfmap/jitdump entry lists by @brancz in #2325
Full Changelog: v0.27.0...v0.28.0
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.28.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.27.0
Changelog
Features
Fixes
- elfwriter: Better compressed section handling by @kakkoyun in #2133
- Fix for 5.4 and older kernels running on arm64 by @javierhonduco in #2177
- (fixes a panic) unwind info: Implement opcode for return address signing by @javierhonduco in #2193
Improvements
- Makefile: Unify make action naming by @kakkoyun in #2146
- Add LFU cache by @kakkoyun in #2038
- feat(snap): ensure snapd restarts service if the agent crashes by @jnsgruk in #2215
Performance
- unwinder/native: Remove unnecessary return address read by @javierhonduco in #2198
- runtime/interpreter: Check the paths first for faster and cheaper detection by @kakkoyun in #2196
- *: Optimize procinfo mapping updates by @kakkoyun in #2194
Memory savings in the BPF maps
- unwinder/native: Unify native stacks by @javierhonduco in #2199
- unwinder/interpreters: Unify interpreter stacks by @javierhonduco in #2214
Full Changelog: v0.26.0...v0.27.0
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.28.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.26.0
Changelog
Features
- Add check for known kernel issues by @javierhonduco in #2070
- Add support for more Ruby versions by @javierhonduco in #2090
Fixes
- pkg/process: Remove dead code from maps.go by @Sylfrena in #2052
- docs: update kernel minimum requirement by @dreamerlzl in #2063
- pkg/process: Do not overallocate executable maps by @javierhonduco in #2065
- bpf: Fix task identifier usage by to reduce CPU usage and mem usage from O(threads) -> O(procs) @javierhonduco in #2066
- pkg/stack/unwind: Remove unused argument by @javierhonduco in #2076
- Do not produce bad synthetic rows by @javierhonduco in #2080
- Remove redundant unwind rows by @javierhonduco in #2081
- Use 64 bit hash and fix out of bounds access by @javierhonduco in #2102
Testing
- Add support for printing the final BPF tables by @javierhonduco in #2077
Other
New Contributors
- @dreamerlzl made their first contribution in #2063
Full Changelog: v0.25.1...v0.26.0
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.28.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.25.1
This release is a small improvement over v0.25.0 which improves performance and lowers/removes large memory spikes.
Changelog
Fixes
- *: Add more CPU profiler metrics by @kakkoyun in #2041
- bpf: rate limit events by @javierhonduco in #2040
- pkg/process: Only keep executable mappings by @brancz in #2050
- unwinder/native: Accomodate larger program due to rate limits by @javierhonduco in #2059
- deps: Upgrade prometheus/procfs by @javierhonduco in #2061
Breaking changes
--verbose-bpf-logging
is now --bpf-verbose-logging
Full Changelog: v0.25.0...v0.25.1
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.28.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.25.0
Changelog
Features
Fixes
- objectfile: Remove panics by @kakkoyun in #2032
- pkg/cache: Fix data races by @javierhonduco in #2031
Enhancements
- Reduce size of object pool by @javierhonduco in #2028
- Add panic reporting by @javierhonduco in #2026
Full Changelog: v0.24.0...v0.25.0
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.25.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.24.0
Changelog
Features
- Add initial Ruby support by @javierhonduco in #1933
- Add initial Python Support by @kakkoyun in #1984
- pkg/stack/unwind: Add unwind tables support for Arm64 by @Sylfrena in #1953
- Add support for parsing v8 symbols by @brancz in #2021
Fixes
- pkg/convert: Fix locations by @zdyj3170101136 in #1905
- Fix warning by @Sylfrena in #1910
- fix(cache): ensure LoadingOnceCache can only load once by @maxbrunet in #1998
Enhancements
- Ensure we are running under root by @javierhonduco in #1992
- Detect the agent running in a non-root PID namespace by @javierhonduco in #1993
- unwinding: Move compact unwind table generation by @javierhonduco in #1958
- pkg/perf: More robust perf map parsing by @brancz in #1994
- Don't perform address normalization locally by @brancz in #1928
- added VDSO unit tests by @Namanl2001 in #1916
- pkg/metadata: provide jdk label by @zdyj3170101136 in #1926
- tests: Add integration tests for mixed-mode unwinding by @javierhonduco in #1943
- test/integration: Ensure we don't leak goroutines by @javierhonduco in #1960
Full Changelog: v0.23.3...v0.24.0
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.24.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.23.3
Changelog
Fixes
- fix: "BPF program too large" error in kernel release 6.4 and greater by @javierhonduco in #1908
- deploy: Remove liveness probe by @brancz in #1876
- pkg/mapping: Add more patterns for mappings not to open by @brancz in #1896
pull/1898
Improvements
- feature/convert: Add filename and support native method by @zdyj3170101136 in #1846
- pkg/runtime: Prevent allocations from searching symbol tables by @brancz in #1901
parca-agent/pull/1903 - pkg/cpu: Reduce .text section error spam by @Sylfrena in #1864
- pkg/convert: reduce allocation by @zdyj3170101136 in #1886
- test: Add 6.1 kernel to tests by @javierhonduco in #1894
/pull/1895 - Delightful logs by @Sylfrena in #1879
Full Changelog: v0.23.2...v0.23.3
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.23.3
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.