浏览代码

Feature #TASK_QT-18250 kill 异常

Carl 8 月之前
父节点
当前提交
e15723f8c5
共有 2 个文件被更改,包括 22 次插入9 次删除
  1. 3 1
      containers/registry.go
  2. 19 8
      ebpftracer/tracer.go

+ 3 - 1
containers/registry.go

@@ -202,7 +202,9 @@ func (r *Registry) Collect(ch chan<- prometheus.Metric) {
 
 func (r *Registry) Close() {
 	r.CloseContainers()
-	r.tracer.Close()
+	if r.tracer != nil {
+		r.tracer.Close()
+	}
 	close(r.events)
 }
 

+ 19 - 8
ebpftracer/tracer.go

@@ -178,6 +178,7 @@ func NewTracer(kernelVersion string, disableL7Tracing, disableE2ETracing, disabl
 
 		readers: map[string]*perf.Reader{},
 		uprobes: map[string]*ebpf.Program{},
+		links:   []link.Link{},
 	}
 }
 
@@ -193,18 +194,26 @@ func (t *Tracer) Run(events chan<- Event) error {
 
 func (t *Tracer) Close() {
 	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 {
-		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 {
-		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 {
@@ -392,7 +401,9 @@ func (t *Tracer) LinkEbpfProg() error {
 			}
 			if strings.HasPrefix(programSpec.SectionName, "kretprobe/") {
 				l, err = link.Kretprobe(programSpec.AttachTo, program, nil)
-				t.links = append(t.links, l)
+				if err == nil {
+					t.links = append(t.links, l)
+				}
 				continue
 			}
 			l, err = link.Kprobe(programSpec.AttachTo, program, nil)