From aa0d5b367c5db8c37b4a68c8b502cf6c4a6771f3 Mon Sep 17 00:00:00 2001 From: maxgio92 Date: Sat, 18 Apr 2026 06:34:29 +0000 Subject: [PATCH 1/8] docs(talks): add OpenSouthCode 2026 talk slides Marp markdown deck for 'The Binary You Ship Is the Binary You Test', a 40-minute talk on eBPF-based coverage profiling with xcover and resurgo. --- docs/talks/opensouthcode-2026/talk.md | 959 ++++++++++++++++++++++++++ 1 file changed, 959 insertions(+) create mode 100644 docs/talks/opensouthcode-2026/talk.md diff --git a/docs/talks/opensouthcode-2026/talk.md b/docs/talks/opensouthcode-2026/talk.md new file mode 100644 index 0000000..2e5969b --- /dev/null +++ b/docs/talks/opensouthcode-2026/talk.md @@ -0,0 +1,959 @@ +--- +marp: true +theme: default +paginate: true +style: | + section { + background: #ffffff; + color: #1a1a1a; + font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif; + font-size: 1.35rem; + padding: 56px 80px; + } + + /* Section break slides */ + section.break { + background: #0d1117; + color: #ffffff; + text-align: center; + justify-content: center; + align-items: center; + display: flex; + flex-direction: column; + } + section.break h1 { + font-size: 3rem; + color: #ffffff; + border: none; + } + section.break p { + color: #8b949e; + font-size: 1.1rem; + margin-top: 0.4em; + } + + /* Title slide */ + section.title { + justify-content: flex-end; + padding-bottom: 80px; + } + section.title h1 { + font-size: 2.6rem; + line-height: 1.2; + border: none; + margin-bottom: 0.3em; + } + section.title p { + color: #555; + font-size: 1rem; + } + + /* Statement slides */ + section.statement { + justify-content: center; + align-items: flex-start; + } + section.statement h1 { + border: none; + font-size: 2.4rem; + line-height: 1.3; + color: #1a1a1a; + } + + /* Regular slides */ + h1 { + font-size: 1.8rem; + color: #1a1a1a; + border-bottom: 2px solid #e8e8e8; + padding-bottom: 0.3em; + margin-bottom: 0.6em; + } + h2 { + font-size: 1.4rem; + color: #444; + } + ul { + margin-top: 0.4em; + padding-left: 1.4em; + } + li { + margin: 0.45em 0; + line-height: 1.5; + } + strong { + color: #1a1a1a; + } + blockquote { + border-left: 3px solid #d0d0d0; + padding-left: 1em; + color: #444; + margin: 0.8em 0; + font-style: italic; + } + table { + font-size: 0.9em; + width: 100%; + border-collapse: collapse; + } + th { + background: #f6f6f6; + border-bottom: 2px solid #ddd; + padding: 0.5em 0.8em; + text-align: left; + } + td { + padding: 0.45em 0.8em; + border-bottom: 1px solid #eee; + } + + /* Code blocks - github-dark style */ + pre { + background: #0d1117; + border-radius: 8px; + padding: 1em 1.2em; + margin: 0.6em 0; + overflow: hidden; + } + pre code { + color: #e6edf3; + font-size: 0.78em; + line-height: 1.6; + background: none; + padding: 0; + border-radius: 0; + } + code { + background: #f0f0f0; + padding: 0.1em 0.35em; + border-radius: 4px; + font-size: 0.85em; + } + + /* Page number */ + section::after { + font-size: 0.6rem; + color: #bbb; + content: attr(data-marpit-pagination) ' / ' attr(data-marpit-pagination-total); + } +--- + + + +# The Binary You Ship
Is the Binary You Test + +Massimiliano · OpenSouthCode 2026 + + + +--- + +# Who is this talk for? + +- You ship compiled software (Go, C, C++, Rust...) +- You care about test coverage as a quality signal +- You've felt the pain of maintaining separate instrumented builds +- Or you just think eBPF and observability are cool topics + + + +--- + + + +# The standard coverage story + + + +--- + +# Coverage today: the build-time approach + +```sh +# Go +go build -cover -covermode=count -coverpkg=./... -o myapp ./main.go + +# C/C++ with GCC +gcc -fprofile-arcs -ftest-coverage -o myapp src/*.c + +# LLVM source-based +clang -fprofile-instr-generate -fcoverage-mapping -o myapp src/*.c +``` + +- Instrumentation is **injected at compile time** +- Produces a separate artifact: the instrumented build +- Run tests against that artifact, collect the report + + + +--- + +# The problem at scale + +- You maintain **thousands of packages** +- Multiple languages: Go, C, C++, Rust, Python extensions... +- Each language has its own tool, its own flags, its own report format +- None of them work together + + + +--- + +# The doubled build matrix + +``` +package-foo/ + build/ + package-foo-1.0.0.tar.gz ← what you ship + package-foo-1.0.0-instrumented/ ← what you test +``` + +- Every package needs two build targets +- Doubled CI time, doubled storage, doubled maintenance +- The instrumented build diverges from production over time +- **You're not testing what you ship** + + + +--- + +# Production binaries are stripped + +```sh +$ file /usr/bin/containerd +/usr/bin/containerd: ELF 64-bit LSB executable, x86-64, stripped + +$ nm /usr/bin/containerd +nm: /usr/bin/containerd: no symbols +``` + +- Stripped binaries: smaller, faster, no debug info leaking +- `.symtab` removed — no symbol names, no function list +- Instrumentation-based tools **require symbols baked in at build time** +- You can't instrument a binary you've already shipped + + + +--- + + + +# What if coverage didn't require
a separate build at all? + + + +--- + +# The kernel sees everything + +- **uprobes**: Linux kernel mechanism to intercept userspace function calls +- Available since kernel 3.5 +- Attach to a function by **binary path + offset** +- No source changes. No build flags. No recompilation. +- Works on **any ELF binary** — Go, C, C++, Rust... + + + +--- + +# What is a uprobe? + +``` +Binary on disk: + offset 0x1a40: PUSH RBP ← function entry + +With uprobe attached: + offset 0x1a40: INT3 ← kernel patches this + (original bytes saved) + +At runtime, on each call: + 1. CPU hits INT3 + 2. Kernel trap handler fires + 3. BPF program runs (map update, bookkeeping) + 4. Original instruction restored, execution continues +``` + + + +--- + +# eBPF makes uprobes programmable + +- **eBPF**: run sandboxed programs in the kernel, triggered by events +- uprobe fires → eBPF program runs → write to a map → userspace reads the map +- Programs are **verifier-checked**: no crashes, bounded execution, safe +- No kernel modules. No patching. Just load and go. + +``` +userspace (xcover) kernel + │ │ + │── load BPF program ──▶ │ (verifier checks it) + │── attach uprobe ─────▶ │ function entry at offset 0x1a40 + │ │ + │ [test runs] │ + │ │ + │◀── read BPF map ────── │ which functions fired +``` + + + +--- + +# Introducing xcover + +> The binary you ship is the binary you test. + +- eBPF uprobe-based coverage profiler for compiled binaries +- Runs as a **daemon** alongside your test suite +- Attaches to the binary at its path — no process management +- Reports function-level coverage when you stop it +- Ships as a **single static binary**, zero runtime dependencies + +`github.com/maxgio92/xcover` + + + +--- + + + +# xcover in practice + + + +--- + +# Architecture + +``` +┌─────────────────────────────────────────────────────────┐ +│ xcover (daemon) │ +│ ┌─────────────┐ ┌──────────────┐ │ +│ │ UserTracee │ │ UserTracer │ │ +│ │ │ │ │ │ +│ │ resolve │───▶│ load BPF │ │ +│ │ functions │ │ attach probes│ │ +│ │ (resurgo) │ │ read events │ │ +│ └─────────────┘ └──────┬───────┘ │ +└─────────────────────────── │ ──────────────────────────┘ + │ BPF map +┌─────────────────────────── │ ──────────────────────────┐ +│ kernel │ │ +│ uprobes ◀─────┘ │ +└─────────────────────────────────────────────────────────┘ + ↕ calls traced functions +┌─────────────────────────────────────────────────────────┐ +│ your binary (tracee) ← runs independently │ +└─────────────────────────────────────────────────────────┘ +``` + + + +--- + +# The tracer API + +```go +tracee := trace.NewUserTracee( + trace.WithTraceeExePath("./myapp"), + trace.WithTraceeSymPatternInclude(`^github\.com/myorg`), + trace.WithTraceeSymPatternExclude(`_test$`), +) + +tracer := trace.NewUserTracer( + trace.WithTracerLogger(logger), + trace.WithTracerReport(true), + trace.WithTracerTracee(tracee), +) + +if err := tracer.Init(ctx); err != nil { ... } +if err := tracer.Run(ctx); err != nil { ... } +``` + + + +--- + +# The CLI workflow + +```sh +# Start the profiler (detach to background) +xcover run --path ./myapp --detach + +# Wait until all probes are attached (ready to trace) +xcover wait + +# Run your tests — nothing changes here +./myapp foo +./myapp bar +./myapp baz + +# Stop the profiler and collect the report +xcover stop +``` + + + +--- + +# Filtering functions + +```sh +# Only trace functions in your own packages +xcover run --path ./myapp \ + --include '^github\.com/myorg/myapp' \ + --detach + +# Exclude generated code +xcover run --path ./myapp \ + --include '^github\.com/myorg' \ + --exclude '\.pb\.go' \ + --detach +``` + +- `--include` and `--exclude` take Go regexes +- Applied to function names at probe-attachment time +- Fewer probes = lower overhead + + + +--- + +# The coverage report + +```json +{ + "exe_path": "./myapp", + "funcs_traced": [ + "github.com/myorg/myapp/pkg/server.HandleRequest", + "github.com/myorg/myapp/pkg/server.parseConfig", + "github.com/myorg/myapp/pkg/db.Connect", + ... + ], + "funcs_ack": [ + "github.com/myorg/myapp/pkg/server.HandleRequest", + "github.com/myorg/myapp/pkg/db.Connect" + ], + "cov_by_func": 0.72 +} +``` + +- `funcs_traced` — all functions with probes attached +- `funcs_ack` — functions called at least once during the run +- `cov_by_func` — ratio: 72% of functions were exercised + + + +--- + +# Daemon mode: across multiple test runs + +```sh +# Start once +xcover run --path ./myapp --detach +xcover wait + +# Run your test suite in parallel +./myapp foo & +./myapp bar & +./myapp baz & +wait + +# One combined report for everything +xcover stop +``` + +- xcover accumulates events across all runs until you stop it +- Useful for splitting a test suite across multiple processes +- Coverage is union of all functions called in any run + + + +--- + + + +# Demo 🎬 + + + +--- + + + +# One catch:
stripped binaries + + + +--- + +# What strip actually removes + +```sh +$ ls -lh myapp myapp-stripped +-rwxr-xr-x 1 user user 14M myapp +-rwxr-xr-x 1 user user 6M myapp-stripped + +$ readelf -S myapp | grep -E '\.symtab|\.debug' + [32] .symtab SYMTAB ... ← function names + offsets + [33] .strtab STRTAB ... ← symbol name strings + [34] .debug_info PROGBITS ... + [35] .debug_line PROGBITS ... + +$ readelf -S myapp-stripped | grep -E '\.symtab|\.debug' + (nothing) +``` + +- `strip` removes `.symtab`, `.strtab`, and all `.debug_*` sections +- **The code is still there.** Only the metadata is gone. +- Function entry points are at fixed offsets — the compiler put them there + + + +--- + +# What strip does NOT remove + +```sh +$ readelf -S myapp-stripped | grep '\.eh_frame' + [17] .eh_frame_hdr PROGBITS ... + [18] .eh_frame PROGBITS ... +``` + +- `.eh_frame` — DWARF Call Frame Information, needed for stack unwinding +- Survives `strip --strip-all` because the **C++ runtime needs it** +- Encodes function boundaries and stack layout +- The compiler always emits it. The linker always keeps it. + + + +--- + +# Introducing resurgo + +Static function recovery for stripped ELF binaries. + +Four complementary signals: + +1. **DWARF CFI** (`.eh_frame`) — function ranges, survives strip, high confidence +2. **Prologue patterns** — `push rbp; mov rbp, rsp` at function entry, architecture-specific +3. **Call-site analysis** — `call` targets are function entry points by definition +4. **Alignment boundaries** — compilers align functions to 16/32-byte boundaries + +Cross-validated: a candidate confirmed by 3+ signals is a function. + +`github.com/maxgio92/resurgo` + + + +--- + +# resurgo: the recovery pipeline + +``` +ELF binary (stripped) + │ + ├── parse .eh_frame ──────▶ function ranges (high confidence) + │ + ├── scan for prologues ───▶ entry candidates (medium confidence) + │ + ├── walk call graph ──────▶ call targets (medium confidence) + │ + └── check alignment ──────▶ alignment candidates (low confidence) + │ + ▼ + cross-validate + │ + ▼ + function list + offsets ──▶ xcover attaches uprobes +``` + + + +--- + +# Transparent to the user + +```sh +# Unstripped binary +$ xcover run --path ./myapp --detach +INFO resolved 1842 functions via .symtab + +# Stripped binary — same command +$ xcover run --path ./myapp-stripped --detach +INFO .symtab not found, falling back to static recovery +INFO resolved 1791 functions via resurgo (eh_frame + prologue analysis) +``` + +- xcover detects the binary is stripped and calls resurgo automatically +- No flags, no config change, no separate step +- Coverage report is identical in format + + + +--- + + + +# Benchmark time 📊 + + + +--- + +# The overhead model + +Every call to a traced function pays: + +``` +function called + │ + ▼ + INT3 trap ──▶ kernel mode (~X ns) + │ + ▼ + BPF program runs (~X ns) + (map update, cookie lookup) + │ + ▼ + return to userspace (~X ns) + │ + ▼ +function body executes +``` + +- **Fixed cost per call** — independent of function body size +- Overhead scales with **call frequency**, not binary size or number of functions + + + +--- + +# What we measured + +Setup: +- Binary: `[placeholder — describe test binary]` +- Functions traced: `[N]` +- Test suite: `[describe]` +- Machine: `[CPU, Linux kernel version]` + +Metrics: +- Per-call overhead (hot path, no filtering) +- Wall clock time: instrumented run vs. non-instrumented run +- Memory overhead (BPF maps) + + + +--- + +# Per-call overhead + +| Scenario | Overhead per call | +|---|---| +| No tracing (baseline) | 0 ns | +| uprobe attached, not firing | ~X ns | +| uprobe firing, BPF running | ~X ns | +| uprobe firing, map full | ~X ns | + +- **Overhead floor**: ~X ns per call even when not hit (kernel patch is in place) +- **Typical case**: ~X ns per call end-to-end +- Comparable to: `[relatable comparison — e.g. one syscall, one cache miss]` + + + +--- + +# Aggregate overhead: full test suite + +| | Wall time | Delta | +|---|---|---| +| Baseline (no tracing) | X.Xs | — | +| xcover, full binary | X.Xs | +X% | +| xcover, filtered (own pkgs) | X.Xs | +X% | + +> **+X% wall time for full test coverage on the exact production binary.** + +- Filtering to your own packages reduces overhead by ~X% +- Overhead is deterministic — no jitter, no GC interaction +- Acceptable for CI pipelines; not for latency-sensitive benchmarks + + + +--- + +# Memory: BPF maps + +``` +Map: per-function event counter + Key size: 8 bytes (cookie / function ID) + Value size: 8 bytes (uint64 hit count) + Max entries: N (one per traced function) + +Total: N × 16 bytes +``` + +- 1000 functions → 16 KB +- 10,000 functions → 160 KB +- **Negligible** compared to typical process memory + + + +--- + +# The tradeoff + +| | Instrumented build | xcover | +|---|---|---| +| Build changes required | Yes | **No** | +| Works on stripped binaries | No | **Yes** | +| Cross-language | No | **Yes** | +| Same binary as production | No | **Yes** | +| Per-call overhead | ~0 | ~X ns | +| Setup complexity | Per-language | Once | + +> You pay a small, predictable cost per function call.
In exchange: no instrumented builds, one tool, any binary. + + + +--- + + + +# What's next:
eliminate the kernel trap + + + +--- + +# The cost is in the trap + +``` +Current: kernel uprobe + function call → INT3 → kernel trap → BPF runs → return to userspace + +Hypothesis: userspace BPF + function call → intercept in-process → BPF runs → continue + (no kernel transition) +``` + +- Userspace eBPF runtimes: run BPF programs in the same process as the tracee +- No kernel involved → no trap → potentially zero context-switch overhead +- The BPF program runs as a JIT-compiled function in userspace + + + +--- + +# bpftime + +- Userspace eBPF runtime, based on LLVM JIT + Frida injection +- Intercepts `perf_event_open` / `bpf_link_create` syscalls via LD_PRELOAD +- Runs BPF programs in the tracee process — no kernel involvement +- API-compatible with kernel BPF: same programs, same maps + +``` +┌──────────────────────────────────────────────┐ +│ tracee process │ +│ ┌──────────────────┐ ┌──────────────────┐ │ +│ │ bpftime agent │ │ your binary │ │ +│ │ (LD_PRELOAD) │ │ (unmodified) │ │ +│ │ │ │ │ │ +│ │ JIT BPF prog ◀──┼──┼── function call │ │ +│ └──────────────────┘ └──────────────────┘ │ +└──────────────────────────────────────────────┘ +``` + + + +--- + +# xcover + bpftime: the experimental path + +```sh +# Start the bpftime syscall server (intercepts BPF syscalls from xcover) +xcover run --path ./myapp --userspace-bpf --detach + +# Inject the bpftime agent into the tracee +LD_PRELOAD=$(xcover agent extract) ./myapp +``` + +- `xcover agent extract` unpacks the embedded bpftime shared library +- Agent intercepts uprobe hits in-process — no kernel trap +- Everything else is identical: same report, same workflow +- Flag: `--userspace-bpf` (experimental) + + + +--- + +# Current status of the userspace path + +What works: +- Single-uprobe attachment (perf-event based) ✅ +- bpf_cookie propagation (function identification) ✅ +- Coverage report generation ✅ + +Known limitations: +- Requires LD_PRELOAD injection (not transparent for dynamically-started processes) +- Statically linked / musl binaries: no agent injection ⚠️ +- Performance numbers: still measuring + +> If you've worked with userspace eBPF runtimes — find me after the talk. + + + +--- + +# Wrapping up + +**The binary you ship is the binary you test.** + +- Coverage tooling today assumes you control the build — at scale, that assumption breaks +- eBPF uprobes let you attach to any binary at runtime, no changes required +- resurgo recovers function entry points from stripped binaries transparently +- The overhead is real, measured, and acceptable for test workloads +- Userspace BPF is the next step: same approach, lower cost + +
+ +`github.com/maxgio92/xcover` · `github.com/maxgio92/resurgo` + + + +--- + + + +# Questions? + +`github.com/maxgio92/xcover` +`github.com/maxgio92/resurgo` From 948866d8d269e8660bf7f5a72ffd836c1177fa9b Mon Sep 17 00:00:00 2001 From: dodoazzurro Date: Tue, 26 May 2026 14:08:21 +0000 Subject: [PATCH 2/8] docs(talk): add limitations and what's next slide Covers userspace BPF mode limitations (dynamic linking requirement, inlining, aggressive optimisations) and upstream gaps in bpftime and libbpfgo, along with what's actively being worked on. --- docs/talks/opensouthcode-2026/talk.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/talks/opensouthcode-2026/talk.md b/docs/talks/opensouthcode-2026/talk.md index 2e5969b..52077dc 100644 --- a/docs/talks/opensouthcode-2026/talk.md +++ b/docs/talks/opensouthcode-2026/talk.md @@ -930,6 +930,31 @@ This is worth exploring out loud, which is why it's in the talk. --- +# Limitations & what's next + +**Userspace BPF mode** +- Requires dynamically linked tracee — no static or musl binaries +- Function inlining defeats uprobe-based interception (no entry point to hook) +- Frida Gum interceptor: some aggressive compiler optimisations (tail-call elision, LTO) are not yet handled + +**Upstream gaps we're tracking** +- **bpftime**: bundled `bpftool` submodule is stale — GCC 14 and kernel 6.15+ build fixes are in libbpf/bpftool but not yet pulled in; we carry local patches in the meantime +- **libbpfgo**: no `AttachUprobeWithCookie` API — single-uprobe attach with per-probe `bpf_cookie` requires raw syscalls today; [issue pending](https://github.com/aquasecurity/libbpfgo) + +**What we're working on** +- Contribute bpftool submodule bump to bpftime upstream +- File and land `AttachUprobeWithCookie` in libbpfgo +- Remove local workaround patches as upstream absorbs the fixes +- Transparent process injection (drop the explicit `LD_PRELOAD` step) + + + +--- + # Wrapping up **The binary you ship is the binary you test.** From 1d2c22c4b7c149182da4e75e4f002f85b7c694ad Mon Sep 17 00:00:00 2001 From: Massimiliano Giovagnoli Date: Sat, 30 May 2026 15:10:35 +0200 Subject: [PATCH 3/8] docs(talk/opensouthcode-2026): improve story Signed-off-by: Massimiliano Giovagnoli --- docs/talks/opensouthcode-2026/talk.md | 405 ++++++++++++++------------ 1 file changed, 223 insertions(+), 182 deletions(-) diff --git a/docs/talks/opensouthcode-2026/talk.md b/docs/talks/opensouthcode-2026/talk.md index 52077dc..6f3a86d 100644 --- a/docs/talks/opensouthcode-2026/talk.md +++ b/docs/talks/opensouthcode-2026/talk.md @@ -151,12 +151,22 @@ That's the gap we're here to talk about. --- -# Who is this talk for? +# `$whoami` -- You ship compiled software (Go, C, C++, Rust...) -- You care about test coverage as a quality signal -- You've felt the pain of maintaining separate instrumented builds -- Or you just think eBPF and observability are cool topics +- Massimiliano Giovagnoli +- Software engineer @ Chainguard +- OSS, building and observing all the things +- Music, racing cars, nature +- `@maxgio92` on GitHub, X and Telegram, `@maxgio92.bsky.social`, `@maxgio92@hachyderm.io` +- linkedin.com/in/maxgio + +--- + +# Quality + +- How do you ensure that your software works? +- How do you ensure that your strategy is telling you a reliable story? +- How do you ensure that positive signals are meaningful? +# Testing Linux distro packages + +```yaml + - name: crane-cov + description: "Crane compiled for collecting coverage profiles" + pipeline: + - uses: go/build + with: + extra-args: -cover + test: + environment: + contents: + packages: + - busybox + - go + environment: + GOCOVERDIR: /home/build + pipeline: + - name: Run a command with the instrumented binary + runs: | + crane manifest chainguard/static + - name: Report function coverage + runs: | + go tool covdata func -i=. +``` --- -# The doubled build matrix +# The problem at scale ``` package-foo/ build/ - package-foo-1.0.0.tar.gz ← what you ship - package-foo-1.0.0-instrumented/ ← what you test + package-foo-1.0.0.apk ← what you ship + package-foo-1.0.0-instrumented.apk ← what you test ``` - Every package needs two build targets +- You maintain **thousands of packages** (Go, C, C++, Rust, Python extensions...) - Doubled CI time, doubled storage, doubled maintenance -- The instrumented build diverges from production over time -- **You're not testing what you ship** +- Reproducibility: **You're not testing what you ship** --- +--> + # What if coverage didn't require
a separate build at all? @@ -270,11 +298,14 @@ To answer that, we need to talk about what the kernel can see. # The kernel sees everything -- **uprobes**: Linux kernel mechanism to intercept userspace function calls -- Available since kernel 3.5 +- **uprobes**: Linux kernel user-level dynamic tracing +- Available since Linux 3.5 [1] - Attach to a function by **binary path + offset** -- No source changes. No build flags. No recompilation. -- Works on **any ELF binary** — Go, C, C++, Rust... +- Works on **any ELF binary** +- Integrated into eBPF since Linux 3.18 [2] - `BPF_PROG_TYPE_UPROBE` + +> 1. https://lwn.net/Articles/499190/ +> 2. https://lwn.net/Articles/637391/ --- -# The tracer API +# xcover API ```go tracee := trace.NewUserTracee( @@ -461,7 +492,6 @@ xcover run --path ./myapp \ - `--include` and `--exclude` take Go regexes - Applied to function names at probe-attachment time -- Fewer probes = lower overhead - ---- - # Demo 🎬 @@ -562,19 +564,20 @@ $ ls -lh myapp myapp-stripped -rwxr-xr-x 1 user user 14M myapp -rwxr-xr-x 1 user user 6M myapp-stripped -$ readelf -S myapp | grep -E '\.symtab|\.debug' +$ readelf --sections myapp | grep -E '\.symtab|\.debug' [32] .symtab SYMTAB ... ← function names + offsets [33] .strtab STRTAB ... ← symbol name strings [34] .debug_info PROGBITS ... [35] .debug_line PROGBITS ... -$ readelf -S myapp-stripped | grep -E '\.symtab|\.debug' - (nothing) +$ readelf --sections myapp-stripped | grep -E '\.symtab|\.debug' +$ +$ readelf --symbols myapp-stripped +$ ``` - `strip` removes `.symtab`, `.strtab`, and all `.debug_*` sections - **The code is still there.** Only the metadata is gone. -- Function entry points are at fixed offsets — the compiler put them there -# Benchmark time 📊 +# Demo 🎬 --- + + +# But what's the cost? + +--- + # The overhead model Every call to a traced function pays: @@ -699,20 +714,21 @@ Every call to a traced function pays: function called │ ▼ - INT3 trap ──▶ kernel mode (~X ns) + INT3 trap ──▶ kernel mode │ ▼ - BPF program runs (~X ns) - (map update, cookie lookup) + BPF program runs + (cookie lookup) + (potential map and ring buffer update) │ ▼ - return to userspace (~X ns) + return to userspace │ ▼ function body executes ``` -- **Fixed cost per call** — independent of function body size +- **Fixed cost per call**, independent of function body size - Overhead scales with **call frequency**, not binary size or number of functions + /* Track which functions have been reported */ + bpf_map_update_elem(&seen_funcs, &cookie, &seen, BPF_ANY); ---- + struct event_t *event = bpf_ringbuf_reserve(&events, sizeof(struct event_t), 0); + if (!event) { + return 0; + } -# Per-call overhead + event->cookie = cookie; + bpf_ringbuf_submit(event, ringbuffer_flags); -| Scenario | Overhead per call | -|---|---| -| No tracing (baseline) | 0 ns | -| uprobe attached, not firing | ~X ns | -| uprobe firing, BPF running | ~X ns | -| uprobe firing, map full | ~X ns | + return 0; +} +``` + +--- -- **Overhead floor**: ~X ns per call even when not hit (kernel patch is in place) -- **Typical case**: ~X ns per call end-to-end -- Comparable to: `[relatable comparison — e.g. one syscall, one cache miss]` +# Benchmark setup + +| Scenario | Description | How | +|---|---|---| +| **Baseline** | No tracing | Tracee runs without uprobes | +| **Idle** | uprobe attached | Probe attached to functions that never run | +| **Hit** | uprobe firing, already seen | Tracee runs the same probed function N times | +| **Miss** | uprobe firing, new function | Tracee runs N probed unique functions only once | -# What's next:
eliminate the kernel trap +# Eliminate the kernel trap + +# Demo 🎬 + +--- + # Current status of the userspace mode ## What works diff --git a/docs/talks/opensouthcode-2026/slides.pdf b/docs/talks/opensouthcode-2026/slides.pdf index fce85ecbebab43b12ccca28fc4fd77b8aa2ed528..e6f6b9146917d9f7fa812f9b463ba8d118cb8bc9 100644 GIT binary patch delta 32561 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 S02~YpH!}weIk~u;#Qy`z?Th;W delta 31658 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

~^_&Pou{Db(; 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 s+-+^P2k7Cu|FmB{14(KCp{vl2|5P Date: Sat, 30 May 2026 18:09:13 +0200 Subject: [PATCH 7/8] chore(docs/talks/code): use gruvbox theme Signed-off-by: Massimiliano Giovagnoli --- docs/talks/opensouthcode-2026/slides.md | 26 ++++++++++++++++++++--- docs/talks/opensouthcode-2026/slides.pdf | Bin 104177 -> 104145 bytes 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/docs/talks/opensouthcode-2026/slides.md b/docs/talks/opensouthcode-2026/slides.md index eaf648a..2403783 100644 --- a/docs/talks/opensouthcode-2026/slides.md +++ b/docs/talks/opensouthcode-2026/slides.md @@ -106,16 +106,36 @@ style: | border-bottom: 1px solid #eee; } - /* Code blocks - github-dark style */ + /* Code blocks - gruvbox dark */ pre { - background: #0d1117; + background: #282828; border-radius: 8px; padding: 1em 1.2em; margin: 0.6em 0; overflow: hidden; + /* Theme ships light-palette syntax colors; remap them to the + gruvbox dark palette so tokens are readable on the dark background. */ + --color-prettylights-syntax-comment: #928374; + --color-prettylights-syntax-constant: #d3869b; + --color-prettylights-syntax-entity: #fabd2f; + --color-prettylights-syntax-entity-tag: #8ec07c; + --color-prettylights-syntax-keyword: #fb4934; + --color-prettylights-syntax-string: #b8bb26; + --color-prettylights-syntax-string-regexp: #8ec07c; + --color-prettylights-syntax-variable: #fe8019; + --color-prettylights-syntax-storage-modifier-import: #ebdbb2; + --color-prettylights-syntax-constant-other-reference-link: #b8bb26; + --color-prettylights-syntax-markup-heading: #83a598; + --color-prettylights-syntax-markup-list: #fabd2f; + --color-prettylights-syntax-markup-bold: #fbf1c7; + --color-prettylights-syntax-markup-italic: #fbf1c7; + --color-prettylights-syntax-markup-inserted-text: #b8bb26; + --color-prettylights-syntax-markup-inserted-bg: #32361a; + --color-prettylights-syntax-markup-deleted-text: #fb4934; + --color-prettylights-syntax-markup-deleted-bg: #3c1f1e; } pre code { - color: #e6edf3; + color: #ebdbb2; font-size: 0.78em; line-height: 1.6; background: none; diff --git a/docs/talks/opensouthcode-2026/slides.pdf b/docs/talks/opensouthcode-2026/slides.pdf index e6f6b9146917d9f7fa812f9b463ba8d118cb8bc9..2f26b0e4691d1360a31aef05026e2626ad23cf43 100644 GIT binary patch delta 28920 zcmX_n19zBB*L7ptwrv}YZ5xfPCRc3RHX7SjV>@YVCyn1e_qW#f2WHJVGiUF8bXx;C zR|8q+3Y%1e1`WW^MkT8~++@+u%3?~)l0vKxSRq*>>1Cv*=%kWP(md@ziD@@rxx=xa z4iZ{ks4t(>V!`=#h8gyG*TRN_0qEY zupN%~)(O5@hRfDx^l>cdp6Pbzk9F@k+Q4&kXuDana=&;K0zz_2HRMv-vyR-y5E}PU*a4uPFfJu>4{)ISnRKiA8?bEnDV>D$CD2* zUl_)I5FxsC>~7?eU$+zsa_l+c(2bMBXHuPfG-5$ivX0dR-M--L@FV~`0)XPNF6KN;UL#K-) zgV-abe8Mi-EA%d$4v0i193u$9D3!l1vwVZ=t@pk5oWV&7zTD8Ap8))LVB( zf5?qeve#dSI$fc#(w%~}jy&|5XQbRx&`laN zw;V{_xr057V&QAIa6R$bX|yj2hTkI#`QbZrlYxQ<i5gX)}5i| zqFgW+Fc`m35cKwi4Ux7HH$CrifWi!l^@`-=Lu2#*;Kqv8(EIrY7<~0ioq% zRoyRR+)c!XTKApdDL>DUm$2K*K)wfhMVc~S~Cy&uIvem zDUg2yDfW}McF9@`c)upVleR7(6C=bs2*;_$*}x1j_6>M2AjBD2h8Zp(kRl#ehQa%l zgC~7zbup&-J@NuUEvy3OFR}vqr7l#d*qgBX4*mt6IzlOxqiFr#FNBiM!GWF_0k&Fd!

6mjZOM0w>9$! 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

aMh;%K7h#!jQXJ%gtg|Ybs2p}4 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 F{6Efs@WB88 delta 29028 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 Bm1_V1 From 6b231d48ba873732e644a709abeea013605cea0f Mon Sep 17 00:00:00 2001 From: Massimiliano Giovagnoli Date: Sun, 7 Jun 2026 09:50:38 +0200 Subject: [PATCH 8/8] docs(talks): update agenda and features The agenda is now aligned with the section names. The wrapping up slide now contains mentions of the latest features such as debug files support and project scoping support for Go binaries Signed-off-by: Massimiliano Giovagnoli --- docs/talks/opensouthcode-2026/slides.md | 43 +++++++++++++++-------- docs/talks/opensouthcode-2026/slides.pdf | Bin 104145 -> 104766 bytes 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/docs/talks/opensouthcode-2026/slides.md b/docs/talks/opensouthcode-2026/slides.md index 2403783..700eae8 100644 --- a/docs/talks/opensouthcode-2026/slides.md +++ b/docs/talks/opensouthcode-2026/slides.md @@ -184,17 +184,18 @@ That's the gap we're here to talk about. # Agenda -- Coverage today with ecosystem instrumentation +- The standard coverage story - Profiling with the kernel +- xcover in practice - Demo - Challenges with production binaries -- Demo +- Demo: xcover on a stripped binary - The cost of profiling with eBPF -- Benchmark -- How to eliminat the cost with userpace eBPF -- Demo -- What's next -- Conclusions +- Benchmarking the overhead +- Eliminate the kernel trap +- Demo: userspace eBPF mode +- Limitations & what's next +- Wrapping up --- @@ -332,6 +333,12 @@ To answer that, we need to talk about what the kernel can see. --- + + +# Profiling with the kernel + +--- + # The kernel sees everything - **uprobes**: Linux kernel user-level dynamic tracing @@ -568,7 +575,7 @@ Same format whether you're testing Go, C, or Rust. -# Demo 🎬 +# Demo -# One catch:
stripped binaries +# Challenges with
production binaries -# Demo 🎬 +# Demo: xcover on a stripped binary -# But what's the cost? +# The cost of profiling with eBPF + +--- + + + +# Benchmarking the overhead --- @@ -976,14 +989,14 @@ The overhead numbers for this path are still being validated. That's the open ex |---|---|---| | **Baseline** | No tracing | ~ | | **Idle** | uprobe attached | ~ | -| **Hit** | uprobe firing, already seen | **-53%** | -| **Miss** | uprobe firing, new function | **-54%** | +| **Hit** | uprobe firing, already seen | **-69%** | +| **Miss** | uprobe firing, new function | **-72%** | --- -# Demo 🎬 +# Demo: userspace eBPF mode --- @@ -993,6 +1006,7 @@ The overhead numbers for this path are still being validated. That's the open ex - Single-uprobe attachment (perf-event based) ✅ - bpf_cookie propagation (function identification) ✅ - Coverage report generation ✅ +- Unprivileged run (no `CAP_BPF`) ## Known limitations - No `uprobe_multi` link support (perf-based) @@ -1042,6 +1056,7 @@ The goal is to make the userspace path as frictionless as the kernel path. - Coverage tooling today assumes you control the build. At scale, that assumption breaks - Kernel instrumentation allows to observe the runtime +- Recent work improves Go project scoping and uses debug files when available - The overhead is real, measured. It can be acceptable for test workloads - If you want to cut the overhead, userspace BPF runtimes can reduce it up to 4x diff --git a/docs/talks/opensouthcode-2026/slides.pdf b/docs/talks/opensouthcode-2026/slides.pdf index 2f26b0e4691d1360a31aef05026e2626ad23cf43..e55a21d0dd0a9d78e031050c578bd0384695b1c5 100644 GIT binary patch delta 35906 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 Y=;vdTz~qL7k4GI0QR9)5GqE-O4|&5{WdHyG delta 35464 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

PHrUNLG!4x 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 XlTk$zmnfM53<@$hI5i3-B}Gq0Sftvt