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

cmd/go: go list -e -compiled -json does not populate Error when cgo preprocessing fails #38990

Closed
dominikh opened this issue May 11, 2020 · 15 comments
Assignees
Labels
GoCommand cmd/go NeedsFix The path to resolution is known, but the work has not been done. WaitingForInfo Issue is not actionable because of missing required information, which needs to be provided.
Milestone

Comments

@dominikh
Copy link
Member

What version of Go are you using (go version)?

$ go version
go version go1.14.1 linux/amd64
go version devel +57e32c4fbd Sun May 10 14:43:46 2020 +0000 linux/amd64

What's wrong

When cgo preprocessing fails, go list -json -compiled -e prints an error on stderr and exits with a non-zero status, but it does not populate the Error field of the package. It is possible to detect that something went wrong because CompiledGoFiles isn't populated, but we can't tell why it failed. Two common reasons are a missing C compiler, and missing libraries.

Example output

$ CC=/does/not/exist go list -json -compiled -e runtime/cgo
# runtime/cgo
fork/exec /does/not/exist: no such file or directory
{
	"Dir": "/nix/store/sylhlk3fd3xik0d8hqrm20zxnfc3x7m4-go-1.14.1/share/go/src/runtime/cgo",
	"ImportPath": "runtime/cgo",
	"Name": "cgo",
	"Doc": "Package cgo contains runtime support for code generated by the cgo tool.",
	"Target": "/nix/store/sylhlk3fd3xik0d8hqrm20zxnfc3x7m4-go-1.14.1/share/go/pkg/linux_amd64/runtime/cgo.a",
	"Root": "/nix/store/sylhlk3fd3xik0d8hqrm20zxnfc3x7m4-go-1.14.1/share/go",
	"Match": [
		"runtime/cgo"
	],
	"Goroot": true,
	"Standard": true,
	"Stale": true,
	"StaleReason": "build ID mismatch",
	"GoFiles": [
		"callbacks.go",
		"callbacks_traceback.go",
		"iscgo.go",
		"mmap.go",
		"setenv.go",
		"sigaction.go"
	],
	"CgoFiles": [
		"cgo.go"
	],
	"IgnoredGoFiles": [
		"callbacks_aix.go",
		"dragonfly.go",
		"freebsd.go",
		"netbsd.go",
		"openbsd.go",
		"signal_darwin_armx.go"
	],
	"CFiles": [
		"gcc_context.c",
		"gcc_fatalf.c",
		"gcc_libinit.c",
		"gcc_linux_amd64.c",
		"gcc_mmap.c",
		"gcc_setenv.c",
		"gcc_sigaction.c",
		"gcc_traceback.c",
		"gcc_util.c"
	],
	"HFiles": [
		"libcgo.h",
		"libcgo_unix.h"
	],
	"SFiles": [
		"asm_amd64.s",
		"gcc_amd64.S"
	],
	"CgoCFLAGS": [
		"-Wall",
		"-Werror"
	],
	"CgoLDFLAGS": [
		"-lpthread"
	],
	"Imports": [
		"C",
		"unsafe"
	],
	"Deps": [
		"unsafe"
	]
}

Related: #34229 and #25842

/cc @bcmills @matloob @heschik

@dominikh dominikh added NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. GoCommand cmd/go labels May 11, 2020
@jayconrod
Copy link
Contributor

This has the same root cause as the two linked issues: #34229 and #25842

Currently, go list -e populates the Error field with errors it encounters when loading the package dependency graph. It should also populate the Error field with errors encountered when running cgo, the compiler, and other commands.

@jayconrod jayconrod added NeedsFix The path to resolution is known, but the work has not been done. and removed NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. labels May 11, 2020
@jayconrod jayconrod added this to the Backlog milestone May 11, 2020
@SeanTolstoyevski

This comment was marked as off-topic.

@thalesfsp

This comment was marked as off-topic.

@zyfdegh

This comment was marked as off-topic.

@FH0

This comment was marked as off-topic.

@FH0

This comment was marked as off-topic.

@toriato

This comment was marked as off-topic.

@Xosrov

This comment was marked as off-topic.

@Santamian

This comment was marked as off-topic.

@FH0

This comment was marked as off-topic.

@hash-rabbit

This comment was marked as off-topic.

@bcmills
Copy link
Contributor

bcmills commented Jul 17, 2023

I have hidden a bunch of off-topic comments for this issue.

Folks, if you are dealing with a problem that does not match the problem described in the issue title, please either file a separate issue or start a thread on golang-nuts. This issue is not the place for troubleshooting cgo usage in VSCode.

@thalesfsp

This comment was marked as off-topic.

@samthanawalla
Copy link
Contributor

Unfortunately, I can't reproduce this issue on 1.22 so perhaps it was already fixed :D Let me know if you are still running into this issue!

@samthanawalla samthanawalla added the WaitingForInfo Issue is not actionable because of missing required information, which needs to be provided. label Feb 15, 2024
@samthanawalla samthanawalla self-assigned this Feb 15, 2024
@gopherbot
Copy link

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.)

@gopherbot gopherbot closed this as not planned Won't fix, can't repro, duplicate, stale Mar 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
GoCommand cmd/go NeedsFix The path to resolution is known, but the work has not been done. WaitingForInfo Issue is not actionable because of missing required information, which needs to be provided.
Projects
None yet
Development

No branches or pull requests