-
Notifications
You must be signed in to change notification settings - Fork 17.6k
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
cmd/go: get hangs without error output from unknown revisions #53905
Comments
FYI: Step 3 of the steps to reproduce produced no output related to the hanging behavior or to the underlying invalid versions being referenced, even with the |
@Justin-W, what happens if you send |
@bcmills This is the SIGQUIT dump when the process for
|
I am having the same issue on a M1 Mac unfortunately. |
I have another reproducible case when building Caddy with our build tool In this situation, we're building a newer version of Caddy and trying to plugin another package which depends on an older version of Caddy. Admittedly this might be a bit noisy because both Details
|
The |
I am experiencing the same issue trying to build dolthub/dolt on Linux/ARM64 (Lenovo Chromebook, Crostini, Debian Sid). Building with GOARCH=arm64 on my Linux/AMD64 VPS and then copying to the system circumvents the issue. Can this be an issue with how the Go tool is compiled with ARM64 specific elements? |
i have same problem, m1 pro
|
Hi, looking at this issue, I don't see concrete reproduction steps that can run using only the go tools and already existing repos. I'd like to see if there's a simple reproduction that consistently fails (or often fails in n runs) that we could start with. |
Timed out in state WaitingForInfo. Closing. (I am just a bot, though. Please speak up if this is a mistake or you have the requested information.) |
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
A
depended on byB
depended on byC
(so C indirectly depends on A)go.mod
reference to A invalid(for us, A's git history was rewritten; but you could probably manually edit B's go.mod with a invalid pseudo-version to get the same effect)
go get -u ./...
in either B or C (or any module that depends on either of them)go
process to hang with high CPU, then terminate itgo list -m -u -json all | jq --raw-output 'select((.Indirect or .Main)|not) | .Path' | xargs -t -I % go get -u -t %@latest
, to find any "error:" or "panic:" outputgo.*
files resulting from step 5.What did you expect to see?
Either some output indicating the dependency reference problem(s), or else normal operation of the
go get ...
command in step 3.What did you see instead?
Step 3 starts running normally (there may or may not be some output, downloads, etc., with typical levels of CPU by the process), but at some point all output ceases and CPU spikes to 350%-450% and stays basically flat at that level until the
go
process is terminated.Step 5 did not hang, and output contained several sections with errors like these:
Workaround
replace
directive for each of the "invalid version"s identified in step 5 to thego.mod
files of each dependent repo (including indirectly-dependent ones).Notes:
go get
behavior ceased.go.mod
reference to 1 of the 4 "missing revision"s which were in the error output. The other 3 seemed to be referenced exclusively from historical versions ofgo.mod
andgo.sum
files (e.g. the git history of no-longer-referenced versions of certain modules), but not by any versions which were still directly referenced. IDK how un-referenced versions'go.*
contents could still be affectinggo get
behavior, but it seemed to be the case. Very weird. If true, more details would be appreciated, since that might indicate that thereplace
directives need to remain in place forever (which would be unfortunate).go.*
files even on affected envs.)go 1.17
orgo 1.18
directives in theirgo.mod
files. We weren't attempting to preserve pre-v1.17 compatibility.v0.0.0-20220203083605-df6cd891c11a
) did not work as a workaround.go.mod
refs which get broken as a result of commits which get irrevocably deleted. That would be much preferred vs thereplace
directives workaround.retract
directives to the repos which were the source of the "missing" versions did not resolve the problem. (Would've been much nicer if it had, so that the samereplace
directives didn't need to be replicated in dozens of dependent repos.)retract
isn't intended to prevent a dependent repo from referencing a retracted version once it already is, but since I was actually trying to upgrade all the deps, it would've been nice if thego get -u ./...
command simply updated the "bad" refs with good ones (and didn't hang), which would have allowed me to iteratively upgrade all dependencies to stop using the bad revisions (without the need to manually identify andreplace
the "missing" revisions).The text was updated successfully, but these errors were encountered: