Closed
Description
What version of Go are you using (go version
)?
$ go version go version go1.15.3 linux/amd64
Does this issue reproduce with the latest release?
Yes, but it seems to be fixed in master with d83168e.
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/root/.cache/go-build" GOENV="/root/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/go/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/usr/local/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GCCGO="gccgo" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build587886067=/tmp/go-build -gno-record-gcc-switches"
What did you do?
How to reproduce: https://gist.github.com/hlubek/f46a73bc9d150cf1f2af585b0849e3d9
- Added a compiled Go binary to a very simple Alpine Docker image with installed
tzdata
package - Timezones (e.g.
Europe/Berlin
) uses wrong daylight saving information (e.g.CEST
instead ofCET
for dates after October, 25th in 2020) - This seems to be caused by changes in the
tzdata
package in Alpine - It does not occur if the
tzdata
Alpine package is not installed and the embedded zoneinfotime/tzdata
is used
What did you expect to see?
- An error when loading the location with a non compatible zoneinfo
What did you see instead?
- A wrongly interpreted date
Notes
This is already fixed with d83168e but I wonder why there is no info about that issue (took me some time to figure it out) or a test for the code added to The fix turns out to only work if the cached zone for zoneinfo_read.go
. This is quite a standard setup for packaging Go programs so I could think many people are affected by this.now()
is the same as the last transition. This broke after the last clock change on October, 25th for CET/CEST.