Comments (3)
cc @rgo3
from ebpf.
Hello @Andreagit97!
The current behaviour of HaveProgramHelper(ebpf.Tracing, asm.FnSeqWrite)
is a bug as it is returning a false negative. Previous to c7ba7f0 calling HaveProgramHelper(ebpf.Tracing, ...)
would result in no feature probe for Tracing
. Now that we have a probe for program type Tracing
, this part of HaveProgramHelper(ebpf.Tracing, ...)
will pass but we don't actually create a valid probe for any possible program type/helper combination which yields the false negative.
I'll spend some more time to investigate other options but the output of bpftool feature probe
doesn't give hopeful results:
eBPF helpers supported for program type tracing:
Could not determine which helpers are available
eBPF helpers supported for program type struct_ops:
Could not determine which helpers are available
eBPF helpers supported for program type ext:
Could not determine which helpers are available
eBPF helpers supported for program type lsm:
Could not determine which helpers are available
I'm afraid that creating a generalized helper probe for certain program types (StructOps
, Tracing
, Extension
, LSM
) might be quite hard/cumbersome if available helpers depend on the attach type as well. In that case the easiest solution for now could be fixing the bug by returning an inconclusive result telling the caller that we are not able to probe helpers for those program types.
Wrt to HaveProgramType(ebpf.Tracing)
, there is currently no API to check different attach types, e.g. ebpf.AttachTraceIter
. HaveProgramType
is really only responsible to ensure a program type is available in the kernel, regardless of the attach type.
from ebpf.
I'm afraid that creating a generalized helper probe for certain program types (StructOps, Tracing, Extension, LSM) might be quite hard/cumbersome if available helpers depend on the attach type as well. In that case the easiest solution for now could be fixing the bug by returning an inconclusive result telling the caller that we are not able to probe helpers for those program types.
It seems a reasonable fix! thank you
Wrt to HaveProgramType(ebpf.Tracing), there is currently no API to check different attach types, e.g. ebpf.AttachTraceIter. HaveProgramType is really only responsible to ensure a program type is available in the kernel, regardless of the attach type.
Got it! thank you for the explanation
from ebpf.
Related Issues (20)
- loader: handle missing kfunc gracefully
- Support for CORE type matches relocation
- NewMapFromID() needs a warning in docstring HOT 2
- Add support for cgroup unix socket address hooks HOT 4
- CI: TestMapBatch/Hash is flaky (arm64?) HOT 2
- dae can not recognize pppoe dial-up interface and route out correctly. HOT 1
- Kernel version detection does not work with vDSO disabled HOT 6
- Allow changing line info data in btf.Line HOT 11
- load program: invalid argument: unknown func bpf_redirect_peer#155 (51 line(s) omitted)
- With the program type raw_tracepoint, no data is generated.error: loading objects: field TraceSchedWakeup: program trace_sched_wakeup: load program: permission denied: 5: (61) r1 = *(u32 *)(r7 +2784): R7 invalid mem access 'inv' (5 line(s) omitted HOT 1
- Test TestPerfReaderWakeupEvents gets stuck on some runs HOT 9
- With Linux 4.9, loadBpfObjects() failed, error=argument list too long HOT 1
- program: relocation of program targeting a module fails if CONFIG_DEBUG_INFO_BTF_MODULES is disabled HOT 3
- Unusual `go` directive in `go.mod`
- flake: TestMapIteratorAllocations HOT 1
- TestHaveProgramType/Extension fails on kernels >6.7 HOT 2
- ci: arm64 tests fail HOT 4
- deprecation of directive `//go:linkname` HOT 3
- AttachXDP failed on Ubuntu 20.04, kernel version is 5.4 HOT 3
- program: make it harder to attach Kretprobe via link.Kprobe and vice versa
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ebpf.