|
@@ -178,6 +178,7 @@ func NewTracer(kernelVersion string, disableL7Tracing, disableE2ETracing, disabl
|
|
|
|
|
|
|
|
readers: map[string]*perf.Reader{},
|
|
readers: map[string]*perf.Reader{},
|
|
|
uprobes: map[string]*ebpf.Program{},
|
|
uprobes: map[string]*ebpf.Program{},
|
|
|
|
|
+ links: []link.Link{},
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -193,18 +194,26 @@ func (t *Tracer) Run(events chan<- Event) error {
|
|
|
|
|
|
|
|
func (t *Tracer) Close() {
|
|
func (t *Tracer) Close() {
|
|
|
for k, p := range t.uprobes {
|
|
for k, p := range t.uprobes {
|
|
|
- err := p.Close()
|
|
|
|
|
- klog.WithError(err).Infof("[close] uprobes %s", k)
|
|
|
|
|
|
|
+ if p != nil {
|
|
|
|
|
+ err := p.Close()
|
|
|
|
|
+ klog.WithError(err).Infof("[close] uprobes %s", k)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
for _, l := range t.links {
|
|
for _, l := range t.links {
|
|
|
- err := l.Close()
|
|
|
|
|
- klog.WithError(err).Infof("[close] links")
|
|
|
|
|
|
|
+ if l != nil {
|
|
|
|
|
+ err := l.Close()
|
|
|
|
|
+ klog.WithError(err).Infof("[close] links")
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
for k, r := range t.readers {
|
|
for k, r := range t.readers {
|
|
|
- err := r.Close()
|
|
|
|
|
- klog.WithError(err).Infof("[close] readers %s", k)
|
|
|
|
|
|
|
+ if r != nil {
|
|
|
|
|
+ err := r.Close()
|
|
|
|
|
+ klog.WithError(err).Infof("[close] readers %s", k)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if t.collection != nil {
|
|
|
|
|
+ t.collection.Close()
|
|
|
}
|
|
}
|
|
|
- t.collection.Close()
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (t *Tracer) init(ch chan<- Event) error {
|
|
func (t *Tracer) init(ch chan<- Event) error {
|
|
@@ -392,7 +401,9 @@ func (t *Tracer) LinkEbpfProg() error {
|
|
|
}
|
|
}
|
|
|
if strings.HasPrefix(programSpec.SectionName, "kretprobe/") {
|
|
if strings.HasPrefix(programSpec.SectionName, "kretprobe/") {
|
|
|
l, err = link.Kretprobe(programSpec.AttachTo, program, nil)
|
|
l, err = link.Kretprobe(programSpec.AttachTo, program, nil)
|
|
|
- t.links = append(t.links, l)
|
|
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ t.links = append(t.links, l)
|
|
|
|
|
+ }
|
|
|
continue
|
|
continue
|
|
|
}
|
|
}
|
|
|
l, err = link.Kprobe(programSpec.AttachTo, program, nil)
|
|
l, err = link.Kprobe(programSpec.AttachTo, program, nil)
|