This is an automated email from the ASF dual-hosted git repository.
liuhan pushed a commit to branch tmp_disable_reading
in repository https://gitbox.apache.org/repos/asf/skywalking-rover.git
The following commit(s) were added to refs/heads/tmp_disable_reading by this
push:
new b26f654 add mutex
b26f654 is described below
commit b26f65489cb3b82c7389546923fce80a612ad0e2
Author: mrproliu <[email protected]>
AuthorDate: Thu Dec 19 11:52:43 2024 +0800
add mutex
---
pkg/tools/btf/linker.go | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/pkg/tools/btf/linker.go b/pkg/tools/btf/linker.go
index 867d84e..bdbd7a6 100644
--- a/pkg/tools/btf/linker.go
+++ b/pkg/tools/btf/linker.go
@@ -83,6 +83,7 @@ type Linker struct {
closeOnce sync.Once
linkedUProbes map[string]bool
+ linkMutex sync.Mutex
}
func NewLinker() *Linker {
@@ -136,6 +137,8 @@ func (m *Linker) AddSysCallWithKProbe(call string, linkK
LinkFunc, p *ebpf.Progr
if p == nil {
return
}
+ m.linkMutex.Lock()
+ defer m.linkMutex.Unlock()
kprobe, err := linkK(syscallPrefix+call, p, nil)
if err != nil {
@@ -147,10 +150,13 @@ func (m *Linker) AddSysCallWithKProbe(call string, linkK
LinkFunc, p *ebpf.Progr
}
func (m *Linker) AddTracePoint(sys, name string, p *ebpf.Program) {
+ m.linkMutex.Lock()
+ defer m.linkMutex.Unlock()
l, e := link.Tracepoint(sys, name, p, nil)
if e != nil {
m.errors = multierror.Append(m.errors, fmt.Errorf("open %s
error: %v", name, e))
} else {
+ log.Debugf("attach to the tracepoint: sys: %s, name: %s", sys,
name)
m.closers = append(m.closers, l)
}
}
@@ -264,6 +270,8 @@ func (u *UProbeExeFile) AddLinkWithType(symbol string,
enter bool, p *ebpf.Progr
}
func (u *UProbeExeFile) addLinkWithType0(symbol string, enter bool, p
*ebpf.Program, customizeAddress uint64) (link.Link, error) {
+ u.linker.linkMutex.Lock()
+ defer u.linker.linkMutex.Unlock()
// check already linked
uprobeIdentity := fmt.Sprintf("%s_%s_%t_%d", u.addr, symbol, enter,
customizeAddress)
if u.linker.linkedUProbes[uprobeIdentity] {