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

net: use libSystem bindings for DNS resolution on macos if cgo is unavailable #30686

Closed
wants to merge 36 commits into from

Conversation

grantseltzer
Copy link
Contributor

@grantseltzer grantseltzer commented Mar 8, 2019

This change adds directives to link the res_search function in libSystem.
The corresponding Go function is then used in lookup_darwin.go for
resolution when cgo is disabled. This makes DNS resolution logic more
reliable as macOS has some unique quirks such as the /etc/resolver/
directory for specifying nameservers.

Fixes #12524

@googlebot googlebot added the cla: yes Used by googlebot to label PRs as having a valid CLA. The text of this label should not change. label Mar 8, 2019
@gopherbot
Copy link
Contributor

This PR (HEAD: bb803d8) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@bradfitz bradfitz changed the title net: Use libSystem bindings for DNS resolution on macos if CGO is unavailable net: use libSystem bindings for DNS resolution on macos if cgo is unavailable Mar 8, 2019
@gopherbot
Copy link
Contributor

Message from Brad Fitzpatrick:

Patch Set 2:

(2 comments)


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Elias Naur:

Patch Set 2:

This will break on iOS because of missing arm and arm64 assembly. If you take a stab at the implementation I can test it.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 2:

Patch Set 2:

This will break on iOS because of missing arm and arm64 assembly. If you take a stab at the implementation I can test it.

Ah woops, I will add those now.

Thank you for help testing it. For learning purposes could you also tell me how I can test it myself?


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR (HEAD: 044733c) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Elias Naur:

Patch Set 2:

Patch Set 2:

Patch Set 2:

This will break on iOS because of missing arm and arm64 assembly. If you take a stab at the implementation I can test it.

Ah woops, I will add those now.

Thank you for help testing it. For learning purposes could you also tell me how I can test it myself?

Take a look at misc/ios/README. It's not trivial :)


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR (HEAD: 86893a3) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

This PR (HEAD: 75578bc) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

This PR (HEAD: b9747ec) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 6:

(2 comments)

Patch Set 2:

Patch Set 2:

Patch Set 2:

This will break on iOS because of missing arm and arm64 assembly. If you take a stab at the implementation I can test it.

Ah woops, I will add those now.

Thank you for help testing it. For learning purposes could you also tell me how I can test it myself?

Take a look at misc/ios/README. It's not trivial :)

Ah alright, thank you! Reading through it now, I just pushed the arm and arm64 assembly.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Elias Naur:

Patch Set 6:

(4 comments)

Patch Set 6:

(2 comments)

Patch Set 2:

Patch Set 2:

Patch Set 2:

This will break on iOS because of missing arm and arm64 assembly. If you take a stab at the implementation I can test it.

Ah woops, I will add those now.

Thank you for help testing it. For learning purposes could you also tell me how I can test it myself?

Take a look at misc/ios/README. It's not trivial :)

Ah alright, thank you! Reading through it now, I just pushed the arm and arm64 assembly.

Thansk. Running "GOARCH=arm64 ./iostest.bash" on my macOS machine gives me:

$ GOARCH=arm64 ./iostest.bash
Building Go cmd/dist using /Users/elias/go1.10.1.
Building Go toolchain1 using /Users/elias/go1.10.1.
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
Building Go toolchain2 using go_bootstrap and Go toolchain1.
Building Go toolchain3 using go_bootstrap and Go toolchain2.
Building packages and commands for host, darwin/amd64.
go build net: package using cgo has Go assembly file lookup_darwin_amd64.s
go tool dist: FAILED: /Users/elias/go-tip/pkg/tool/darwin_amd64/go_bootstrap install -gcflags=all= -ldflags=all= std cmd: exit status 1

Note that CGO_ENABLED=1 is required for iOS. Perhaps that means you can get away with stubs for the assembly implementation on arm and arm64.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 6:

Patch Set 6:

(4 comments)

Patch Set 6:

(2 comments)

Patch Set 2:

Patch Set 2:

Patch Set 2:

This will break on iOS because of missing arm and arm64 assembly. If you take a stab at the implementation I can test it.

Ah woops, I will add those now.

Thank you for help testing it. For learning purposes could you also tell me how I can test it myself?

Take a look at misc/ios/README. It's not trivial :)

Ah alright, thank you! Reading through it now, I just pushed the arm and arm64 assembly.

Thansk. Running "GOARCH=arm64 ./iostest.bash" on my macOS machine gives me:

$ GOARCH=arm64 ./iostest.bash
Building Go cmd/dist using /Users/elias/go1.10.1.
Building Go toolchain1 using /Users/elias/go1.10.1.
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
Building Go toolchain2 using go_bootstrap and Go toolchain1.
Building Go toolchain3 using go_bootstrap and Go toolchain2.
Building packages and commands for host, darwin/amd64.
go build net: package using cgo has Go assembly file lookup_darwin_amd64.s
go tool dist: FAILED: /Users/elias/go-tip/pkg/tool/darwin_amd64/go_bootstrap install -gcflags=all= -ldflags=all= std cmd: exit status 1

