diff --git a/libcontainer/container_linux.go b/libcontainer/container_linux.go index b02df818..40797434 100644 --- a/libcontainer/container_linux.go +++ b/libcontainer/container_linux.go @@ -1498,6 +1498,8 @@ func (c *linuxContainer) criuSwrk(process *Process, req *criurpc.CriuReq, opts * if err := cmd.Start(); err != nil { return err } + // we close criuServer so that even if CRIU crashes or unexpectedly exits, runc will not hang. + criuServer.Close() // cmd.Process will be replaced by a restored init. criuProcess := cmd.Process