diff --git a/runsc/main.go b/runsc/main.go index 0c9b9af78..c51b199aa 100644 --- a/runsc/main.go +++ b/runsc/main.go @@ -179,6 +179,10 @@ func main() { if *debugLogFD > -1 { f := os.NewFile(uintptr(*debugLogFD), "debug log file") + // Dup f to stderr so we capture stack traces on panic. + if err := syscall.Dup2(int(f.Fd()), int(os.Stderr.Fd())); err != nil { + cmd.Fatalf("error dup'ing fd %d to stderr: %v", f.Fd(), err) + } e = log.MultiEmitter{e, log.GoogleEmitter{&log.Writer{Next: f}}} } else if *debugLogDir != "" { if err := os.MkdirAll(*debugLogDir, 0775); err != nil { @@ -189,6 +193,10 @@ func main() { if err != nil { cmd.Fatalf("error opening debug log file in %q: %v", *debugLogDir, err) } + // Dup f to stderr so we capture stack traces on panic. + if err := syscall.Dup2(int(f.Fd()), int(os.Stderr.Fd())); err != nil { + cmd.Fatalf("error dup'ing fd %d to stderr: %v", f.Fd(), err) + } e = log.MultiEmitter{e, log.GoogleEmitter{&log.Writer{Next: f}}} }