summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2019-11-22 15:21:31 -0800
committergVisor bot <gvisor-bot@google.com>2019-11-22 15:47:15 -0800
commit5eb522193cf206a36c1663d909b9e53ae93b2b6a (patch)
tree994668bc4d8abeb095570fe32126ab976d571cf6
parent8eb68912e40bc87c932baeb13d151fd590d7d279 (diff)
Force timezone initialization before filter installation
The first use of time.Local (usually via time.Time.Date, et. al) performs initialization of the local timezone, which involves open several tzdata files from the host. Since filter installation disallows open, we should explicitly force this initialization rather than implicitly depending on the first logging (or other time) call occurring before filter installation. PiperOrigin-RevId: 282053121
-rw-r--r--runsc/main.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/runsc/main.go b/runsc/main.go
index 711f60d4f..4682b308c 100644
--- a/runsc/main.go
+++ b/runsc/main.go
@@ -26,6 +26,7 @@ import (
"path/filepath"
"strings"
"syscall"
+ "time"
"flag"
@@ -237,6 +238,18 @@ func main() {
log.SetLevel(log.Debug)
}
+ // Logging will include the local date and time via the time package.
+ //
+ // On first use, time.Local initializes the local time zone, which
+ // involves opening tzdata files on the host. Since this requires
+ // opening host files, it must be done before syscall filter
+ // installation.
+ //
+ // Generally there will be a log message before filter installation
+ // that will force initialization, but force initialization here in
+ // case that does not occur.
+ _ = time.Local.String()
+
subcommand := flag.CommandLine.Arg(0)
var e log.Emitter