diff --git a/libcontainer/generic_error.go b/libcontainer/generic_error.go index 93bb7570..3ed33da6 100644 --- a/libcontainer/generic_error.go +++ b/libcontainer/generic_error.go @@ -1,7 +1,6 @@ package libcontainer import ( - "fmt" "io" "text/template" "time" @@ -76,7 +75,7 @@ type genericError struct { } func (e *genericError) Error() string { - return fmt.Sprintf("[%d] %s: %s", e.ECode, e.ECode, e.Message) + return e.Message } func (e *genericError) Code() ErrorCode { diff --git a/main.go b/main.go index f8982f6e..c4cb0b60 100644 --- a/main.go +++ b/main.go @@ -100,7 +100,7 @@ func main() { logrus.SetLevel(logrus.DebugLevel) } if path := context.GlobalString("log"); path != "" { - f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) + f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND|os.O_SYNC, 0666) if err != nil { return err } diff --git a/start.go b/start.go index e8b4f5cb..7e268d02 100644 --- a/start.go +++ b/start.go @@ -85,7 +85,9 @@ var initCommand = cli.Command{ runtime.LockOSThread() factory, _ := libcontainer.New("") if err := factory.StartInitialization(); err != nil { - fatal(err) + // as the error is sent back to the parent there is no need to log + // or write it to stderr because the parent process will handle this + os.Exit(1) } panic("libcontainer: container init failed to exec") }, diff --git a/utils.go b/utils.go index a720e3d2..5956a6cc 100644 --- a/utils.go +++ b/utils.go @@ -150,33 +150,15 @@ func containerPreload(context *cli.Context) error { // loadFactory returns the configured factory instance for execing containers. func loadFactory(context *cli.Context) (libcontainer.Factory, error) { - var ( - debug = "false" - root = context.GlobalString("root") - ) - if context.GlobalBool("debug") { - debug = "true" - } + root := context.GlobalString("root") abs, err := filepath.Abs(root) if err != nil { return nil, err } - var logAbs string - if l := context.GlobalString("log"); l != "" { - if logAbs, err = filepath.Abs(context.GlobalString("log")); err != nil { - return nil, err - } - } return libcontainer.New(abs, libcontainer.Cgroupfs, func(l *libcontainer.LinuxFactory) error { l.CriuPath = context.GlobalString("criu") return nil - }, - libcontainer.InitArgs(os.Args[0], - "--log", logAbs, - "--log-format", context.GlobalString("log-format"), - fmt.Sprintf("--debug=%s", debug), - "init"), - ) + }) } // getContainer returns the specified container instance by loading it from state