[zeromicro/go-zero]crashinterceptor 输出的panic 日志堆栈没到logic中

2024-01-03 825 views
0

日志只到 proxyService._ProxyService_GetDeloyDload_Handler,没到业务代码

{"@timestamp":"2021-11-04T15:37:38.304+08","level":"error","content":"crashinterceptor.go:42 invalid argument to Intn goroutine 43 [running]:\nruntime/debug.Stack(0x0, 0xc000711800, 0xc000436cb0)\n\t/usr/local/go/src/runtime/debug/stack.go:24 +0x9f\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.toPanicError(0x1053f00, 0x14767a0, 0xc00071cd98, 0x0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/crashinterceptor.go:42 +0x26\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryStatInterceptor.func1.1(0x1053f00, 0x14767a0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/statinterceptor.go:22 +0x3e\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.handleCrash(0xc00071d860)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/crashinterceptor.go:37 +0x5a\npanic(0x1053f00, 0x14767a0)\n\t/usr/local/go/src/runtime/panic.go:965 +0x1b9\ngithub.com/tal-tech/go-zero/core/breaker.(*googleBreaker).doReq.func1(0xc0003838c0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/core/breaker/googlebreaker.go:75 +0x85\npanic(0x1053f00, 0x14767a0)\n\t/usr/local/go/src/runtime/panic.go:965 +0x1b9\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryTimeoutInterceptor.func1(0x14a02e0, 0xc0007e6240, 0x11a3340, 0xc000788380, 0xc0002e10e0, 0xc000383890, 0x0, 0x0, 0x0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/timeoutinterceptor.go:39 +0x3f6\ngoogle.golang.org/grpc.getChainUnaryHandler.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0x0, 0x40e2f8, 0x38, 0x115ae60)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1133 +0xe7\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnarySheddingInterceptor.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0xc0002e10e0, 0xc000788a00, 0x0, 0x0, 0x0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/sheddinginterceptor.go:43 +0x131\ngoogle.golang.org/grpc.getChainUnaryHandler.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0xc0000a13d8, 0xb0f63c, 0x0, 0xc014000000000000)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1133 +0xe7\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryBreakerInterceptor.func1.1(0xc0003838c0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/breakerinterceptor.go:27 +0x57\ngithub.com/tal-tech/go-zero/core/breaker.(*googleBreaker).doReq(0xc0003838c0, 0xc000788980, 0x0, 0xc0007889c0, 0x0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/core/breaker/googlebreaker.go:79 +0xd0\ngithub.com/tal-tech/go-zero/core/breaker.loggedThrottle.doReq(0x1245ee8, 0x28, 0x1493028, 0xc0003838c0, 0xc0002bc850, 0xc000788980, 0x0, 0x126b8c8, 0xf60000c0003838c0, 0xc0002bc850)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/core/breaker/breaker.go:172 +0xa7\ngithub.com/tal-tech/go-zero/core/breaker.(*circuitBreaker).DoWithAcceptable(0xc0002e1100, 0xc000788980, 0x126b8c8, 0x14a4ea0, 0xc0003838a8)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/core/breaker/breaker.go:122 +0x51\ngithub.com/tal-tech/go-zero/core/breaker.DoWithAcceptable.func1(0x14a4ea0, 0xc0002e1100, 0x14a4ea0, 0xc0002e1100)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/core/breaker/breakers.go:20 +0x43\ngithub.com/tal-tech/go-zero/core/breaker.do(0x1245ee8, 0x28, 0xc0000a15f8, 0x40e2f8, 0x38)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/core/breaker/breakers.go:67 +0x52\ngithub.com/tal-tech/go-zero/core/breaker.DoWithAcceptable(0x1245ee8, 0x28, 0xc000788980, 0x126b8c8, 0xc000788940, 0xc0000a1668)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/core/breaker/breakers.go:19 +0x70\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryBreakerInterceptor.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0xc0002e10e0, 0xc000788940, 0xc000788940, 0xc000788900, 0x40, 0x38)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/breakerinterceptor.go:25 +0xfe\ngoogle.golang.org/grpc.getChainUnaryHandler.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0xc00004e400, 0x0, 0xc0000a1758, 0x40e2f8)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1133 +0xe7\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryPrometheusInterceptor.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0xc0002e10e0, 0xc000788900, 0xc000788900, 0xc05901509002dac2, 0x50ad9d84d, 0x1b8a860)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/prometheusinterceptor.go:41 +0x325\ngoogle.golang.org/grpc.getChainUnaryHandler.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0x38, 0x38, 0x7f8309d425b8, 0x40)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1133 +0xe7\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryStatInterceptor.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0xc0002e10e0, 0xc0007888c0, 0x0, 0x0, 0x0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/statinterceptor.go:34 +0x17a\ngoogle.golang.org/grpc.getChainUnaryHandler.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0x40e2f8, 0x38, 0x115ae60, 0x1160a01)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1133 +0xe7\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryCrashInterceptor.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0xc0002e10e0, 0xc000788880, 0x0, 0x0, 0x0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/crashinterceptor.go:31 +0xb7\ngoogle.golang.org/grpc.getChainUnaryHandler.func1(0x14a0318, 0xc0007a1440, 0x11a3340, 0xc000788380, 0xc00038c060, 0xc, 0x1245ee8, 0x28)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1133 +0xe7\ngithub.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryTracingInterceptor.func1(0x14a0318, 0xc0007a0000, 0x11a3340, 0xc000788380, 0xc0002e10e0, 0xc000788840, 0x0, 0x0, 0x0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/github.com/tal-tech/go-zero@v1.1.10/zrpc/internal/serverinterceptors/tracinginterceptor.go:27 +0x225\ngoogle.golang.org/grpc.chainUnaryServerInterceptors.func1(0x14a0318, 0xc0007a0000, 0x11a3340, 0xc000788380, 0xc0002e10e0, 0xc000383890, 0xc000089ba0, 0x511fc6, 0x1160ae0, 0xc0007a0000)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1119 +0xd0\ngitlab.excelliance.cn/zm2c-ourplay/apiservice/rpc/proxyService/proxyService._ProxyService_GetDeloyDload_Handler(0x115f0a0, 0xc00000e240, 0x14a0318, 0xc0007a0000, 0xc0005937a0, 0xc0002e03c0, 0x14a0318, 0xc0007a0000, 0xc000794a00, 0x1f1)\n\t/Users/ldf/code/gitlab.excelliance.cn/zm2c-ourplay/apiservice/rpc/proxyService/proxyService/proxyService.pb.go:2070 +0x150\ngoogle.golang.org/grpc.(*Server).processUnaryRPC(0xc0005fe000, 0x14aa2d8, 0xc000303680, 0xc0005a70e0, 0xc000453c20, 0x1b7a158, 0x0, 0x0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1292 +0x52b\ngoogle.golang.org/grpc.(*Server).handleStream(0xc0005fe000, 0x14aa2d8, 0xc000303680, 0xc0005a70e0, 0x0)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:1617 +0xd0c\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2(0xc000286950, 0xc0005fe000, 0x14aa2d8, 0xc000303680, 0xc0005a70e0)\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:940 +0xab\ncreated by google.golang.org/grpc.(*Server).serveStreams.func1\n\t/Users/ldf/code/go/pkg/mod/google.golang.org/grpc@v1.39.0/server.go:938 +0x1fd\n"}

