From 1e890d6475a743e9b19f027e62402ac63d2305e7 Mon Sep 17 00:00:00 2001 From: criyle Date: Thu, 3 Apr 2025 23:21:14 +0000 Subject: [PATCH] container: skip waitAll --- container/container_exec_linux.go | 10 +++++++++- container/host_exec_linux.go | 8 +++----- go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/container/container_exec_linux.go b/container/container_exec_linux.go index ec7a88a..fad6dc9 100644 --- a/container/container_exec_linux.go +++ b/container/container_exec_linux.go @@ -124,6 +124,14 @@ func (c *containerServer) handleExecve(cmd *execCmd, msg unixsocket.Msg) error { if cmd.SyncAfter { if err := syncPid(1); err != nil { syscall.Kill(-1, syscall.SIGKILL) + + c.waitPid <- pid + ret := <-c.waitPidResult + err := c.sendReply(convertReply(ret), unixsocket.Msg{}) + + c.waitAll <- struct{}{} + <-c.waitAllDone + return err } } return c.handleExecveStarted(pid) @@ -164,7 +172,7 @@ func (c *containerServer) handleExecveStarted(pid int) error { } } <-c.waitAllDone - return c.sendReply(reply{}, unixsocket.Msg{}) + return nil } func convertReply(ret waitPidResult) reply { diff --git a/container/host_exec_linux.go b/container/host_exec_linux.go index e85434e..5727d68 100644 --- a/container/host_exec_linux.go +++ b/container/host_exec_linux.go @@ -45,7 +45,7 @@ type ExecveParam struct { SyncAfterExec bool } -// Execve runs process inside container. It accepts context cancelation as time limit exceeded. +// Execve runs process inside container. It accepts context cancellation as time limit exceeded. func (c *container) Execve(ctx context.Context, param ExecveParam) runner.Result { c.mu.Lock() defer c.mu.Unlock() @@ -122,13 +122,11 @@ func (c *container) waitForDone(ctx context.Context, sTime time.Time) runner.Res case <-ctx.Done(): // cancel c.sendCmd(cmd{Cmd: cmdKill}, unixsocket.Msg{}) // kill - reply, _, _ := c.recvReply() - _, _, err := c.recvReply() + reply, _, err := c.recvReply() return convertReplyResult(reply, sTime, mTime, err) case ret := <-c.recvCh: // result - c.sendCmd(cmd{Cmd: cmdKill}, unixsocket.Msg{}) // kill - _, _, err := c.recvReply() + err := c.sendCmd(cmd{Cmd: cmdKill}, unixsocket.Msg{}) // kill return convertReplyResult(ret.Reply, sTime, mTime, err) } } diff --git a/go.mod b/go.mod index fd096ca..875f59a 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,6 @@ go 1.24 require ( github.com/elastic/go-seccomp-bpf v1.5.0 - golang.org/x/net v0.37.0 + golang.org/x/net v0.38.0 golang.org/x/sys v0.31.0 ) diff --git a/go.sum b/go.sum index 18ec311..d17922b 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=