diff --git a/daemon/monitor.go b/daemon/monitor.go index 9a087283c8..d0df021e28 100644 --- a/daemon/monitor.go +++ b/daemon/monitor.go @@ -148,7 +148,7 @@ func (daemon *Daemon) ProcessEvent(id string, e libcontainerdtypes.EventType, ei daemon.LogContainerEvent(c, "oom") case libcontainerdtypes.EventExit: - if int(ei.Pid) == c.Pid { + if ei.ProcessID == libcontainerdtypes.InitProcessName { return daemon.handleContainerExit(c, &ei) } diff --git a/libcontainerd/remote/client.go b/libcontainerd/remote/client.go index 5278d4a974..d88629affe 100644 --- a/libcontainerd/remote/client.go +++ b/libcontainerd/remote/client.go @@ -674,7 +674,7 @@ func (c *client) processEvent(ctx context.Context, et libcontainerdtypes.EventTy }).Error("failed to process event") } - if et == libcontainerdtypes.EventExit && ei.ProcessID != ei.ContainerID { + if et == libcontainerdtypes.EventExit && ei.ProcessID != libcontainerdtypes.InitProcessName { p, err := c.getProcess(ctx, ei.ContainerID, ei.ProcessID) if err != nil { @@ -823,6 +823,9 @@ func (c *client) processEventStream(ctx context.Context, ns string) { ExitCode: t.ExitStatus, ExitedAt: t.ExitedAt, } + if t.ID == t.ContainerID { + ei.ProcessID = libcontainerdtypes.InitProcessName + } case *apievents.TaskOOM: et = libcontainerdtypes.EventOOM ei = libcontainerdtypes.EventInfo{