Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/sys/unix: Gettimeofday broken on Darwin: doesn't set the time. #38925

Closed
wbl opened this issue May 7, 2020 · 7 comments
Closed

x/sys/unix: Gettimeofday broken on Darwin: doesn't set the time. #38925

wbl opened this issue May 7, 2020 · 7 comments
Labels
FrozenDueToAge help wanted NeedsFix The path to resolution is known, but the work has not been done.
Milestone

Comments

@wbl
Copy link

wbl commented May 7, 2020

What version of Go are you using (go version)?

$ go version
go version go1.14 darwin/amd64

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/watsonladd/Library/Caches/go-build"
GOENV="/Users/watsonladd/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY="code.cfops.it,github.com/cloudflare"
GONOSUMDB="code.cfops.it,github.com/cloudflare"
GOOS="darwin"
GOPATH="/Users/watsonladd/go"
GOPRIVATE="code.cfops.it,github.com/cloudflare"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.14.2_1/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.14.2_1/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
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 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ps/_z7r371n1kdf72n71mlyf28h0000gp/T/go-build470647461=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

package main

import (
	"fmt"

	"golang.org/x/sys/unix"
)

func main() {
	time := unix.Timeval{}
	err := unix.Gettimeofday(&time)
	if err != nil {
		panic(err)
	}
	fmt.Printf("sec=%d\n", time.Sec)
	fmt.Printf("%+v\n", time)
}

What did you expect to see?

The current time

What did you see instead?

All zeros

@gopherbot gopherbot added this to the Unreleased milestone May 7, 2020
@ianlancetaylor
Copy link
Contributor

I imagine that this was broken when the Darwin support was converted to use libc. Someone probably needs to drop the various Gettimeofday implementations in syscall_darwin_CPU.go and just call the libc function.

@ianlancetaylor ianlancetaylor added help wanted NeedsFix The path to resolution is known, but the work has not been done. labels May 7, 2020
@abemotion
Copy link

https://golang.org/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_386.go#L27
https://golang.org/src/cmd/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go#L25

These type conversion are wrong in Gettimeofday. (comment too)
gettimeofday returns (sec int64, usec int32, err error)
but sec is converted from int64 to int32.

@gopherbot
Copy link

Change https://golang.org/cl/232803 mentions this issue: unix: call gettimeofday libc function directly

@tklauser
Copy link
Member

tklauser commented May 8, 2020

@wbl thanks for the report. I've sent a fix at https://golang.org/cl/232803 and this works on darwin/amd64 for me with your code snippet. Does this fix the issue for you as well?

@wbl
Copy link
Author

wbl commented May 8, 2020

I might need some step by step instructions on how to check out the tree and run the newly built tool against my example: not that experienced with gerrit.

@Lekensteyn was the original discoverer of this issue: I just passed it on.

@tklauser
Copy link
Member

tklauser commented May 8, 2020

@wbl you should be able to get the CL into your local clone of golang.org/x/sys using git fetch "https://go.googlesource.com/sys" refs/changes/03/232803/2 && git checkout FETCH_HEAD

@wbl
Copy link
Author

wbl commented May 8, 2020

It worked for me! Thanks for your instructions and quick fix to this issue.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge help wanted NeedsFix The path to resolution is known, but the work has not been done.
Projects
None yet
Development

No branches or pull requests

5 participants