apache / brpc

brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".
https://brpc.apache.org
Apache License 2.0
16.55k stars 3.97k forks source link

Brpc channel core 掉的bug #2461

Open frankleaf opened 11 months ago

frankleaf commented 11 months ago

Describe the bug (描述bug)

Brpc 在发起 IssueRPC 的过程中,由于从hosts里解析rpc_address对应的ip 地址失败,导致core掉

To Reproduce (复现方法)

在rpc发送过程中,从hosts当中删掉原本通过域名解析发送rpc请求的内容

Expected behavior (期望行为)

Versions (各种版本) OS: Compiler: brpc: protobuf:

Additional context/screenshots (更多上下文/截图)

#0  0x0000000000000000 in ?? ()
#1  0x0000000000faa088 in brpc::Channel::CallMethod (this=0x7f3259207500,
    method=0x7f3259254fc0, controller_base=0x7f325927bb18, request=0x7f31dde6f4b0,
    response=0x7f31dde6f470, done=0x7f325927baf8)
    at /root/src/brpc/channel.cpp:521
#2  0x0000000000fa51aa in brpc::aschan::Sender::IssueRPC (this=0x7f325927ba80,
    start_realtime_us=<optimized out>)
E1205 15:22:56.473294 1573452 channel.cpp:261] Invalid address=`xxx.yyy.zzz:8101'
E1205 15:22:56.473877 1573452 channel.cpp:261] Invalid address=`xxx.yyy.zzz:8101'
E1205 15:22:56.474417 1573452 channel.cpp:261] Invalid address=`xxx.yyy.zzz:8101'
E1205 15:22:56.474977 1573452 channel.cpp:261] Invalid address=`xxx.yyy.zzz:8101'
E1205 15:22:56.475492 1573452 channel.cpp:261] Invalid address=`xxx.yyy.zzz:8101'
E1205 15:22:56.475947 1573452 channel.cpp:261] Invalid address=`xxx.yyy.zzz:8101'
Error: signal 11 Segmentation fault, PID 1, TID 7f31dde79700
Stacktrace with Glog:
    @              (nil)  (unknown)

Stacktrace with Boost:
lorinlee commented 11 months ago

发起rpc之前,Channel::Init的返回值判断了吗,从日志看像是返回了-1的