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

syscall: TestPassFD fails on Dragonfly #34958

Closed
bradfitz opened this issue Oct 17, 2019 · 14 comments
Closed

syscall: TestPassFD fails on Dragonfly #34958

bradfitz opened this issue Oct 17, 2019 · 14 comments

Comments

@bradfitz
Copy link
Contributor

@bradfitz bradfitz commented Oct 17, 2019

Dragonfly fails at tip by hanging in TestPassFD.

Something wrong with syscall.UnixRights or syscall.ParseUnixRights on Dragonfly?

https://storage.googleapis.com/go-build-log/a8956ab4/dragonfly-amd64_600b0a39.log

ok  	strings	0.977s
ok  	sync	0.796s
ok  	sync/atomic	0.030s
panic: test timed out after 3m0s

goroutine 27 [running]:
testing.(*M).startAlarm.func1()
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/testing/testing.go:1377 +0xdf
created by time.goFunc
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/time/sleep.go:168 +0x44

goroutine 1 [chan receive]:
testing.(*T).Run(0xc00015c000, 0x570c9d, 0xa, 0x57aa00, 0x475201)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/testing/testing.go:961 +0x378
testing.runTests.func1(0xc0000a4000)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/testing/testing.go:1202 +0x78
testing.tRunner(0xc0000a4000, 0xc000047dc0)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/testing/testing.go:909 +0xc9
testing.runTests(0xc00000e140, 0x670a40, 0x13, 0x13, 0x0)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/testing/testing.go:1200 +0x2a7
testing.(*M).Run(0xc0000a0000, 0x0)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/testing/testing.go:1117 +0x176
main.main()
	_testmain.go:82 +0x135

goroutine 34 [IO wait]:
internal/poll.runtime_pollWait(0x80094ec88, 0x72, 0xffffffffffffffff)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/runtime/netpoll.go:184 +0x55
internal/poll.(*pollDesc).wait(0xc0001042b8, 0x72, 0x201, 0x200, 0xffffffffffffffff)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc0001042a0, 0xc000140200, 0x200, 0x200, 0x0, 0x0, 0x0)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/internal/poll/fd_unix.go:169 +0x1cf
os.(*File).read(...)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/os/file_unix.go:259
os.(*File).Read(0xc000168048, 0xc000140200, 0x200, 0x200, 0xc000140200, 0x0, 0x0)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/os/file.go:116 +0x71
bytes.(*Buffer).ReadFrom(0xc000043b00, 0x59cb00, 0xc000168048, 0x47c92a, 0x5c, 0x8)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/bytes/buffer.go:204 +0xb1
io/ioutil.readAll(0x59cb00, 0xc000168048, 0x200, 0x0, 0x0, 0x0, 0x0, 0x0)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/io/ioutil/ioutil.go:36 +0x100
io/ioutil.ReadAll(...)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/io/ioutil/ioutil.go:45
syscall_test.TestPassFD(0xc00015c000)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/syscall/syscall_unix_test.go:228 +0xb23
testing.tRunner(0xc00015c000, 0x57aa00)
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/testing/testing.go:909 +0xc9
created by testing.(*T).Run
	/tmp/workdir-host-dragonfly-amd64-tdfbsd/go/src/testing/testing.go:960 +0x351
FAIL	syscall	180.019s
ok  	testing	0.134s
ok  	testing/quick	0.084s
FAIL
2019/10/17 17:06:58 Failed: exit status 1

/cc @tdfbsd @ianlancetaylor @tklauser

@bcmills
Copy link
Member

@bcmills bcmills commented Oct 17, 2019

Something wrong with syscall.UnixRights or syscall.ParseUnixRights on Dragonfly?

May be unrelated, but @mdempsky has https://golang.org/cl/201617 out to fix a bug that his new instrumentation detected in syscall.UnixRights.

@mdempsky
Copy link
Member

@mdempsky mdempsky commented Oct 17, 2019

May be unrelated, but @mdempsky has https://golang.org/cl/201617 out to fix a bug that his new instrumentation detected in syscall.UnixRights.

Yeah, I think very likely to be unrelated. While syscall.UnixRights was violating Go pointer safety rules, I don't think it was doing so in a way that would have any practical consequences today. It was only computing a "just past the end" pointer right at the end of the loop, and then the pointer immediately goes dead, so the GC will never even see it.

Either way, the CL is submitted now, so we'll see very shortly whether it fixes this.

@gopherbot
Copy link

@gopherbot gopherbot commented Oct 18, 2019

Change https://golang.org/cl/201977 mentions this issue: syscall: don't use 32-bit aligned access for cmsgAlignOf on dragonfly

