2016-04-21 11:20:01 -07:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
|
|
|
|
"github.com/docker/docker/pkg/signal"
|
2017-07-26 14:18:31 -07:00
|
|
|
"github.com/sirupsen/logrus"
|
2017-10-05 02:16:02 +02:00
|
|
|
"golang.org/x/sys/windows"
|
2016-04-21 11:20:01 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
// Copied over from docker/daemon/debugtrap_windows.go
|
|
|
|
func setupDumpStackTrap() {
|
|
|
|
go func() {
|
2017-10-05 02:16:02 +02:00
|
|
|
sa := windows.SecurityAttributes{
|
2016-04-21 11:20:01 -07:00
|
|
|
Length: 0,
|
|
|
|
}
|
2017-10-05 02:16:02 +02:00
|
|
|
ev, _ := windows.UTF16PtrFromString("Global\\docker-daemon-" + fmt.Sprint(os.Getpid()))
|
|
|
|
if h, _ := windows.CreateEvent(&sa, 0, 0, ev); h != 0 {
|
2016-04-21 11:20:01 -07:00
|
|
|
logrus.Debugf("Stackdump - waiting signal at %s", ev)
|
|
|
|
for {
|
2017-10-05 02:16:02 +02:00
|
|
|
windows.WaitForSingleObject(h, windows.INFINITE)
|
2016-09-07 13:32:35 -07:00
|
|
|
signal.DumpStacks("")
|
2016-04-21 11:20:01 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
}
|