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

request with wrong content-type causes stack overflow #2580

Open
suifengsanjin opened this issue Dec 14, 2020 · 3 comments
Open

request with wrong content-type causes stack overflow #2580

suifengsanjin opened this issue Dec 14, 2020 · 3 comments

Comments

@suifengsanjin
Copy link

  • With issues:
    • Use the search tool before opening a new issue.
    • Please provide source code and commit sha if you found a bug.
    • Review existing issues and provide feedback or react to them.

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

  • go version: go version go1.13.6 linux/amd64
  • gin version (or commit ref):v1.5.0
  • operating system:Linux localhost.localdomain 3.10.0-1127.el7.x86_64 update Readme.md. Add code to String method #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
@imxyb
Copy link
Contributor

imxyb commented Dec 17, 2020

can you show the code example?

@suifengsanjin
Copy link
Author

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
Copy link
Contributor

imxyb commented Dec 17, 2020

why need Ctxt *gin.Context json:"-"``?

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

2 participants