Note that CGO_ENABLED=1 is required for iOS. Perhaps that means you can get away with stubs for the assembly implementation on arm and arm64.

Ah alright. I'm having trouble running that script myself but I think it's a problem with my go install. I found a bunch of examples in the runtime package of arm assembly stubs so i'll push those up.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR (HEAD: a628c74) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Ian Lance Taylor:

Patch Set 7: Run-TryBot+1


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 7:

TryBots beginning. Status page: https://farmer.golang.org/try?commit=323b1189


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 7:

Build is still in progress...
This change failed on freebsd-amd64-12_0:
See https://storage.googleapis.com/go-build-log/323b1189/freebsd-amd64-12_0_82b37e11.log

Consult https://build.golang.org/ to see whether it's a new failure. Other builds still in progress; subsequent failure notices suppressed until final report.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 7: TryBot-Result-1

19 of 19 TryBots failed:
Failed on freebsd-amd64-12_0: https://storage.googleapis.com/go-build-log/323b1189/freebsd-amd64-12_0_82b37e11.log
Failed on openbsd-amd64-64: https://storage.googleapis.com/go-build-log/323b1189/openbsd-amd64-64_318e0845.log
Failed on js-wasm: https://storage.googleapis.com/go-build-log/323b1189/js-wasm_9ca867af.log
Failed on nacl-amd64p32: https://storage.googleapis.com/go-build-log/323b1189/nacl-amd64p32_ce90a3fc.log
Failed on misc-compile-openbsd: https://storage.googleapis.com/go-build-log/323b1189/misc-compile-openbsd_bb0824ec.log
Failed on misc-compile: https://storage.googleapis.com/go-build-log/323b1189/misc-compile_6af32dfb.log
Failed on misc-vet-vetall: https://storage.googleapis.com/go-build-log/323b1189/misc-vet-vetall_e5501b6a.log
Failed on linux-amd64-race: https://storage.googleapis.com/go-build-log/323b1189/linux-amd64-race_a9527316.log
Failed on misc-compile-nacl: https://storage.googleapis.com/go-build-log/323b1189/misc-compile-nacl_1242d192.log
Failed on misc-compile-plan9: https://storage.googleapis.com/go-build-log/323b1189/misc-compile-plan9_e903b2f2.log
Failed on misc-compile-mips: https://storage.googleapis.com/go-build-log/323b1189/misc-compile-mips_daa48457.log
Failed on linux-amd64: https://storage.googleapis.com/go-build-log/323b1189/linux-amd64_5500302f.log
Failed on misc-compile-netbsd: https://storage.googleapis.com/go-build-log/323b1189/misc-compile-netbsd_8dbc0145.log
Failed on misc-compile-ppc: https://storage.googleapis.com/go-build-log/323b1189/misc-compile-ppc_1225f59c.log
Failed on misc-compile-freebsd: https://storage.googleapis.com/go-build-log/323b1189/misc-compile-freebsd_9d8852b0.log
Failed on nacl-386: https://storage.googleapis.com/go-build-log/323b1189/nacl-386_e8c8b41c.log
Failed on linux-386: https://storage.googleapis.com/go-build-log/323b1189/linux-386_aa612bf2.log
Failed on windows-amd64-2016: https://storage.googleapis.com/go-build-log/323b1189/windows-amd64-2016_6a82fe7b.log
Failed on windows-386-2008: https://storage.googleapis.com/go-build-log/323b1189/windows-386-2008_0e4e8a73.log

Consult https://build.golang.org/ to see whether they are new failures.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR (HEAD: 05b9e5f) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Ian Lance Taylor:

Patch Set 8:

(1 comment)


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 8:

(4 comments)

Had some real silly errors for undefined variables. Turns out the vscode extension i'm used to wasn't installed. Sorry about that.

Also realized the the libcCall() function is in runtime. I can copy it over and all the associated functions and datatypes. I can also move the lookup routines to the runtime package. Any thoughts on what's best? Doesn't look like it's defined anywhere besides runtime.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Ian Lance Taylor:

Patch Set 8:

Also realized the the libcCall() function is in runtime. I can copy it over and all the associated functions and datatypes. I can also move the lookup routines to the runtime package. Any thoughts on what's best? Doesn't look like it's defined anywhere besides runtime.

Perhaps you can do what the syscall package does. You'll need a small helper in runtime/sys_darwin.go. Or moving a couple of functions to the runtime package is likely fine.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 8:

(1 comment)

Patch Set 8:

Also realized the the libcCall() function is in runtime. I can copy it over and all the associated functions and datatypes. I can also move the lookup routines to the runtime package. Any thoughts on what's best? Doesn't look like it's defined anywhere besides runtime.

Perhaps you can do what the syscall package does. You'll need a small helper in runtime/sys_darwin.go. Or moving a couple of functions to the runtime package is likely fine.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR (HEAD: 92de1b3) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 9:

I've gone ahead and rearranged this change set.

