Skip to content

syscall: TestPassFD fails on Dragonfly #34958

Closed
@bradfitz

Description

@bradfitz

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

Activity

added
TestingAn issue that has been verified to require only test changes, not just a test failure.
NeedsFixThe path to resolution is known, but the work has not been done.
on Oct 17, 2019
bcmills

bcmills commented on Oct 17, 2019

@bcmills
Contributor

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

mdempsky commented on Oct 17, 2019

@mdempsky
Contributor

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

gopherbot commented on Oct 18, 2019

@gopherbot
Contributor

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

bradfitz

bradfitz commented on Oct 18, 2019

@bradfitz
ContributorAuthor

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

bradfitz commented on Oct 18, 2019

@bradfitz
ContributorAuthor

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

tklauser commented on Oct 18, 2019

@tklauser
Member

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

tklauser commented on Oct 18, 2019

@tklauser
Member

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

bradfitz commented on Oct 18, 2019

@bradfitz
ContributorAuthor

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

tuxillo commented on Oct 18, 2019

@tuxillo
Contributor

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

timdarbydotnet commented on Oct 18, 2019

@timdarbydotnet

@tuxillo It's just my builder

gopherbot

gopherbot commented on Oct 20, 2019

@gopherbot
Contributor

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

gopherbot commented on Oct 21, 2019

@gopherbot
Contributor

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

Sheshagiri

Sheshagiri commented on Oct 23, 2019

@Sheshagiri
bcmills

bcmills commented on Oct 23, 2019

@bcmills
locked and limited conversation to collaborators on Oct 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.OS-DragonflyTestingAn issue that has been verified to require only test changes, not just a test failure.help wanted

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @bradfitz@mdempsky@tuxillo@tklauser@Sheshagiri

        Issue actions

          syscall: TestPassFD fails on Dragonfly · Issue #34958 · golang/go