@bradfitz
Copy link
Contributor Author

@bradfitz bradfitz commented Oct 18, 2019

I'm a little concerned that @tklauser's https://golang.org/cl/201977 fixes our current builder (which is Dragonfly master), but will then break for users using the latest release of Dragonfly, before the 2019-September ABI changes (http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html). That is, is this one of those ABI changes? (#34368 is also currently broken by this ABI change)

We really need two builders, one per ABI.

/cc @tdfbsd

@bradfitz
Copy link
Contributor Author

@bradfitz bradfitz commented Oct 18, 2019

I can confirm that the existing TestPassFD test passes in the syscall package on DragonFly v5.6.2-RELEASE.

Edit: and I also confirm that v5.6.2-RELEASE breaks if I patch in https://golang.org/cl/201977

@tklauser
Copy link
Member

@tklauser tklauser commented Oct 18, 2019

Yes, seems like this was an ABI change too: DragonFlyBSD/DragonFlyBSD@b3aa44a

What is the compatibility policy for Go on Dragonfly? Do we support master, last release(s)?

@tklauser
Copy link
Member

@tklauser tklauser commented Oct 18, 2019

Maybe we could use something similar to the freebsd port in order to support both ABI versions. I‘ll try to come up with something in https://golang.org/cl/201977

@bradfitz
Copy link
Contributor Author

@bradfitz bradfitz commented Oct 18, 2019

What is the compatibility policy for Go on Dragonfly? Do we support master, last release(s)?

I keep asking but I haven't heard anybody propose something yet, so I will:

Go's DragonFly support policy is that we support the latest stable release primarily, but also try to keep DragonFly master passing, in prep for it to become the latest stable release.

But that does mean we need one more builder at the moment.

@tuxillo
Copy link
Contributor

@tuxillo tuxillo commented Oct 18, 2019

As far as I know @tdfbsd is currently providing a builder for tip (master branch) and we're in the process of migrating it from his box to DragonFlyBSD's.

Not sure if you're talking about that builder or any internal builders you may have.

@timdarbydotnet
Copy link

@timdarbydotnet timdarbydotnet commented Oct 18, 2019

@tuxillo It's just my builder

@gopherbot gopherbot closed this in 78c168f Oct 20, 2019
@gopherbot
Copy link

@gopherbot gopherbot commented Oct 20, 2019

Change https://golang.org/cl/202179 mentions this issue: unix: don't use 32-bit aligned access for cmsgAlignOf on dragonfly after ABI change

gopherbot pushed a commit to golang/sys that referenced this issue Oct 20, 2019
…ter ABI change

Use 32-bit alignment for versions before the September 2019 ABI changes
http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html

Follows CL 201977 which did the same for package syscall.

Updates golang/go#34958

Change-Id: I0e13fccf6563e4d34dd4aa7410be044881f220aa
Reviewed-on: https://go-review.googlesource.com/c/sys/+/202179
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
@gopherbot
Copy link

@gopherbot gopherbot commented Oct 21, 2019

Change https://golang.org/cl/202478 mentions this issue: dashboard: update Dragonfly tip policy for ABI change, add release builder

gopherbot pushed a commit to golang/build that referenced this issue Oct 21, 2019
…ilder

From golang/go#34958 (comment) :

> Go's DragonFly support policy is that we support the latest stable
> release primarily, but also try to keep DragonFly master passing, in
> prep for it to become the latest stable release.
>
> But that does mean we need one more builder at the moment.

Updates golang/go#34958
Updates golang/go#23060

Change-Id: I84be7c64eac593dee2252c397f9529deea13605a
Reviewed-on: https://go-review.googlesource.com/c/build/+/202478
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
@Sheshagiri

This comment was marked as off-topic.

@bcmills

This comment was marked as off-topic.

zchee pushed a commit to zchee/golang-wiki that referenced this issue Oct 29, 2019
codebien added a commit to codebien/build that referenced this issue Nov 13, 2019
…ilder

From golang/go#34958 (comment) :

> Go's DragonFly support policy is that we support the latest stable
> release primarily, but also try to keep DragonFly master passing, in
> prep for it to become the latest stable release.
>
> But that does mean we need one more builder at the moment.

Updates golang/go#34958
Updates golang/go#23060

Change-Id: I84be7c64eac593dee2252c397f9529deea13605a
Reviewed-on: https://go-review.googlesource.com/c/build/+/202478
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
@golang golang locked and limited conversation to collaborators Oct 22, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
8 participants
You can’t perform that action at this time.