gin-gonic / gin

Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
https://gin-gonic.com/
MIT License
77.99k stars 7.97k forks source link

request with wrong content-type causes stack overflow #2580

Open suifengsanjin opened 3 years ago

suifengsanjin commented 3 years ago

Description

wrong content-type causes stack overflow

How to reproduce

send a json string request with content-type test/plain

Actual result

runtime: goroutine stack exceeds 1000000000-byte limit fatal error: stack overflow

runtime stack: runtime.throw(0x1355a3a, 0xe) /usr/lib/golang/src/runtime/panic.go:774 +0x72 runtime.newstack() /usr/lib/golang/src/runtime/stack.go:1046 +0x7a9 runtime.morestack() /usr/lib/golang/src/runtime/asm_amd64.s:449 +0x8f

goroutine 102 [running]: runtime.mapaccess2_faststr(0x11f6980, 0xc000740120, 0x1117bbf, 0x3, 0x0, 0x0) /usr/lib/golang/src/runtime/map_faststr.go:107 +0x7a8 fp=0xc020740350 sp=0xc020740348 pc=0x41b238 github.com/gin-gonic/gin/binding.setByForm(0x12fa560, 0xc005b3a400, 0x199, 0x1117bbf, 0x3, 0x0, 0x0, 0x14efda0, 0x12d2000, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:140 +0x93 fp=0xc020740508 sp=0xc020740350 pc=0xf2fa73 github.com/gin-gonic/gin/binding.formSource.TrySet(0xc000740120, 0x12fa560, 0xc005b3a400, 0x199, 0x1117bbf, 0x3, 0x0, 0x0, 0x14efda0, 0x12d2000, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:45 +0x104 fp=0xc020740608 sp=0xc020740508 pc=0xf2e6a4 github.com/gin-gonic/gin/binding.tryToSetValue(0x12fa560, 0xc005b3a400, 0x199, 0x1117bbf, 0x3, 0x0, 0x0, 0x14efda0, 0x12d2000, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:136 +0x5ac fp=0xc020740798 sp=0xc020740608 pc=0xf2f8ec github.com/gin-gonic/gin/binding.mapping(0x12fa560, 0xc005b3a400, 0x199, 0x1117bbf, 0x3, 0x0, 0x0, 0x14efda0, 0x12d2000, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:78 +0x567 fp=0xc020740a00 sp=0xc020740798 pc=0xf2ee47 github.com/gin-gonic/gin/binding.mapping(0x12d2000, 0xc005b2fc10, 0x196, 0x1117bbf, 0x3, 0x0, 0x0, 0x14efda0, 0x12d2000, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020740c68 sp=0xc020740a00 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2fc00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020740ed0 sp=0xc020740c68 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1de50, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020741138 sp=0xc020740ed0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1ddd0, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc0207413a0 sp=0xc020741138 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2fbe0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020741608 sp=0xc0207413a0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2fb00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020741870 sp=0xc020741608 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1ddc0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020741ad8 sp=0xc020741870 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1dd40, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020741d40 sp=0xc020741ad8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2fae0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020741fa8 sp=0xc020741d40 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2fa00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020742210 sp=0xc020741fa8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1dd30, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020742478 sp=0xc020742210 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1dcb0, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc0207426e0 sp=0xc020742478 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f9e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020742948 sp=0xc0207426e0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f900, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020742bb0 sp=0xc020742948 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1dca0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020742e18 sp=0xc020742bb0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1dc20, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020743080 sp=0xc020742e18 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f8e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc0207432e8 sp=0xc020743080 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f800, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020743550 sp=0xc0207432e8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1dc10, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc0207437b8 sp=0xc020743550 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1db90, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020743a20 sp=0xc0207437b8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f7e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020743c88 sp=0xc020743a20 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f700, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020743ef0 sp=0xc020743c88 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1db80, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020744158 sp=0xc020743ef0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1db00, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc0207443c0 sp=0xc020744158 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f6e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020744628 sp=0xc0207443c0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f600, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020744890 sp=0xc020744628 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1daf0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020744af8 sp=0xc020744890 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1da70, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020744d60 sp=0xc020744af8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f5e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020744fc8 sp=0xc020744d60 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f500, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020745230 sp=0xc020744fc8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1da60, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020745498 sp=0xc020745230 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d9e0, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020745700 sp=0xc020745498 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f4e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020745968 sp=0xc020745700 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f400, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020745bd0 sp=0xc020745968 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d9d0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020745e38 sp=0xc020745bd0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d950, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc0207460a0 sp=0xc020745e38 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f3e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020746308 sp=0xc0207460a0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f300, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020746570 sp=0xc020746308 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d940, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc0207467d8 sp=0xc020746570 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d8c0, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020746a40 sp=0xc0207467d8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f2e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020746ca8 sp=0xc020746a40 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f200, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020746f10 sp=0xc020746ca8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d8b0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020747178 sp=0xc020746f10 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d830, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc0207473e0 sp=0xc020747178 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f1e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020747648 sp=0xc0207473e0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f100, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc0207478b0 sp=0xc020747648 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d820, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020747b18 sp=0xc0207478b0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d7a0, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020747d80 sp=0xc020747b18 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2f0e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020747fe8 sp=0xc020747d80 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2f000, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020748250 sp=0xc020747fe8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d790, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc0207484b8 sp=0xc020748250 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d710, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020748720 sp=0xc0207484b8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2efe0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020748988 sp=0xc020748720 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2ef00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020748bf0 sp=0xc020748988 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d700, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020748e58 sp=0xc020748bf0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d680, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc0207490c0 sp=0xc020748e58 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2eee0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020749328 sp=0xc0207490c0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2ee00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020749590 sp=0xc020749328 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d670, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc0207497f8 sp=0xc020749590 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d5f0, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020749a60 sp=0xc0207497f8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2ede0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc020749cc8 sp=0xc020749a60 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2ed00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc020749f30 sp=0xc020749cc8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d5e0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074a198 sp=0xc020749f30 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d560, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074a400 sp=0xc02074a198 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2ece0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074a668 sp=0xc02074a400 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2ec00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074a8d0 sp=0xc02074a668 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d550, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074ab38 sp=0xc02074a8d0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d4d0, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074ada0 sp=0xc02074ab38 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2ebe0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074b008 sp=0xc02074ada0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2eb00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074b270 sp=0xc02074b008 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d4c0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074b4d8 sp=0xc02074b270 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d440, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074b740 sp=0xc02074b4d8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2eae0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074b9a8 sp=0xc02074b740 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2ea00, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074bc10 sp=0xc02074b9a8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d430, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074be78 sp=0xc02074bc10 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d3b0, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074c0e0 sp=0xc02074be78 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2e9e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074c348 sp=0xc02074c0e0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2e900, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074c5b0 sp=0xc02074c348 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d3a0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074c818 sp=0xc02074c5b0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d320, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074ca80 sp=0xc02074c818 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2e8e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074cce8 sp=0xc02074ca80 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2e800, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074cf50 sp=0xc02074cce8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d310, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074d1b8 sp=0xc02074cf50 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d290, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074d420 sp=0xc02074d1b8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2e7e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074d688 sp=0xc02074d420 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2e700, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074d8f0 sp=0xc02074d688 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d280, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074db58 sp=0xc02074d8f0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d200, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074ddc0 sp=0xc02074db58 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2e6e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074e028 sp=0xc02074ddc0 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2e600, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074e290 sp=0xc02074e028 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d1f0, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074e4f8 sp=0xc02074e290 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x130d820, 0xc005b1d170, 0x199, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074e760 sp=0xc02074e4f8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x129e8c0, 0xc005b2e5e0, 0x196, 0x1121192, 0x8, 0x0, 0x0, 0x14efda0, 0x129e8c0, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074e9c8 sp=0xc02074e760 pc=0xf2ec1c github.com/gin-gonic/gin/binding.mapping(0x132ad20, 0xc005b2e500, 0x199, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:96 +0x8f1 fp=0xc02074ec30 sp=0xc02074e9c8 pc=0xf2f1d1 github.com/gin-gonic/gin/binding.mapping(0x1325320, 0xc005b1d160, 0x196, 0x111f069, 0x7, 0x0, 0x0, 0x14efda0, 0x1325320, 0x0, ...) /usr/lib/golang/src/github.com/gin-gonic/gin/binding/form_mapping.go:67 +0x33c fp=0xc02074ee98 sp=0xc02074ec30 pc=0xf2ec1c ...additional frames elided... created by net/http.(*Server).Serve /usr/lib/golang/src/net/http/server.go:2927 +0x911

Environment

imxyb commented 3 years ago

can you show the code example?

suifengsanjin commented 3 years ago

can you show the code example?


package main

import ( "fmt" "github.com/gin-gonic/gin" "net/http" "os" "os/signal" "syscall" "time" )

func BindAndValid(c *gin.Context, form interface{}) error { err := c.Bind(form) if err != nil { return err } return nil }

func run(server *http.Server) { err := server.ListenAndServe() if err != nil { fmt.Println("ListenAndServe Err:", err.Error()) os.Exit(1) } }

type GetShareReq struct { Ctxt *gin.Context json:"-" //if delete this,the program will not core Param string json:"param" } type Res struct { Status int json:"status" Message string json:"message" }

func jsonTest(c *gin.Context) { req := GetShareReq{Ctxt: c} err := BindAndValid(c, &req) if err != nil { fmt.Println("Bind Req Failed!!!") c.JSON(http.StatusOK, Res{Status: -1, Message: err.Error()}) } else { c.JSON(http.StatusOK, Res{Status: 0, Message: "SUCCESS"}) } fmt.Println(req) }

func main() { gin.SetMode("debug") server := &http.Server{ Addr: "127.0.0.1:8009", Handler: func() gin.Engine { r := gin.Default() g := r.Group("test") g.POST("json", jsonTest) return r }(), ReadTimeout: 300 time.Second, WriteTimeout: 300 * time.Second, MaxHeaderBytes: 1 << 20, } go run(server)

quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit

}


start the test server,send a request use postman,Content-Type =text/plain
imxyb commented 3 years ago

why need Ctxt *gin.Contextjson:"-"``?