@@ -3,14 +3,10 @@ package ebpf
33import (
44 "bytes"
55 "context"
6- "encoding/binary"
76 "slices"
8- "strconv"
97 "sync"
10- "unsafe"
118
129 "github.com/aquasecurity/tracee/pkg/bufferdecoder"
13- "github.com/aquasecurity/tracee/pkg/capabilities"
1410 "github.com/aquasecurity/tracee/pkg/errfmt"
1511 "github.com/aquasecurity/tracee/pkg/events"
1612 "github.com/aquasecurity/tracee/pkg/logger"
@@ -191,12 +187,6 @@ func (t *Tracee) decodeEvents(ctx context.Context, sourceChan chan []byte) (<-ch
191187 continue
192188 }
193189
194- // Add stack trace if needed
195- var stackAddresses []uint64
196- if t .config .Output .StackAddresses {
197- stackAddresses = t .getStackAddresses (eCtx .StackID )
198- }
199-
200190 containerInfo := t .containers .GetCgroupInfo (eCtx .CgroupID ).Container
201191 containerData := trace.Container {
202192 ID : containerInfo .ContainerId ,
@@ -262,7 +252,7 @@ func (t *Tracee) decodeEvents(ctx context.Context, sourceChan chan []byte) (<-ch
262252 evt .ArgsNum = int (argnum )
263253 evt .ReturnValue = int (eCtx .Retval )
264254 evt .Args = args
265- evt .StackAddresses = stackAddresses
255+ evt .StackAddresses = nil
266256 evt .ContextFlags = flags
267257 evt .Syscall = syscall
268258 evt .Metadata = nil
@@ -641,50 +631,6 @@ func (t *Tracee) sinkEvents(ctx context.Context, in <-chan *trace.Event) <-chan
641631 return errc
642632}
643633
644- // getStackAddresses returns the stack addresses for a given StackID
645- func (t * Tracee ) getStackAddresses (stackID uint32 ) []uint64 {
646- stackAddresses := make ([]uint64 , maxStackDepth )
647- stackFrameSize := (strconv .IntSize / 8 )
648-
649- // Lookup the StackID in the map
650- // The ID could have aged out of the Map, as it only holds a finite number of
651- // Stack IDs in it's Map
652- var stackBytes []byte
653- err := capabilities .GetInstance ().EBPF (func () error {
654- bytes , e := t .StackAddressesMap .GetValue (unsafe .Pointer (& stackID ))
655- if e != nil {
656- stackBytes = bytes
657- }
658- return e
659- })
660- if err != nil {
661- logger .Debugw ("failed to get StackAddress" , "error" , err )
662- return stackAddresses [0 :0 ]
663- }
664-
665- stackCounter := 0
666- for i := 0 ; i < len (stackBytes ); i += stackFrameSize {
667- stackAddresses [stackCounter ] = 0
668- stackAddr := binary .LittleEndian .Uint64 (stackBytes [i : i + stackFrameSize ])
669- if stackAddr == 0 {
670- break
671- }
672- stackAddresses [stackCounter ] = stackAddr
673- stackCounter ++
674- }
675-
676- // Attempt to remove the ID from the map so we don't fill it up
677- // But if this fails continue on
678- err = capabilities .GetInstance ().EBPF (func () error {
679- return t .StackAddressesMap .DeleteKey (unsafe .Pointer (& stackID ))
680- })
681- if err != nil {
682- logger .Debugw ("failed to delete stack address from eBPF map" , "error" , err )
683- }
684-
685- return stackAddresses [0 :stackCounter ]
686- }
687-
688634// WaitForPipeline waits for results from all error channels.
689635func (t * Tracee ) WaitForPipeline (errs ... <- chan error ) error {
690636 errc := MergeErrors (errs ... )
0 commit comments