Closed
Description
Problem statement
I'm trying to debug an issue with a bad POST handler. The problem seems to stem from BindValidRequest
in operations.post_foo.go
during the o.context.Respond()
call.
I'd like to find the offending portion of the input data. Or some details on where the input parameter unmarsaling occurs (I looked at https://github.com/go-swagger/go-swagger/blob/master/design.md
do no avail)
Looking at the stack trace leads me to go-openapi/middleware/context.go
but no particulars what might be going on.
2016/12/02 17:45:05 http: panic serving 127.0.0.1:35882: runtime error: invalid memory address or nil pointer dereference
goroutine 12 [running]:
net/http.(*conn).serve.func1(0xc42074a300)
/usr/local/go/src/net/http/server.go:1491 +0x12a
panic(0x8c9b80, 0xc4200120b0)
/usr/local/go/src/runtime/panic.go:458 +0x243
code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware.(*Context).Respond(0xc420700980, 0xc0ffa0, 0xc4206de340, 0xc42066e0f0, 0xc420013990, 0x1, 0x1, 0xc42001b180, 0x8ca8a0, 0xc420446600)
/home/sandy/go/src/code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware/context.go:438 +0x7b1
code.foo.com/MyCo/mosaics-api/server/restapi/operations.(*PostMosaicExperimentalMosaics).ServeHTTP(0xc42031a660, 0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/home/sandy/go/src/code.foo.com/MyCo/mosaics-api/server/restapi/operations/post_mosaic_experimental_mosaics.go:49 +0x34d
code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1(0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/home/sandy/go/src/code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware/operation.go:24 +0x69
net/http.HandlerFunc.ServeHTTP(0xc420107b50, 0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/usr/local/go/src/net/http/server.go:1726 +0x44
code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware.NewRouter.func1(0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/home/sandy/go/src/code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware/router.go:89 +0x478
net/http.HandlerFunc.ServeHTTP(0xc42078f680, 0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/usr/local/go/src/net/http/server.go:1726 +0x44
code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware.Redoc.func1(0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/home/sandy/go/src/code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware/redoc.go:72 +0xac
net/http.HandlerFunc.ServeHTTP(0xc42078f800, 0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/usr/local/go/src/net/http/server.go:1726 +0x44
code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware.Spec.func1(0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/home/sandy/go/src/code.foo.com/MyCo/mosaics-api/vendor/github.com/go-openapi/runtime/middleware/spec.go:45 +0x8b
net/http.HandlerFunc.ServeHTTP(0xc42078f840, 0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/usr/local/go/src/net/http/server.go:1726 +0x44
net/http.serverHandler.ServeHTTP(0xc420791980, 0xc0ffa0, 0xc4206de340, 0xc42066e0f0)
/usr/local/go/src/net/http/server.go:2202 +0x7d
net/http.(*conn).serve(0xc42074a300, 0xc109a0, 0xc420744340)
/usr/local/go/src/net/http/server.go:1579 +0x4b7
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2293 +0x44d
The code in context.go
430 >---if err, ok := data.(error); ok {
431 >--->---if format == "" {
432 >--->--->---rw.Header().Set(runtime.HeaderContentType, runtime.JSONMime)
433 >--->---}
434 >--->---if route == nil || route.Operation == nil {
435 >--->--->---c.api.ServeErrorFor("")(rw, r, err)
436 >--->--->---return
437 >--->---}
438 >--->---c.api.ServeErrorFor(route.Operation.ID)(rw, r, err)
439 >--->---return
440 >---}
... which kinda leaves me at a dead-end.