From a97cce86a8addeb9f40cba7a261c94b1f0c576cb Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Sun, 27 Sep 2026 20:18:56 +0300 Subject: [PATCH] common : avoid side effects around params parsing (#29537) - register --rpc unconditionally and call llama_supports_rpc() only from its handler - print server "initialization ..." log after args are parsed Assisted-by: pi:llama.cpp/MiMo-V2.6-Flash-RL --- common/arg.cpp | 19 ++++++++++--------- tools/server/server.cpp | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/common/arg.cpp b/common/arg.cpp index 63e342776d..2acac3b5cf 100644 --- a/common/arg.cpp +++ b/common/arg.cpp @@ -2673,16 +2673,17 @@ common_params_context common_params_parser_init(common_params & params, llama_ex params.video_ffmpeg_bin_dir = value; } ).set_examples(mmproj_examples).set_env("LLAMA_ARG_VIDEO_FFMPEG_DIR")); - if (params.is_gen_docs || llama_supports_rpc()) { - add_opt(common_arg( - {"--rpc"}, "SERVERS", - "comma-separated list of RPC servers (host:port)", - [](common_params & params, const std::string & value) { - add_rpc_devices(value); - GGML_UNUSED(params); + add_opt(common_arg( + {"--rpc"}, "SERVERS", + "comma-separated list of RPC servers (host:port)", + [](common_params & params, const std::string & value) { + if (!llama_supports_rpc()) { + throw std::invalid_argument("RPC not supported in this build"); } - ).set_env("LLAMA_ARG_RPC")); - } + add_rpc_devices(value); + GGML_UNUSED(params); + } + ).set_env("LLAMA_ARG_RPC")); add_opt(common_arg( {"-lm", "--load-mode"}, "MODE", "model loading mode (default: auto)\n" diff --git a/tools/server/server.cpp b/tools/server/server.cpp index 049bdcebb3..4568a11fb9 100644 --- a/tools/server/server.cpp +++ b/tools/server/server.cpp @@ -102,12 +102,12 @@ int llama_server(int argc, char ** argv) { // touch it. lifecycle is symmetric, stop_gc() runs in clean_up() before backend free server_stream_session_manager_start(); - SRV_INF("%s", "initializing ...\n"); - if (!common_params_parse(argc, argv, params, LLAMA_EXAMPLE_SERVER)) { return 1; } + SRV_INF("%s", "initializing ...\n"); + llama_backend_init(); llama_numa_init(params.numa);