upbound / up

The @upbound CLI
Apache License 2.0
52 stars 41 forks source link

panic seen when using `xpls` on when XRD in repo does not have an openApiSchema object #160

Closed tnthornton closed 2 years ago

tnthornton commented 2 years ago

What happened?

A user has reported the following panic when using xpls with their repo:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x25e1d15]
goroutine 82 [running]:
github.com/crossplane/crossplane/xcrd.ForCompositeResource(0xc00078c240)
    /home/runner/work/up/up/vendor/github.com/crossplane/crossplane/xcrd/crd.go:81 +0x515
github.com/upbound/up/internal/xpkg/snapshot.validateOpenAPIV3Schema(0x15)
    /home/runner/work/up/up/internal/xpkg/snapshot/xrd.go:137 +0x1d
github.com/upbound/up/internal/xpkg/snapshot.validatorsFromV1XRD(0xc00078c240, 0x1b)
    /home/runner/work/up/up/internal/xpkg/snapshot/validators.go:166 +0x3e
github.com/upbound/up/internal/xpkg/snapshot.ValidatorsForObj({0x30e4718, 0xc00078c240}, 0xc0006a23f0)
    /home/runner/work/up/up/internal/xpkg/snapshot/validators.go:66 +0x309
github.com/upbound/up/internal/xpkg/snapshot.(*Snapshot).validatorsFromBytes(0xc0006a23f0, {0xc00042b880, 0x13c, 0x33c})
    /home/runner/work/up/up/internal/xpkg/snapshot/snapshot.go:393 +0x49b
github.com/upbound/up/internal/xpkg/snapshot.(*Snapshot).loadWSValidators(0xc0006a23f0)
    /home/runner/work/up/up/internal/xpkg/snapshot/snapshot.go:354 +0xa9
github.com/upbound/up/internal/xpkg/snapshot.(*Snapshot).init(0xc0006a23f0)
    /home/runner/work/up/up/internal/xpkg/snapshot/snapshot.go:221 +0x1b9
github.com/upbound/up/internal/xpkg/snapshot.(*Factory).New(0xc000710b80, {0x0, 0x0, 0x2})
    /home/runner/work/up/up/internal/xpkg/snapshot/snapshot.go:169 +0x1ba
github.com/upbound/up/internal/xpls/server.(*Server).Initialize(0xc00010da40, {0x3103578, 0xc000058120}, 0x2933160, {0xc000180800, {0x0, 0xc0000cf180}, 0x20}, 0xc0002bb020)
    /home/runner/work/up/up/internal/xpls/server/server.go:131 +0x1bf
github.com/upbound/up/internal/xpls/dispatcher.(*Dispatcher).Dispatch(0xc0002bb020, {0x3103578, 0xc000058120}, {0x3127f38, 0xc00010da40}, 0x2ad6b20, 0xc000423e00)
    /home/runner/work/up/up/internal/xpls/dispatcher/dispatcher.go:80 +0x127
github.com/upbound/up/internal/xpls/handler.(*Handler).Handle(0xc00011de58, {0x3103578, 0xc000058120}, 0x4, 0xc00011dea0)
    /home/runner/work/up/up/internal/xpls/handler/handler.go:69 +0x3e
github.com/sourcegraph/jsonrpc2.(*Conn).readMessages(0xc0006b7e60, {0x3103578, 0xc000058120})
    /home/runner/work/up/up/vendor/github.com/sourcegraph/jsonrpc2/jsonrpc2.go:553 +0x2f8
created by github.com/sourcegraph/jsonrpc2.NewConn
    /home/runner/work/up/up/vendor/github.com/sourcegraph/jsonrpc2/jsonrpc2.go:334 +0x25d

How can we reproduce it?

  1. clone https://github.com/danielinclouds/play_crossplane_plugin
  2. open https://github.com/danielinclouds/play_crossplane_plugin in vscode (with the latest up)