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

Doesn't handle bad recover usage #81

Open
firelizzard18 opened this issue Mar 16, 2016 · 0 comments
Open

Doesn't handle bad recover usage #81

firelizzard18 opened this issue Mar 16, 2016 · 0 comments

Comments

@firelizzard18
Copy link

I was doing something dumb. I figured defer recover() would work. Turns out it doesn't. Thankfully, godebug helped me discover this. Because it exploded when it tried to instrument that statement. Maybe add a check and error out saying, "Yo, you're being an idiot. This doesn't work like that." Instead of exploding. Just a thought.

$ godebug build -instrument=my/pkg/path -o out.exe
panic: reflect.Set: value of type *ast.UnaryExpr is not assignable to type *ast.CallExpr

goroutine 1 [running]:
panic(0x6f0200, 0xc085b6b070)
        C:/Tools/Go/src/runtime/panic.go:464 +0x3f4
reflect.Value.assignTo(0x79d2c0, 0xc08737f2e0, 0x16, 0x802440, 0xb, 0x79aac0, 0x0, 0x0, 0x0, 0x0)
        C:/Tools/Go/src/reflect/value.go:2164 +0x3c5
reflect.Value.Set(0x79aac0, 0xc08210e228, 0x196, 0x79d2c0, 0xc08737f2e0, 0x16)
        C:/Tools/Go/src/reflect/value.go:1334 +0x9c
github.com/mailgun/godebug/gen.rewriteRecoverCall(0x2993450, 0xc08210e220, 0x2992bd8, 0xc0820ed880)
        C:/Source/Go/src/github.com/mailgun/godebug/gen/gen.go:1044 +0x3e4
github.com/mailgun/godebug/gen.(*recoverVisitor).Visit(0xc08737f240, 0x2992bd8, 0xc0820ed880, 0x0, 0x0)
        C:/Source/Go/src/github.com/mailgun/godebug/gen/gen.go:1026 +0x223
go/ast.Walk(0x29934d0, 0xc08737f240, 0x2992bd8, 0xc0820ed880)
        C:/Tools/Go/src/go/ast/walk.go:52 +0x5d
go/ast.Walk(0x29934d0, 0xc08737f240, 0x2993450, 0xc08210e220)
        C:/Tools/Go/src/go/ast/walk.go:213 +0x4194
go/ast.walkStmtList(0x29934d0, 0xc08737f220, 0xc082105fc0, 0x2, 0x2)
        C:/Tools/Go/src/go/ast/walk.go:32 +0xdc
go/ast.Walk(0x29934d0, 0xc08737f220, 0x2905ac0, 0xc0820e7a10)
        C:/Tools/Go/src/go/ast/walk.go:224 +0x3e25
go/ast.Walk(0x29934d0, 0xc08737f1c0, 0x2905a90, 0xc0820ed900)
        C:/Tools/Go/src/go/ast/walk.go:231 +0x4054
go/ast.walkStmtList(0x29934d0, 0xc08737efe0, 0xc082110020, 0x2, 0x2)
        C:/Tools/Go/src/go/ast/walk.go:32 +0xdc
go/ast.Walk(0x29934d0, 0xc08737efe0, 0x2905ac0, 0xc0820e7aa0)
        C:/Tools/Go/src/go/ast/walk.go:224 +0x3e25
github.com/mailgun/godebug/gen.rewriteRecoversIn(0xc0820e7aa0, 0x2)
        C:/Source/Go/src/github.com/mailgun/godebug/gen/gen.go:1013 +0x10d
github.com/mailgun/godebug/gen.(*visitor).Visit(0xc0872fe620, 0x2992c38, 0xc08210e2b0, 0x0, 0x0)
        C:/Source/Go/src/github.com/mailgun/godebug/gen/gen.go:606 +0x3784
go/ast.Walk(0x29934a8, 0xc0872fe620, 0x2992c38, 0xc08210e2b0)
        C:/Tools/Go/src/go/ast/walk.go:52 +0x5d
go/ast.Walk(0x29934a8, 0xc0872fe620, 0x2992bd8, 0xc0820ed940)
        C:/Tools/Go/src/go/ast/walk.go:136 +0x1d85
go/ast.Walk(0x29934a8, 0xc0872fe5b0, 0x2993218, 0xc08210e2d0)
        C:/Tools/Go/src/go/ast/walk.go:210 +0x162f
go/ast.walkStmtList(0x29934a8, 0xc08737d420, 0xc08206f280, 0x8, 0x8)
        C:/Tools/Go/src/go/ast/walk.go:32 +0xdc
go/ast.Walk(0x29934a8, 0xc08737d420, 0x2905ac0, 0xc0820e7ad0)
        C:/Tools/Go/src/go/ast/walk.go:224 +0x3e25
go/ast.Walk(0x29934a8, 0xc08737c310, 0x2992de8, 0xc0820e7b00)
        C:/Tools/Go/src/go/ast/walk.go:344 +0xb4d
go/ast.walkDeclList(0x29934a8, 0xc088889180, 0xc082070b00, 0xa, 0x10)
        C:/Tools/Go/src/go/ast/walk.go:38 +0xdc
go/ast.Walk(0x29934a8, 0xc088889180, 0x2a44800, 0xc08206f380)
        C:/Tools/Go/src/go/ast/walk.go:353 +0x29c0
github.com/mailgun/godebug/gen.Generate(0xc0820095c0, 0x893570, 0xc089d2bbd0)
        C:/Source/Go/src/github.com/mailgun/godebug/gen/gen.go:70 +0x9e4
main.generateSourceFiles(0xc08200d040, 0x7f4858, 0x5, 0x0, 0x0)
        C:/Source/Go/src/github.com/mailgun/godebug/cmd.go:404 +0x56c
main.doBuild(0xc082012200, 0x3, 0x3)
        C:/Source/Go/src/github.com/mailgun/godebug/cmd.go:212 +0x226
main.main()
        C:/Source/Go/src/github.com/mailgun/godebug/cmd.go:175 +0x35b
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

1 participant