Merge pull request #3045 from anmaxvl/retry-unix-eintr

retry unix.EINTR for container init process
This commit is contained in:
Kir Kolyshkin
2021-07-07 18:25:17 -07:00
committed by GitHub
2 changed files with 11 additions and 2 deletions
+1 -1
View File
@@ -227,7 +227,7 @@ func (l *linuxStandardInit) Init() error {
return err
}
if err := unix.Exec(name, l.config.Args[0:], os.Environ()); err != nil {
if err := system.Exec(name, l.config.Args[0:], os.Environ()); err != nil {
return fmt.Errorf("can't exec user process: %w", err)
}
return nil
+10 -1
View File
@@ -35,7 +35,16 @@ func Execv(cmd string, args []string, env []string) error {
return err
}
return unix.Exec(name, args, env)
return Exec(name, args, env)
}
func Exec(cmd string, args []string, env []string) error {
for {
err := unix.Exec(cmd, args, env)
if err != unix.EINTR { //nolint:errorlint // unix errors are bare
return err
}
}
}
func Prlimit(pid, resource int, limit unix.Rlimit) error {