github.com/slava-ustovytski/docker@v1.8.2-rc1/daemon/debugtrap_windows.go (about)

     1  package daemon
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"syscall"
     7  
     8  	"github.com/Sirupsen/logrus"
     9  	psignal "github.com/docker/docker/pkg/signal"
    10  	"github.com/docker/docker/pkg/system"
    11  )
    12  
    13  func setupDumpStackTrap() {
    14  	// Windows does not support signals like *nix systems. So instead of
    15  	// trapping on SIGUSR1 to dump stacks, we wait on a Win32 event to be
    16  	// signalled.
    17  	go func() {
    18  		sa := syscall.SecurityAttributes{
    19  			Length: 0,
    20  		}
    21  		ev := "Global\\docker-daemon-" + fmt.Sprint(os.Getpid())
    22  		if h, _ := system.CreateEvent(&sa, false, false, ev); h != 0 {
    23  			logrus.Debugf("Stackdump - waiting signal at %s", ev)
    24  			for {
    25  				syscall.WaitForSingleObject(h, syscall.INFINITE)
    26  				psignal.DumpStacks()
    27  			}
    28  		}
    29  	}()
    30  }