The lookup routines that had GOOS=="darwin" checks are now in their own file in net/lookup_darwin.go

The assembly routines are now in the runtime package. I added an exported function for the resolver search but I'm not happy with that design. I will look into what the syscall package does this weekend.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR (HEAD: 8f42cff) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

This PR (HEAD: 45ca41c) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

This PR (HEAD: a9ff324) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Brad Fitzpatrick:

Patch Set 28: Run-TryBot+1


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 28:

TryBots beginning. Status page: https://farmer.golang.org/try?commit=860cafae


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 28:

Build is still in progress...
This change failed on linux-amd64:
See https://storage.googleapis.com/go-build-log/860cafae/linux-amd64_76587e43.log

Consult https://build.golang.org/ to see whether it's a new failure. Other builds still in progress; subsequent failure notices suppressed until final report.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 28: TryBot-Result-1

1 of 19 TryBots failed:
Failed on linux-amd64: https://storage.googleapis.com/go-build-log/860cafae/linux-amd64_76587e43.log

Consult https://build.golang.org/ to see whether they are new failures.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 28:

Patch Set 28: TryBot-Result-1

1 of 19 TryBots failed:
Failed on linux-amd64: https://storage.googleapis.com/go-build-log/860cafae/linux-amd64_76587e43.log

Consult https://build.golang.org/ to see whether they are new failures.

I'm not exactly sure what's going on here, can someone help me diagnose?


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Keith Randall:

Patch Set 28:

Patch Set 28:

Patch Set 28: TryBot-Result-1

1 of 19 TryBots failed:
Failed on linux-amd64: https://storage.googleapis.com/go-build-log/860cafae/linux-amd64_76587e43.log

Consult https://build.golang.org/ to see whether they are new failures.

I'm not exactly sure what's going on here, can someone help me diagnose?

That looks unrelated, a timeout on something not darwin.
Make a trivial change and push a new version, we'll try the trybots again.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

Signed-off-by: grant <[email protected]>
@gopherbot
Copy link
Contributor

This PR (HEAD: ce26e64) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 28:

Patch Set 28:

Patch Set 28:

Patch Set 28: TryBot-Result-1

1 of 19 TryBots failed:
Failed on linux-amd64: https://storage.googleapis.com/go-build-log/860cafae/linux-amd64_76587e43.log

Consult https://build.golang.org/ to see whether they are new failures.

I'm not exactly sure what's going on here, can someone help me diagnose?

That looks unrelated, a timeout on something not darwin.
Make a trivial change and push a new version, we'll try the trybots again.

Sounds good


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Keith Randall:

Patch Set 29: Run-TryBot+1


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 29:

TryBots beginning. Status page: https://farmer.golang.org/try?commit=0de65021


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 29: TryBot-Result+1

TryBots are happy.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Ian Lance Taylor:

Patch Set 29:

Also, Ian is out today & tomorrow. So you might not get a +2 until Wednesday.

This one already has a +2, you don't need to wait for me.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Keith Randall:

Patch Set 29:

Patch Set 29:

Also, Ian is out today & tomorrow. So you might not get a +2 until Wednesday.

This one already has a +2, you don't need to wait for me.

Mikio, want to take a final look?
I can vouch for the runtime end of things, but my knowledge of dns is limited.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Brad Fitzpatrick:

Patch Set 29:

(4 comments)


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR (HEAD: 3c3ff6b) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/go/+/166297 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 29:

(4 comments)


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Grant Seltzer Richman:

Patch Set 30:

How's this looking?


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Brad Fitzpatrick:

Patch Set 30: Run-TryBot+1


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 30:

TryBots beginning. Status page: https://farmer.golang.org/try?commit=0602f513


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

Message from Gobot Gobot:

Patch Set 30: TryBot-Result+1

TryBots are happy.


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

gopherbot pushed a commit that referenced this pull request Apr 4, 2019
…vailable

This change adds directives to link the res_search function in libSystem.
The corresponding Go function is then used in `lookup_darwin.go` for
resolution when cgo is disabled. This makes DNS resolution logic more
reliable as macOS has some unique quirks such as the `/etc/resolver/`
directory for specifying nameservers.

Fixes #12524

Change-Id: I367263c4951383965b3ef6491196152f78e614b1
GitHub-Last-Rev: 3c3ff6b
GitHub-Pull-Request: #30686
Reviewed-on: https://go-review.googlesource.com/c/go/+/166297
Run-TryBot: Brad Fitzpatrick <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Keith Randall <[email protected]>
@gopherbot
Copy link
Contributor

Message from Brad Fitzpatrick:

Patch Set 30:

RELNOTE=yes


Please don’t reply on this GitHub thread. Visit golang.org/cl/166297.
After addressing review feedback, remember to publish your drafts!

@gopherbot
Copy link
Contributor

This PR is being closed because golang.org/cl/166297 has been merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla: yes Used by googlebot to label PRs as having a valid CLA. The text of this label should not change.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

net: Support the /etc/resolver DNS resolution configuration hierarchy on OS X when cgo is disabled
3 participants