@@ -991,9 +991,17 @@ func (p *EBPFProbe) unmarshalProcessCacheEntry(ev *model.Event, data []byte) (in
991991 return n , err
992992 }
993993
994- entry . Process . ContainerContext . ContainerID = ev .ProcessContext . Process . ContainerContext . ContainerID
994+ // Important : ev.ProcessContext is populated from the unmarshaling of the event.
995995
996- entry .Process .CGroup .Merge (& ev .ProcessContext .Process .CGroup )
996+ if ! ev .ProcessContext .Process .CGroup .CGroupFile .IsNull () {
997+ cgroupContext , _ , err := p .Resolvers .ResolveCGroupContext (ev .ProcessContext .Process .CGroup .CGroupFile )
998+ if err != nil {
999+ return n , err
1000+ }
1001+ p .Resolvers .ProcessResolver .SetProcessCGroupContext (entry , cgroupContext )
1002+ } else {
1003+ seclog .Debugf ("no cgroup file available for process %d" , entry .Pid )
1004+ }
9971005
9981006 entry .Source = model .ProcessCacheEntryFromEvent
9991007
@@ -1044,14 +1052,14 @@ func (p *EBPFProbe) zeroEvent() *model.Event {
10441052 return p .event
10451053}
10461054
1047- func (p * EBPFProbe ) resolveCGroup (pid uint32 , cgroupPathKey model.PathKey , newEntryCb func (entry * model.ProcessCacheEntry , err error )) (* model.CGroupContext , error ) {
1055+ func (p * EBPFProbe ) resolveCGroup (pid uint32 , cgroupPathKey model.PathKey , newEntryCb func (entry * model.ProcessCacheEntry , err error )) (model.CGroupContext , error ) {
10481056 cgroupContext , _ , err := p .Resolvers .ResolveCGroupContext (cgroupPathKey )
10491057 if err != nil {
1050- return nil , fmt .Errorf ("failed to resolve cgroup for pid %d: %w" , pid , err )
1058+ return cgroupContext , fmt .Errorf ("failed to resolve cgroup for pid %d: %w" , pid , err )
10511059 }
10521060 updated := p .Resolvers .ProcessResolver .UpdateProcessCGroupContext (pid , cgroupContext , newEntryCb )
10531061 if ! updated {
1054- return nil , fmt .Errorf ("failed to update cgroup for pid %d" , pid )
1062+ return cgroupContext , fmt .Errorf ("failed to update cgroup for pid %d" , pid )
10551063 }
10561064
10571065 return cgroupContext , nil
@@ -1651,8 +1659,8 @@ func (p *EBPFProbe) handleEarlyReturnEvents(event *model.Event, offset int, data
16511659 if cgroupContext , err := p .resolveCGroup (event .CgroupTracing .Pid , event .CgroupTracing .CGroupContext .CGroupFile , newEntryCb ); err != nil {
16521660 seclog .Debugf ("Failed to resolve cgroup: %s" , err .Error ())
16531661 } else {
1654- event .CgroupTracing .CGroupContext = * cgroupContext
1655- event .ProcessContext .Process .CGroup = * cgroupContext
1662+ event .CgroupTracing .CGroupContext = cgroupContext
1663+ event .ProcessContext .Process .CGroup = cgroupContext
16561664 containerID := containerutils .FindContainerID (cgroupContext .CGroupID )
16571665 if containerID != "" {
16581666 event .CgroupTracing .ContainerContext .ContainerID = containerID
0 commit comments