Descriptiontime: avoid data race in locabs
This fixes a race condition discovered by:
go build -race github.com/unixdj/benchnet/benchnode
The problem is essentially the same as issue 3967 (time:
data race on local Location), the fix being the same as
https://codereview.appspot.com/6460115/
Race trace:
==================
WARNING: DATA RACE
Write by goroutine 0:
time.initLocal()
src/pkg/time/zoneinfo_unix.go:49 +0x128
sync.(*Once).Do()
src/pkg/sync/once.go:40 +0x8d
time.(*Location).get()
src/pkg/time/zoneinfo.go:69 +0x70
time.(*Location).lookup()
src/pkg/time/zoneinfo.go:102 +0x4c
time.Time.locabs()
src/pkg/time/time.go:274 +0x179
time.Time.Format()
src/pkg/time/format.go:379 +0x60
log/syslog.netConn.writeString()
src/pkg/log/syslog/syslog.go:211 +0xc5
log/syslog.(*netConn).writeString()
src/pkg/log/syslog/syslog.go:0 +0xf9
log/syslog.(*Writer).writeString()
src/pkg/log/syslog/syslog.go:201 +0xd6
log/syslog.(*Writer).Notice()
src/pkg/log/syslog/syslog.go:181 +0x61
main.main()
github.com/unixdj/benchnet/benchnode/main.go:169 +0xa5e
runtime.main()
src/pkg/runtime/proc.c:248 +0x91
Previous read by goroutine 5:
time.Time.locabs()
src/pkg/time/time.go:270 +0x9a
time.Time.Format()
src/pkg/time/format.go:379 +0x60
log/syslog.netConn.writeString()
src/pkg/log/syslog/syslog.go:211 +0xc5
log/syslog.(*netConn).writeString()
src/pkg/log/syslog/syslog.go:0 +0xf9
log/syslog.(*Writer).writeString()
src/pkg/log/syslog/syslog.go:201 +0xd6
log/syslog.(*Writer).Notice()
src/pkg/log/syslog/syslog.go:181 +0x61
main.talk()
github.com/unixdj/benchnet/benchnode/proto.go:107 +0xc7
main.netLoop()
github.com/unixdj/benchnet/benchnode/main.go:103 +0x88
Goroutine 5 (running) created at:
main.main()
github.com/unixdj/benchnet/benchnode/main.go:158 +0xa04
runtime.main()
src/pkg/runtime/proc.c:248 +0x91
Patch Set 1 #Patch Set 2 : diff -r 6ec24fe2e501 https://go.googlecode.com/hg/ # |