Skip to content

Commit aca46f6

Browse files
committed
Remove old mappings before attempting to add new ones
1 parent 78ad5b7 commit aca46f6

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

interpreter/luajit/luajit.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ package luajit // import "go.opentelemetry.io/ebpf-profiler/interpreter/luajit"
1313

1414
import (
1515
"errors"
16+
"fmt"
1617
"path"
1718
"strings"
1819
"sync"
@@ -256,22 +257,26 @@ func (l *luajitInstance) synchronizeMappings(ebpf interpreter.EbpfHandler, pid l
256257
l.jitRegions[*m] = cycle
257258
}
258259

259-
// Add new ones and remove garbage ones
260+
// Remove old ones
260261
for m, c := range l.jitRegions {
261262
k := regionKey{start: m.Vaddr, end: m.Vaddr + m.Length}
262263
if c != cycle {
263264
for _, prefix := range l.prefixes[k] {
264265
if err := ebpf.DeletePidInterpreterMapping(pid, prefix); err != nil {
265-
return err
266+
return errors.Join(err, fmt.Errorf("failed to delete prefix %v", prefix))
266267
}
267268
}
268269
delete(l.jitRegions, m)
269270
delete(l.prefixes, k)
270-
} else {
271-
if _, ok := l.prefixes[k]; !ok {
272-
if err := l.addJITRegion(ebpf, pid, m.Vaddr, m.Vaddr+m.Length); err != nil {
273-
return err
274-
}
271+
}
272+
}
273+
274+
// Add new ones
275+
for m := range l.jitRegions {
276+
k := regionKey{start: m.Vaddr, end: m.Vaddr + m.Length}
277+
if _, ok := l.prefixes[k]; !ok {
278+
if err := l.addJITRegion(ebpf, pid, m.Vaddr, m.Vaddr+m.Length); err != nil {
279+
return errors.Join(err, fmt.Errorf("failed to add JIT region %v", m))
275280
}
276281
}
277282
}

0 commit comments

Comments
 (0)