diff --git a/daemon/logger/gcplogs/gcplogging.go b/daemon/logger/gcplogs/gcplogging.go index 94ef107510..92178f189a 100644 --- a/daemon/logger/gcplogs/gcplogging.go +++ b/daemon/logger/gcplogs/gcplogging.go @@ -117,15 +117,6 @@ func New(info logger.Info) (logger.Logger, error) { return nil, fmt.Errorf("No project was specified and couldn't read project from the metadata server. Please specify a project") } - // Issue #29344: gcplogs segfaults (static binary) - // If HOME is not set, logging.NewClient() will call os/user.Current() via oauth2/google. - // However, in static binary, os/user.Current() leads to segfault due to a glibc issue that won't be fixed - // in a short term. (golang/go#13470, https://sourceware.org/bugzilla/show_bug.cgi?id=19341) - // So we forcibly set HOME so as to avoid call to os/user/Current() - if err := ensureHomeIfIAmStatic(); err != nil { - return nil, err - } - c, err := logging.NewClient(context.Background(), project) if err != nil { return nil, err diff --git a/daemon/logger/gcplogs/gcplogging_linux.go b/daemon/logger/gcplogs/gcplogging_linux.go deleted file mode 100644 index 1c2160c41c..0000000000 --- a/daemon/logger/gcplogs/gcplogging_linux.go +++ /dev/null @@ -1,27 +0,0 @@ -package gcplogs // import "github.com/docker/docker/daemon/logger/gcplogs" - -import ( - "os" - - "github.com/docker/docker/dockerversion" - "github.com/docker/docker/pkg/homedir" - "github.com/sirupsen/logrus" -) - -// ensureHomeIfIAmStatic ensure $HOME to be set if dockerversion.IAmStatic is "true". -// See issue #29344: gcplogs segfaults (static binary) -// If HOME is not set, logging.NewClient() will call os/user.Current() via oauth2/google. -// If compiling statically, make sure osusergo build tag is also used to prevent a segfault -// due to a glibc issue that won't be fixed in a short term -// (see golang/go#13470, https://sourceware.org/bugzilla/show_bug.cgi?id=19341). -// So we forcibly set HOME so as to avoid call to os/user/Current() -func ensureHomeIfIAmStatic() error { - // Note: dockerversion.IAmStatic is only available for linux. - // So we need to use them in this gcplogging_linux.go rather than in gcplogging.go - if dockerversion.IAmStatic == "true" && os.Getenv("HOME") == "" { - home := homedir.Get() - logrus.Warnf("gcplogs requires HOME to be set for static daemon binary. Forcibly setting HOME to %s.", home) - os.Setenv("HOME", home) - } - return nil -} diff --git a/daemon/logger/gcplogs/gcplogging_others.go b/daemon/logger/gcplogs/gcplogging_others.go deleted file mode 100644 index 55f43b0c0c..0000000000 --- a/daemon/logger/gcplogs/gcplogging_others.go +++ /dev/null @@ -1,8 +0,0 @@ -//go:build !linux -// +build !linux - -package gcplogs // import "github.com/docker/docker/daemon/logger/gcplogs" - -func ensureHomeIfIAmStatic() error { - return nil -}