Skip to content

Bump fork to latest - #3241

Merged
gnurizen merged 3 commits into
mainfrom
repin-upstream-merge
Oct 8, 2026
Merged

gnurizen merged 3 commits into
mainfrom
repin-upstream-merge

Conversation

@gnurizen

@gnurizen gnurizen commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Moves the ebpf-profiler fork pin from 194f55bebd28 to 0b6ec2963d84. That's 281 fork commits, most of them parca-dev/opentelemetry-ebpf-profiler#341, which merged 50 rounds of upstream (195 commits, through open-telemetry/opentelemetry-ebpf-profiler#1906). The rest are fork PRs that landed on top of the merge.

Greatest hits

New unwinding and language support

Unwinder fixes

Processes and containers

GPU

  • GPU PC sampling works on 5.15 kernels again (fork Format our C code #342). The tail-call program was over the 5.15 verifier limit, and the loader quietly dropped it. A program that fails to load now fails the attach instead of being skipped.
  • Processes that map the parcagpu shim at different paths all get attached (fork Dockerfile.dev: Add delve to dev container #348). Before, only processes using the same path as the first one seen got GPU profiling, which hit any container that mounted the shim somewhere else.

Hardening

Internals

Agent changes

Bump ebpf-profiler fork to the upstream merge

Shut down when the tracer fails
When the tracer hit an unrecoverable error and closed Done(), the agent kept running without collecting anything. The trace loop now watches Done(), runs the normal shutdown, and exits with status 1.

@gnurizen gnurizen changed the title repin upstream merge Bump fork to latest Oct 5, 2026
Picks up the fork's merge of upstream main
(parca-dev/opentelemetry-ebpf-profiler#341) and the fork changes merged after
it (#345 through #348): nodev8 dispatch table lookup via the asm interpreters,
parcagpu discovery through MMAP events in place of the rtld dlopen uprobe, and
attaching to parcagpu through each process's own mapping. The fallout that
compiles against the old pin landed in the preceding commits; what is left
needs the new API:

- AttachTracer takes the CPUs to attach to. nil means every online CPU, which
  is what it did before.
- Off-CPU profiling moved out of the tracer into the probes/offcpu plugin, so
  Config.OffCPUThreshold and StartOffCPUProfiling are gone. Upstream only
  exposes the plugin as a collector extension factory, so enableOffCPU builds
  the extension and enables its probe on the tracer. The factory converts the
  threshold with the same uint32(t * math.MaxUint32) as before.
- The collector config's Validate now requires a positive reporter and
  monitor interval, so --profiling-duration must be greater than zero.

Also bumps oomprof v0.1.6 -> v0.1.7 to match the fork. The rest of the go.mod
churn beyond the replace line is go mod tidy following the fork's dependency
bumps, including collector/pdata/pprofile v0.156.0 -> v0.161.0.
The trace loop only watched mainCtx, so when the tracer hit an unrecoverable
error and closed Done(), the agent kept running without collecting anything.
Watch Done() too and cancel mainCtx so the normal shutdown runs. Done() stays
closed, so the shutdown path checks it to exit with status 1 rather than
reporting a clean exit. This matches what the fork's controller does.
@gnurizen
gnurizen force-pushed the repin-upstream-merge branch from 36ba20d to 81ae4b6 Compare October 6, 2026 11:37
@gnurizen
gnurizen marked this pull request as ready for review October 6, 2026 11:52
@gnurizen
gnurizen requested review from brancz and umanwizard October 6, 2026 11:52
Pins the head of the cuda-fixer-age-eviction branch (354184728c3f):
age-based eviction for the CUDA trace fixer, and keeping ENOENT out of
the ELF info cache (also open-telemetry/opentelemetry-ebpf-profiler#1945).
@gnurizen
gnurizen merged commit e58f700 into main Oct 8, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant