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

gocdk: running 'wire' in internal/cmd/gocdk bombs #2040

Closed
eliben opened this issue May 9, 2019 · 8 comments
Closed

gocdk: running 'wire' in internal/cmd/gocdk bombs #2040

eliben opened this issue May 9, 2019 · 8 comments
Assignees

Comments

@eliben
Copy link
Member

eliben commented May 9, 2019

Steps to reproduce with a clean checkout of go-cloud:

$ which wire
$ go install github.com/google/wire/cmd/wire
$ cd internal/cdk/gocdk
$ wire
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x56b61c]

goroutine 21 [running]:
go/types.(*Checker).handleBailout(0xc0003ac000, 0xc000455d08)
	/usr/lib/google-golang/src/go/types/check.go:240 +0x98
panic(0x6db440, 0x97bc00)
	/usr/lib/google-golang/src/runtime/panic.go:522 +0x1b5
go/types.(*StdSizes).Sizeof(0x0, 0x796400, 0x97c7c0, 0xc000453e08)
	/usr/lib/google-golang/src/go/types/sizes.go:154 +0x1bc
go/types.(*Config).sizeof(0xc00039b780, 0x796400, 0x97c7c0, 0x9a1801)
	/usr/lib/google-golang/src/go/types/sizes.go:245 +0x51
go/types.representableConst(0x79a700, 0x9a18a0, 0xc0003ac000, 0x97c7c0, 0xc000430ee8, 0x0)
	/usr/lib/google-golang/src/go/types/expr.go:216 +0x1f5
go/types.(*Checker).representable(0xc0003ac000, 0xc000430ec0, 0x97c7c0)
	/usr/lib/google-golang/src/go/types/expr.go:335 +0x69
go/types.(*Checker).convertUntyped(0xc0003ac000, 0xc000430ec0, 0x796400, 0x97c7c0)
	/usr/lib/google-golang/src/go/types/expr.go:517 +0x977
go/types.(*Checker).binary(0xc0003ac000, 0xc000430e00, 0xc0003a09f0, 0x799700, 0xc0003a2800, 0x799200, 0xc0003a2820, 0x29)
	/usr/lib/google-golang/src/go/types/expr.go:800 +0x1a0
go/types.(*Checker).exprInternal(0xc0003ac000, 0xc000430e00, 0x799240, 0xc0003a09f0, 0x0, 0x0, 0x1)
	/usr/lib/google-golang/src/go/types/expr.go:1503 +0x1f1f
go/types.(*Checker).rawExpr(0xc0003ac000, 0xc000430e00, 0x799240, 0xc0003a09f0, 0x0, 0x0, 0x1)
	/usr/lib/google-golang/src/go/types/expr.go:982 +0x81
go/types.(*Checker).multiExpr(0xc0003ac000, 0xc000430e00, 0x799240, 0xc0003a09f0)
	/usr/lib/google-golang/src/go/types/expr.go:1599 +0x58
go/types.(*Checker).expr(0xc0003ac000, 0xc000430e00, 0x799240, 0xc0003a09f0)
	/usr/lib/google-golang/src/go/types/expr.go:1593 +0x49
go/types.(*Checker).binary(0xc0003ac000, 0xc000430dc0, 0xc0003a0a20, 0x799240, 0xc0003a09c0, 0x799240, 0xc0003a09f0, 0x22)
	/usr/lib/google-golang/src/go/types/expr.go:780 +0xbf
go/types.(*Checker).exprInternal(0xc0003ac000, 0xc000430dc0, 0x799240, 0xc0003a0a20, 0x0, 0x0, 0x6defc0)
	/usr/lib/google-golang/src/go/types/expr.go:1503 +0x1f1f
go/types.(*Checker).rawExpr(0xc0003ac000, 0xc000430dc0, 0x799240, 0xc0003a0a20, 0x0, 0x0, 0x0)
	/usr/lib/google-golang/src/go/types/expr.go:982 +0x81
go/types.(*Checker).multiExpr(0xc0003ac000, 0xc000430dc0, 0x799240, 0xc0003a0a20)
	/usr/lib/google-golang/src/go/types/expr.go:1599 +0x58
go/types.(*Checker).expr(0xc0003ac000, 0xc000430dc0, 0x799240, 0xc0003a0a20)
	/usr/lib/google-golang/src/go/types/expr.go:1593 +0x49
go/types.(*Checker).stmt(0xc0003ac000, 0x0, 0x799740, 0xc000397280)
	/usr/lib/google-golang/src/go/types/stmt.go:492 +0x42e0
go/types.(*Checker).stmtList(0xc0003ac000, 0x0, 0xc0000f0680, 0x5, 0x8)
	/usr/lib/google-golang/src/go/types/stmt.go:120 +0xd6
go/types.(*Checker).funcBody(0xc0003ac000, 0xc0003dee40, 0xc0000ef310, 0x7, 0xc00042eed0, 0xc0003a0c60, 0x0, 0x0)
	/usr/lib/google-golang/src/go/types/stmt.go:42 +0x1ec
go/types.(*Checker).funcDecl.func1()
	/usr/lib/google-golang/src/go/types/decl.go:561 +0x67
go/types.(*Checker).processDelayed(0xc0003ac000, 0x0)
	/usr/lib/google-golang/src/go/types/resolver.go:615 +0x33
go/types.(*Checker).checkFiles(0xc0003ac000, 0xc00010e150, 0xd, 0xd, 0x0, 0x0)
	/usr/lib/google-golang/src/go/types/check.go:256 +0xbc
go/types.(*Checker).Files(...)
	/usr/lib/google-golang/src/go/types/check.go:245
golang.org/x/tools/go/packages.(*loader).loadPackage(0xc0001060a0, 0xc0000e48c0)
	/usr/local/google/home/eliben/go/pkg/mod/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138/go/packages/packages.go:716 +0x529
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1()
	/usr/local/google/home/eliben/go/pkg/mod/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138/go/packages/packages.go:574 +0x17f
sync.(*Once).Do(0xc0000e48d0, 0xc000049f80)
	/usr/lib/google-golang/src/sync/once.go:44 +0xb3
golang.org/x/tools/go/packages.(*loader).loadRecursive(0xc0001060a0, 0xc0000e48c0)
	/usr/local/google/home/eliben/go/pkg/mod/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138/go/packages/packages.go:561 +0x67
golang.org/x/tools/go/packages.(*loader).refine.func2(0xc0001060a0, 0xc0000ee7a0, 0xc0000e48c0)
	/usr/local/google/home/eliben/go/pkg/mod/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138/go/packages/packages.go:542 +0x35
created by golang.org/x/tools/go/packages.(*loader).refine
	/usr/local/google/home/eliben/go/pkg/mod/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138/go/packages/packages.go:541 +0x76f
@vangent
Copy link
Contributor

vangent commented May 10, 2019

Ross can you take a look? I can reproduce this.

I also tried running wire in samples/guestbook, and got a different kind of error:

google/go-cloud/samples/guestbook$ wire .
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:20:2: could not import context (no metadata for context)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:22:12: could not import github.com/aws/aws-sdk-go/aws/client (no metadata for github.com/aws/aws-sdk-go/aws/client)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:23:2: could not import github.com/google/wire (no metadata for github.com/google/wire)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:24:2: could not import gocloud.dev/aws/awscloud (no metadata for gocloud.dev/aws/awscloud)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:25:2: could not import gocloud.dev/blob (no metadata for gocloud.dev/blob)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:26:2: could not import gocloud.dev/blob/s3blob (no metadata for gocloud.dev/blob/s3blob)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:27:2: could not import gocloud.dev/mysql/rdsmysql (no metadata for gocloud.dev/mysql/rdsmysql)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:28:2: could not import gocloud.dev/runtimevar (no metadata for gocloud.dev/runtimevar)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:29:2: could not import gocloud.dev/runtimevar/awsparamstore (no metadata for gocloud.dev/runtimevar/awsparamstore)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_aws.go:30:2: could not import gocloud.dev/server (no metadata for gocloud.dev/server)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_azure.go:22:2: could not import github.com/Azure/azure-pipeline-go/pipeline (no metadata for github.com/Azure/azure-pipeline-go/pipeline)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_azure.go:24:2: could not import go.opencensus.io/trace (no metadata for go.opencensus.io/trace)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_azure.go:26:2: could not import gocloud.dev/blob/azureblob (no metadata for gocloud.dev/blob/azureblob)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_azure.go:27:2: could not import gocloud.dev/requestlog (no metadata for gocloud.dev/requestlog)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_azure.go:29:2: could not import gocloud.dev/runtimevar/blobvar (no metadata for gocloud.dev/runtimevar/blobvar)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_gcp.go:24:2: could not import gocloud.dev/blob/gcsblob (no metadata for gocloud.dev/blob/gcsblob)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_gcp.go:25:2: could not import gocloud.dev/gcp (no metadata for gocloud.dev/gcp)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_gcp.go:26:2: could not import gocloud.dev/gcp/gcpcloud (no metadata for gocloud.dev/gcp/gcpcloud)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_gcp.go:27:2: could not import gocloud.dev/mysql/cloudmysql (no metadata for gocloud.dev/mysql/cloudmysql)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_gcp.go:29:2: could not import gocloud.dev/runtimevar/gcpruntimeconfig (no metadata for gocloud.dev/runtimevar/gcpruntimeconfig)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_gcp.go:31:5: could not import google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1 (no metadata for google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_local.go:21:2: could not import database/sql (no metadata for database/sql)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_local.go:23:2: could not import github.com/go-sql-driver/mysql (no metadata for github.com/go-sql-driver/mysql)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_local.go:27:2: could not import gocloud.dev/blob/fileblob (no metadata for gocloud.dev/blob/fileblob)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/inject_local.go:30:2: could not import gocloud.dev/runtimevar/filevar (no metadata for gocloud.dev/runtimevar/filevar)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:20:2: could not import bytes (no metadata for bytes)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:23:2: could not import flag (no metadata for flag)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:24:2: could not import html/template (no metadata for html/template)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:25:2: could not import io (no metadata for io)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:26:2: could not import log (no metadata for log)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:27:2: could not import net/http (no metadata for net/http)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:28:2: could not import strconv (no metadata for strconv)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:29:2: could not import time (no metadata for time)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:32:2: could not import github.com/gorilla/mux (no metadata for github.com/gorilla/mux)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:35:2: could not import gocloud.dev/gcerrors (no metadata for gocloud.dev/gcerrors)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:36:2: could not import gocloud.dev/health (no metadata for gocloud.dev/health)
/usr/local/google/home/rvangent/go/src/github.com/google/go-cloud/samples/guestbook/main.go:37:2: could not import gocloud.dev/health/sqlhealth (no metadata for gocloud.dev/health/sqlhealth)
wire: generate failed

@vangent
Copy link
Contributor

vangent commented May 10, 2019

If I clone the wire repo and build the binary from there, it works fine in both cases (although in samples/guestbook, it emits a couple of dozen warnings about "using struct literal ... is deprecated".

@vangent
Copy link
Contributor

vangent commented May 10, 2019

I have a feeling that the tools/go/packages people broke compatibility in some way, and that google/wire#122 is what fixed this.

@shantuo How close are we to doing a wire release?

@shantuo
Copy link
Contributor

shantuo commented May 10, 2019

There is one more open issue on the beta list I will work on tomorrow. I was thinking of maybe next week.

@eliben
Copy link
Member Author

eliben commented May 10, 2019

@shantuo can do we a quick release today so that this isn't broken? A beta release can come later

@zombiezen
Copy link
Contributor

Perhaps we can do a patch release with just the go.mod update cherry-picked in? So a 0.2.2 release, where we would create a 0.2 branch from the 0.2.1 tag and then cherry pick in google/wire@63cf8b9.

@shantuo
Copy link
Contributor

shantuo commented May 10, 2019

wire v0.2.2 is released with @vangent 's change.

@shantuo shantuo closed this as completed May 10, 2019
@eliben
Copy link
Member Author

eliben commented May 10, 2019

Verified

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants