| // +build !windows | |
| package daemon | |
| import ( | |
| "os" | |
| "os/signal" | |
| stackdump "github.com/docker/docker/pkg/signal" | |
| "github.com/sirupsen/logrus" | |
| "golang.org/x/sys/unix" | |
| ) | |
| func (d *Daemon) setupDumpStackTrap(root string) { | |
| c := make(chan os.Signal, 1) | |
| signal.Notify(c, unix.SIGUSR1) | |
| go func() { | |
| for range c { | |
| path, err := stackdump.DumpStacks(root) | |
| if err != nil { | |
| logrus.WithError(err).Error("failed to write goroutines dump") | |
| } else { | |
| logrus.Infof("goroutine stacks written to %s", path) | |
| } | |
| } | |
| }() | |
| } |