回答

8

github.com/tal-tech/go-zero v1.1.10

8

这里吧?

gitlab.excelliance.cn/zm2c-ourplay/apiservice/rpc/proxyService/proxyService._ProxyService_GetDeloyDload_Handler(0x115f0a0, 0xc00000e240, 0x14a0318, 0xc0007a0000, 0xc0005937a0, 0xc0002e03c0, 0x14a0318, 0xc0007a0000, 0xc000794a00, 0x1f1)
    /Users/ldf/code/gitlab.excelliance.cn/zm2c-ourplay/apiservice/rpc/proxyService/proxyService/proxyService.pb.go:2070 +0x150
9

对,但是错误panic的发生肯定在logic业务代码中,这里没有显示

0

@LeeDF 我这么操作,没有复现,你看看哈

  1. 通过 goctl rpc new greet 创建示例服务
  2. 修改 internal/logic/pinglogic.go,增加 panic 代码,如下:
    func (l *PingLogic) Ping(in *greet.Request) (*greet.Response, error) {
    panic("foo")
    }
  3. 修改 etc/greet.yaml,增加 Mode 配置,如下
    Name: greet.rpc
    ListenOn: 127.0.0.1:8080
    Mode: dev
    Etcd:
    Hosts:
    - 127.0.0.1:2379
    Key: greet.rpc
  4. 执行 go mod tidy 并启动服务 go run greet.go -f etc/greet.yaml
  5. 执行 grpcurl -plaintext localhost:8080 greet.Greet/Ping 输出如下:
    
    ERROR:
    Code: Internal
    Message: panic: foo

goroutine 33 [running]: runtime/debug.Stack() /usr/local/Cellar/go/1.17.2/libexec/src/runtime/debug/stack.go:24 +0x65 github.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryTimeoutInterceptor.func1.1.1() /Users/kevin/Develop/go/pkg/mod/github.com/tal-tech/go-zero@v1.2.2/zrpc/internal/serverinterceptors/timeoutinterceptor.go:33 +0x46 panic({0x2167d20, 0x25e4860}) /usr/local/Cellar/go/1.17.2/libexec/src/runtime/panic.go:1038 +0x215 greet/internal/logic.(PingLogic).Ping(...) /Users/kevin/Develop/go/opensource/zero-issues/1204/greet/internal/logic/pinglogic.go:27 greet/internal/server.(GreetServer).Ping(0x0, {0x261ecc0, 0xc00058ad80}, 0x2b2c9908) /Users/kevin/Develop/go/opensource/zero-issues/1204/greet/internal/server/greetserver.go:26 +0x71 greet/greet._Greet_Ping_Handler.func1({0x261ecc0, 0xc00058ad80}, {0x22fd1c0, 0xc000800360}) /Users/kevin/Develop/go/opensource/zero-issues/1204/greet/greet/greet.pb.go:186 +0x78 github.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryTimeoutInterceptor.func1.1() /Users/kevin/Develop/go/pkg/mod/github.com/tal-tech/go-zero@v1.2.2/zrpc/internal/serverinterceptors/timeoutinterceptor.go:39 +0x12f created by github.com/tal-tech/go-zero/zrpc/internal/serverinterceptors.UnaryTimeoutInterceptor.func1 /Users/kevin/Develop/go/pkg/mod/github.com/tal-tech/go-zero@v1.2.2/zrpc/internal/serverinterceptors/timeoutinterceptor.go:29 +0x251



Full code: https://github.com/kevwan/zero-issues/tree/main/1204/greet
9

ok, 我自己后来也没复现,不过之前有同事必现过,他在业务中map没初始化,然后必现类似问题,当时没太跟进,后面再出现必现的情况我再模拟个用例出来再看看

4

好的好的,那这个先关了吧,发现了再开哈