]> Cypherpunks repositories - gostls13.git/commit
net: allocate res_state entirely in C memory
authorRuss Cox <rsc@golang.org>
Tue, 8 Nov 2022 21:16:44 +0000 (16:16 -0500)
committerGopher Robot <gobot@golang.org>
Tue, 8 Nov 2022 22:14:56 +0000 (22:14 +0000)
commit896faf306c8ff8b1ae9f5200fa9b7927432b632b
tree8374584db989f8e8ab9fd91a0fe6db56e9c6cf1a
parent8befe0e4083a2a61741f03fb4e4cc2814fe27c35
net: allocate res_state entirely in C memory

The linux-amd64-wsl builder was failing because the res_nsearch
implementation was storing pointer to the res_state's own fields
in other fields in the res_state. If the res_state is Go memory, this
looks like pointers to Go pointers. Moving the res_state to C memory
avoids the problem.

The linux-amd64-wsl builder has been fixed a different way by
replacing res_nsearch with res_search on Linux, where it is thread-safe.
But other systems that still need to use res_nsearch (such as macOS)
may run into the same kind of problem, so it is probably still worth
arranging for the res_state to live entirely in C memory.

Fixes #56658 (again).

Change-Id: I58a14e72c866eaceb02ad828854a1f626b9b8e73
Reviewed-on: https://go-review.googlesource.com/c/go/+/448798
Run-TryBot: Russ Cox <rsc@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/net/cgo_unix.go