rpc: fix segfault on invalid endpoint format (#18387)
* rpc: fix segfault on invalid endpoint format * rpc: add error log for failed endpoint connection
This commit is contained in:
parent
f8d561eb87
commit
60f17f56da
|
|
@ -2017,7 +2017,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
|
||||||
if (llama_supports_rpc()) {
|
if (llama_supports_rpc()) {
|
||||||
add_opt(common_arg(
|
add_opt(common_arg(
|
||||||
{"--rpc"}, "SERVERS",
|
{"--rpc"}, "SERVERS",
|
||||||
"comma separated list of RPC servers",
|
"comma separated list of RPC servers (host:port)",
|
||||||
[](common_params & params, const std::string & value) {
|
[](common_params & params, const std::string & value) {
|
||||||
add_rpc_devices(value);
|
add_rpc_devices(value);
|
||||||
GGML_UNUSED(params);
|
GGML_UNUSED(params);
|
||||||
|
|
|
||||||
|
|
@ -524,6 +524,7 @@ static std::shared_ptr<socket_t> get_socket(const std::string & endpoint) {
|
||||||
std::string host;
|
std::string host;
|
||||||
int port;
|
int port;
|
||||||
if (!parse_endpoint(endpoint, host, port)) {
|
if (!parse_endpoint(endpoint, host, port)) {
|
||||||
|
GGML_LOG_ERROR("Failed to parse endpoint: %s\n", endpoint.c_str());
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
@ -2053,6 +2054,10 @@ ggml_backend_reg_t ggml_backend_rpc_reg(void) {
|
||||||
|
|
||||||
static uint32_t ggml_backend_rpc_get_device_count(const char * endpoint) {
|
static uint32_t ggml_backend_rpc_get_device_count(const char * endpoint) {
|
||||||
auto sock = get_socket(endpoint);
|
auto sock = get_socket(endpoint);
|
||||||
|
if (sock == nullptr) {
|
||||||
|
GGML_LOG_ERROR("Failed to connect to %s\n", endpoint);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
rpc_msg_device_count_rsp response;
|
rpc_msg_device_count_rsp response;
|
||||||
bool status = send_rpc_cmd(sock, RPC_CMD_DEVICE_COUNT, nullptr, 0, &response, sizeof(response));
|
bool status = send_rpc_cmd(sock, RPC_CMD_DEVICE_COUNT, nullptr, 0, &response, sizeof(response));
|
||||||
RPC_STATUS_ASSERT(status);
|
RPC_STATUS_ASSERT(status);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue