Closed mumianbaba closed 10 months ago
xfrpc不支持authenticate_new_work_conns = true特性,外加xfrpc处理逻辑问题导致段错误。可以修改处理逻辑后,无论服务器是否开启该特性,xfrpc不会出现段错误。服务器开启该功能后,xfrpc的代理工作就不能正常进行,不开启能正常提供代理服务。
@mumianbaba 非常感谢指出具体的错误,我看看代码,尽快修复,如果可以,你能提交PR修复这个问题吗?
@mumianbaba fix it https://github.com/liudf0716/xfrpc/pull/51
我使用的是2.9.644版本的xfrpc。 start_work_conn_resp_unmarshal函数内部,在proxy_name解析失败时,仍然返回sr有效指针,此时sr->proxy_name为NULL。接下来struct proxy_service *ps = get_proxy_service(sr->proxy_name);代码处直接使用sr->proxy_name变量,发生段错误。 上述是我真实发生段错误后,追踪到的路径。可以查看一下代码。
下面是我添加打印后的日志: 注释 get_proxy_service(sr->proxy_name);,后的打印日志。 [7][Wed Oct 25 14:39:28 2023]23385 I AM HERE!! [7][Wed Oct 25 14:39:28 2023]23385 I AM HERE!! [3][Wed Oct 25 14:39:28 2023]23385 TypeStartWorkConn requested proxy service [NULL] not found, it should nerver be happend! [7][Wed Oct 25 14:39:28 2023]23385 I AM HERE!! [7][Wed Oct 25 14:39:28 2023]23385 main control message
在start_work_conn_resp_unmarshal内部添加打印,并修改逻辑后的打印。 [7][Wed Oct 25 14:48:30 2023]6206 start work conn resp unmarshal msg:{"error":"token in NewWorkConn doesn't match token from configuration"} [3][Wed Oct 25 14:48:30 2023]6206 start work conn resp unmarshal msg proxy_name NULL, {"error":"token in NewWorkConn doesn't match token from configuration"} [3][Wed Oct 25 14:48:30 2023]6206 TypeStartWorkConn unmarshal failed, it should never be happend!