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