- 09 Jan, 2020 3 commits
-
-
Austin Clements authored
On Windows, we implement asynchronous preemption using SuspendThread to suspend other threads in our process. However, SuspendThread is itself actually asynchronous (it enqueues a kernel "asynchronous procedure call" and returns). Unfortunately, Windows' ExitProcess API kills all threads except the calling one and then runs APCs. As a result, if SuspendThread and ExitProcess are called simultaneously, the exiting thread can be suspended and the suspending thread can be exited, leaving behind a ghost process consisting of a single thread that's suspended. We've already protected against the runtime's own calls to ExitProcess, but if Go code calls external code, there's nothing stopping that code from calling ExitProcess. For example, in #35775, our own call to racefini leads to C code calling ExitProcess and occasionally causing a deadlock. This CL fixes this by introducing synchronization between calling external code on Windows and preemption. It adds an atomic field to the M that participates in a simple CAS-based synchronization protocol to prevent suspending a thread running external code. We use this to protect cgocall (which is used for both cgo calls and system calls on Windows) and racefini. Tested by running the flag package's TestParse test compiled in race mode in a loop. Before this change, this would reliably deadlock after a few minutes. Fixes #35775. Updates #10958, #24543. Change-Id: I50d847abcdc2688b4f71eee6a75eca0f2fee892c Reviewed-on: https://go-review.googlesource.com/c/go/+/213837 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: David Chase <drchase@google.com>
-
Bryan C. Mills authored
In CL 204777, I made the "finding" messages in cachingRepo only print after a “longish” delay, on the theory that they would help diagnose slow or stuck fetches. However, as I've been testing Go 1.14 beta 1, I've found that these messages are mostly just noise, and the fact that they are so nondeterministic causes both confusion and test flakes (#35539). Moreover, it currently triggers once for each candidate module, when what we're usually after is actually a specific package within the module. So let's log the package operation unconditionally instead of the module fetches nondeterministically. Fixes #35539 Updates #26152 Change-Id: I41a1c772465b2f0b357d3402bc372b6907773741 Reviewed-on: https://go-review.googlesource.com/c/go/+/213679 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Cherry Zhang authored
On Windows, it might be possible that SuspendThread suspends a thread right between when an exception happens and when the exception handler runs. (This is my guess. I don't know the implementation detail of Windows exceptions to be sure.) In this case, we may inject a call to asyncPreempt before the exception handler runs. The exception handler will inject a sigpanic call, which will make the stack trace looks like sigpanic asyncPreempt actual panicking function i.e. it appears asyncPreempt panicked. Instead, just overwrite the PC, without pushing another frame. Fixes #35773. Change-Id: Ief4e964dcb7f45670b5f93c4dcf285cc1c737514 Reviewed-on: https://go-review.googlesource.com/c/go/+/213879 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
- 08 Jan, 2020 4 commits
-
-
Bryan C. Mills authored
We know of at least one module (github.com/stripe/stripe-go) that has a run of +incompatible versions, followed by a run of versions with go.mod files, followed by another run of +incompatible versions. We want the heuristics for showing +incompatible versions to reflect the authors' current intent, and it seems clear that the current intent of the authors of that module is for users of the unversioned import path to still be on +incompatible versions. To respect that intent, we need to keep checking for +incompatible versions even after we have seen a lower major version with an explicit go.mod file. However, we still don't want to download every single version of the module to check it. A given major version should have a consistent, canonical import path, so the path (as inferred by the presence or absence of a go.mod file) should be the same for every release across that major version. To avoid unnecessary overhead — and to allow module authors to correct accidental changes to a major version's import path — we check only the most recent release of each major version. If a release accidentally changes the import path in either direction (by deleting or adding a go.mod file), it can be corrected by issuing a single subsequent release of that major version to restore the correct path. I manually verified that, with this change, github.com/stripe/stripe-go@latest reverts to v68.7.0+incompatible as it was in Go 1.13. The other regression tests for #34165 continue to pass. Updates #34165 Change-Id: I5daff3cd2123f94c7c49519babf4eecd509f169e Reviewed-on: https://go-review.googlesource.com/c/go/+/212317Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Keith Randall authored
This avoids the security problem in #29312 where two very deep, but distinct, types are given the same name. They both make it to the linker which chooses one, and the use of the other is now type unsafe. Instead, give every very deep type its own name. This errs on the other side, in that very deep types that should be convertible to each other might now not be. But at least that's not a security hole. Update #29312. Change-Id: Iac0ebe73fdc50594fd6fbf7432eef65f9a053126 Reviewed-on: https://go-review.googlesource.com/c/go/+/213517 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Luka Zitnik authored
Fixes #35620 Change-Id: I71bc56ec7a7507d14b4f013177b4b816bb1a2094 Reviewed-on: https://go-review.googlesource.com/c/go/+/212458Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Joel Sing authored
This is more readable and less error-prone than using RSP offsets. Suggested during review of CL 212765. Change-Id: I070190abeeac8eae5dbd414407602619d9d57422 Reviewed-on: https://go-review.googlesource.com/c/go/+/213577 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
- 07 Jan, 2020 13 commits
-
-
Michael Matloob authored
The TMPDIR environment variable isn't always available. Use $WORK/tmp instead, to fix this test on Windows. Change-Id: I521c470430c6eea4d1f2fc7db749d38178a03a13 Reviewed-on: https://go-review.googlesource.com/c/go/+/213680 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Matloob authored
I accidentally used // instead of #. Change-Id: I2c9b9d40dd83994ce80fc837e8d992d3807f3e24 Reviewed-on: https://go-review.googlesource.com/c/go/+/213659 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
-
Michael Matloob authored
Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: I30230ca3b4d8b037ea861db952b89e706ed8706d Reviewed-on: https://go-review.googlesource.com/c/go/+/213425 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
This test already calls tg.Parallel Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: I4cdb2464cd3e51f1369558c238925f036ce8d828 Reviewed-on: https://go-review.googlesource.com/c/go/+/213426 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: Id4c2c58167d5cfc80b0d81ca9ce3db678242c06c Reviewed-on: https://go-review.googlesource.com/c/go/+/213128 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Bryan C. Mills authored
Previously, we accidentally wrote the Proxy-Authorization header for the initial CONNECT request to the shared ProxyConnectHeader map when it was non-nil. Fixes #36431 Change-Id: I5cb414f391dddf8c23d85427eb6973f14c949025 Reviewed-on: https://go-review.googlesource.com/c/go/+/213638 Run-TryBot: Bryan C. Mills <bcmills@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Matloob authored
It's hard to convert this one exactly because I don't think we can guarantee that the grep command exists to filter stdout, so I've tried to replicate the intent of the test. Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: Ib593799ef7634ce12efb3ff357eb34475e2ea321 Reviewed-on: https://go-review.googlesource.com/c/go/+/213130 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
Convert these two tests to the script framework. Updates #17751 Updates #36320 Change-Id: I9cc14360fab949dab91f9e5e667be85002ef5926 Reviewed-on: https://go-review.googlesource.com/c/go/+/212811 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: I6573185cf14f298c51f76265f18a75e4960ce791 Reviewed-on: https://go-review.googlesource.com/c/go/+/213220 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
-
Joel Sing authored
Correct the pipe and pipe2 implementations by using the correct RSP offsets, used to store and return the file descriptor array. Fix setNonblock by using the correct immediate value for O_NONBLOCK and replace EOR (exclusive OR) with ORR. Also correct the write1 implementation, which has a uintptr value for the fd argument. Change-Id: Ibca77af44b649e8bb330ca54f9c36a7a8b0f9cea Reviewed-on: https://go-review.googlesource.com/c/go/+/212765 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Julian Tibble authored
Change-Id: I96db053184e5e72864514d5421a97774545cc2dd GitHub-Last-Rev: f1451ab626563f82f1703a559e4cb6d66665a7b6 GitHub-Pull-Request: golang/go#36425 Reviewed-on: https://go-review.googlesource.com/c/go/+/213597Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Joel Sing authored
The current code uses EOR (exclusive OR), which will result in the O_NONBLOCK flag being toggled rather than being set. Other implementations use OR, hence this is likely a bug. Change-Id: I5dafa9c572452070bd37789c8a731ad6d04a86cd Reviewed-on: https://go-review.googlesource.com/c/go/+/212766 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Dan Scales authored
In reclaimChunk, the runtime is calling traceGCSweepDone() while holding the mheap lock. traceGCSweepDone() can call traceEvent() and traceFlush(). These functions not only can get various trace locks, but they may also do memory allocations (runtime.newobject) that may end up getting the mheap lock. So, there may be either a self-deadlock or a possible deadlock between multiple threads. It seems better to release the mheap lock before calling traceGCSweepDone(). It is fine to release the lock, since the operations to get the index of the chunk of work to do are atomic. We already release the lock to call sweep, so there is no new behavior for any of the callers of reclaimChunk. With this change, mheap is a leaf lock (no other lock is ever acquired while it is held). Testing: besides normal all.bash, also ran all.bash with --long enabled, since it does longer tests of runtime/trace. Change-Id: I4f8cb66c24bb8d424f24d6c2305b4b8387409248 Reviewed-on: https://go-review.googlesource.com/c/go/+/207846Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
-
- 06 Jan, 2020 19 commits
-
-
Brad Fitzpatrick authored
Updates #36019 Change-Id: I9fea2c3c5138e2233290979e4724f6e7b91da652 Reviewed-on: https://go-review.googlesource.com/c/go/+/213439Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Cherry Zhang authored
In the previous CL we ensures that memmove writes pointers atomically, so the concurrent GC won't observe a partially updated pointer. This CL adds a test. Change-Id: Icd1124bf3a15ef25bac20c7fb8933f1a642d897c Reviewed-on: https://go-review.googlesource.com/c/go/+/212627Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Matloob authored
This change converts TestCoverageWithCgo and TestCgoConsistentResults to the script framework. Change-Id: Ic5a13f6dd6099d3d73a5cda8cbc724a79a3d2c58 Reviewed-on: https://go-review.googlesource.com/c/go/+/212621 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: Ibc3cb3823bd1c1b80058076f2c9933dc729447a5 Reviewed-on: https://go-review.googlesource.com/c/go/+/213127 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
Addressing comment in golang.org/cl/212620. I submitted the change before I addressed the comment. Change-Id: I008fdb4fed1e0b2d24d739991fe10122695b90b6 Reviewed-on: https://go-review.googlesource.com/c/go/+/213419 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
It's already parallel, but we might as well convert it and get rid of the testdata/src dircetory completely. Updates #36320 Change-Id: I75e335b32d64a8ddedd65e4337949b729c9e0fbe Reviewed-on: https://go-review.googlesource.com/c/go/+/212877 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
This change converts TestFatalInBenchmarkCauseNonZeroExitStatus, TestBenchmarkLabels and TestWildCardsDoNotLookInUselessDirectories to the script framework so they can run in parallel. These tests used the testdata directory so they didn't call tg.parallel, because they couldn't be sure the testdata directory wasn't being modified while they were being run. The tests are converted to the script framework instead of being modified because the script framework tests are easier to read and are self-contained. Also remove the directory src/cmd/go/testdata/src/badc. The testcase that used it, "TestDisallowedCSourceFiles" was deleted in golang.org/cl/19613. Updates #17751 Change-Id: I0b9b417ae1a9b148067a3e5f8531229f3414f104 Reviewed-on: https://go-review.googlesource.com/c/go/+/212620 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
Sprinkle in some more calls to tg.Parallel in the cmd/go tests. These are the easy cases that don't operate in the testdata directory. I think the best thing to do for those tests that do operate in testdata is to use the script tests. They're easier to read and write, and jump into t.Parallel immediately. Updates #17751 Change-Id: If8aeb8129cfdc0a9aa91f5a540f179790077fce5 Reviewed-on: https://go-review.googlesource.com/c/go/+/212618 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Sean Liao authored
Add a link redirecting questions to the wiki page/forums Change-Id: I05b784e6bb0c260cb01c4535ad05fb17ba80110e GitHub-Last-Rev: a927ce5c69df7854ae919013b0e55ab4d356fc4c GitHub-Pull-Request: golang/go#36413 Reviewed-on: https://go-review.googlesource.com/c/go/+/213440Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Michael Matloob authored
Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: Id1afafad2063d917fd55e08f0725ce3e93201c35 Reviewed-on: https://go-review.googlesource.com/c/go/+/212878 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
Part of the effort to convert all non-parallel cmd/go tests to the script framework. Updates #17751 Updates #36320 Change-Id: I2bc0b1e5c03e2c49b5c79ac24a908a202840d5d4 Reviewed-on: https://go-review.googlesource.com/c/go/+/212879 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Brad Fitzpatrick authored
TestSelfConnect from CL 5650071 was renamed TestTCPSelfConnect in CL 21447. Change-Id: I0de110dbe1da77bfba540a1b51c139f3bedae67f Reviewed-on: https://go-review.googlesource.com/c/go/+/213437Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
-
Austin Clements authored
This reverts commit 8adc1e00. Reason for revert: The test added in this commit fails on several builders. Fixes #36389. Re-opens #33979. Change-Id: I31191098c36af00f7688749b3376686673b3ac68 Reviewed-on: https://go-review.googlesource.com/c/go/+/213417 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Alberto Donizetti <alb.donizetti@gmail.com>
-
Michael Matloob authored
Part of converting all tests to script framework to improve test parallelism. Updates #36320 Updates #17751 Change-Id: Ic16a0c6c1eabeba003b9cff620e2911078fd6cf8 Reviewed-on: https://go-review.googlesource.com/c/go/+/212813 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Michael Matloob authored
It doesn't seem to be used anywhere. Change-Id: If979b6d69c9bf5261afd980d96f67991c417d46d Reviewed-on: https://go-review.googlesource.com/c/go/+/213218 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
-
Joel Sing authored
For some reason the existing versions have additional padding - manually resync these structs with those in x/sys/unix, also bringing in pollFd which does not currently exist for linux/riscv64. Cross checked with the output from 'go tool cgo -godefs' on a linux/riscv64 machine. Updates #27532 Change-Id: I9fd2d3ad7222208a138773f4a9153c3c9cad7381 Reviewed-on: https://go-review.googlesource.com/c/go/+/212763 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
-
Joel Sing authored
linux/riscv64 does not provide a renameat syscall and there is no SYS_RENAMEAT defined in the syscall package. Provide Renameat as a wrapper around renameat2 instead. Updates #27532 Change-Id: I4864bdf0055e4272920583dcfb0efe2fd40adcbc Reviewed-on: https://go-review.googlesource.com/c/go/+/212762 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
-
Joel Sing authored
RISCV has no instruction to store an immediate value to memory, or to subtract an immediate value. An immediate needs to be moved to a register first, or in the case of $0, the zero value register (ZERO or R0) can be used instead. Restore the original riscv-go code so that it compiles. Updates #27532 Change-Id: I3c60e6f385c59679252a710dbba153357a367516 Reviewed-on: https://go-review.googlesource.com/c/go/+/212761 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
-
Tim Cooper authored
Fixes #36396 Change-Id: I52190f450fa9ac52fbf4ecdc814e954dc29029cd Reviewed-on: https://go-review.googlesource.com/c/go/+/213377Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 04 Jan, 2020 1 commit
-
-
Joel Sing authored
ErrorUnresolved attempts to find the missing symbol in another ABI, in order to provide more friendly error messages. However, in doing so it checks the same ABI and can find the symbol reference for the symbol that it is currently reporting the unresolved error for. Avoid this by ignoring SXREF symbols, which is the same behaviour used when linking is performed. Fixes #33979 Change-Id: I3cb2477b2ad4baa7c2007323b983eb29404b0aac Reviewed-on: https://go-review.googlesource.com/c/go/+/192597 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Joel Sing <joel@sing.id.au>
-