diff --git a/src/agent/rustjail/src/container.rs b/src/agent/rustjail/src/container.rs index 88c058868a..a1207104fc 100644 --- a/src/agent/rustjail/src/container.rs +++ b/src/agent/rustjail/src/container.rs @@ -1063,7 +1063,19 @@ impl BaseContainer for LinuxContainer { let st = self.oci_state()?; for pid in self.processes.keys() { - signal::kill(Pid::from_raw(*pid), Some(Signal::SIGKILL))?; + match signal::kill(Pid::from_raw(*pid), Some(Signal::SIGKILL)) { + Err(Errno::ESRCH) => { + info!( + self.logger, + "kill encounters ESRCH, pid: {}, container: {}", + pid, + self.id.clone() + ); + continue; + } + Err(err) => return Err(anyhow!(err)), + Ok(_) => continue, + } } if spec.hooks.is_some() { diff --git a/src/runtime/pkg/containerd-shim-v2/wait.go b/src/runtime/pkg/containerd-shim-v2/wait.go index 0f6c4fe066..5e86149c1a 100644 --- a/src/runtime/pkg/containerd-shim-v2/wait.go +++ b/src/runtime/pkg/containerd-shim-v2/wait.go @@ -78,7 +78,7 @@ func wait(ctx context.Context, s *service, c *container, execID string) (int32, shimLog.WithField("sandbox", s.sandbox.ID()).Error("failed to delete sandbox") } } else { - if _, err = s.sandbox.StopContainer(ctx, c.id, false); err != nil { + if _, err = s.sandbox.StopContainer(ctx, c.id, true); err != nil { shimLog.WithError(err).WithField("container", c.id).Warn("stop container failed") } }