Repository navigation
Bump fork to latest - #3241
Merged
Merged
Bump fork to latest #3241
Conversation
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
force-pushed
the
repin-upstream-merge
branch
from
October 6, 2026 11:37
36ba20d to
81ae4b6
Compare
gnurizen
marked this pull request as ready for review
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).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the ebpf-profiler fork pin from
194f55bebd28to0b6ec2963d84. 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
luajitexecutables, like Debian/Ubuntu's/usr/bin/luajit, which previously never handed off to the LuaJIT unwinder at the outer C/Lua boundary.js_dispatch_table_with upstream's asm interpreters instead of hand-written disassembly (fork profiler: Increase rlimit #345), so the leaptiering support can go upstream. The x64 path now has its first test.Unwinder fixes
bpf_user_pt_regslayout (upstream chore(deps): update dependency kubernetes/minikube to v1.31.1 #1877).Processes and containers
.textsection spams error log #1857). Fork Initial try for .eh_frame/.debug_frame based stack unwinding using eBPF #346 uses this to finddlopened parcagpu libraries and deletes the rtlddlopenuprobe. That uprobe patched any binary exporting adlopensymbol, and ClickHouse refuses to start when its own text segment fails a hash check. Once the agent had seen one ClickHouse process, every later one on the host failed to start.GPU
Hardening
Internals
probes/offcpuplugin (upstream Refactor converter component #1734, debuginfo/manager: Exclude the time to wait for goroutines turn #1739). Groundwork for the memory profiling series (upstream chore(deps): update golangci-lint to v1.53.1 #1744, pkg/process: Filter mappings to only consider executable sections #1745) and custom probes.Agent changes
Bump ebpf-profiler fork to the upstream merge
probes/offcpuextension. Upstream only exposes it as a collector extension factory, soenableOffCPUbuilds the extension and enables its probe on the tracer. The threshold conversion matches the old code.--profiling-durationmust now be greater than zero. Upstream's collector config validation requires positive reporter and monitor intervals (upstream chore(deps): update docker.io/otel/opentelemetry-collector-contrib docker tag to v0.80.0 #1784).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 watchesDone(), runs the normal shutdown, and exits with status 1.