runsc: Dup debug log file to stderr, so sentry panics don't get lost.
Docker and containerd do not expose runsc's stderr, so tracking down sentry panics can be painful. If we have a debug log file, we should send panics (and all stderr data) to the log file. PiperOrigin-RevId: 211992321 Change-Id: I5f0d2f45f35c110a38dab86bafc695aaba42f7a3
This commit is contained in:
parent
6516b5648b
commit
590d832099
|
@ -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}}}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue