{"record":{"id":"2fda151d35e33bdc","repo":"vllm-project/vllm","slug":"utility-call-method-returned-an-invalid-result","errorCode":null,"errorMessage":"utility call `{method}` returned an invalid result (call_id={call_id}): {message}","messagePattern":"utility call `(.+?)` returned an invalid result \\(call_id=(.+?)\\): (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"rust/src/engine-core-client/src/error.rs","lineNumber":90,"sourceCode":"        \"data parallel rank {rank} is not connected to this frontend; connected ranks: {connected_ranks:?}\"\n    )]\n    InvalidDataParallelRank {\n        rank: u32,\n        connected_ranks: Vec<u32>,\n    },\n    #[error(\"engine-core output dispatcher closed: {message}\")]\n    DispatcherClosed { message: String },\n    #[error(\"engine-core client is closed: {message}\")]\n    ClientClosed { message: String },\n    #[error(\"request output stream for `{request_id}` closed unexpectedly\")]\n    RequestStreamClosed { request_id: String },\n    #[error(\"utility call `{method}` failed (call_id={call_id}): {message}\")]\n    UtilityCallFailed {\n        method: String,\n        call_id: UtilityCallId,\n        message: String,\n    },\n    #[error(\"utility call `{method}` returned an invalid result (call_id={call_id}): {message}\")]\n    UtilityResultDecode {\n        method: String,\n        call_id: UtilityCallId,\n        message: String,\n    },\n    #[error(\"utility call `{method}` closed unexpectedly (call_id={call_id})\")]\n    UtilityCallClosed { method: String, call_id: u64 },\n    #[error(\"utility call `{method}` returned inconsistent results across engines: {values}\")]\n    InconsistentUtilityResults { method: String, values: String },\n\n    /// A special variant to allow cloning the same error.\n    #[error(transparent)]\n    Shared(Arc<Self>),\n}\n","sourceCodeStart":72,"sourceCodeEnd":105,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/rust/src/engine-core-client/src/error.rs#L72-L105","documentation":"EngineCoreError::UtilityResultDecode means the engine-core answered a utility call, but the returned payload could not be decoded into the expected result type (message carries the decode error). This is a serialization/contract problem between the two processes, not a user-input error.","triggerScenarios":"The engine-core serializes the utility result with a different schema/protobuf/messagepack version than the client expects; enum variant or field renames across versions; truncated or corrupt frames on the IPC channel.","commonSituations":"Mixing an old frontend binary with a newer engine-core (or vice versa) after a release changed utility result types; hand-rolled utility methods whose codec drift; flaky IPC producing corrupt frames.","solutions":["Rebuild/reinstall both frontend and engine-core from the same vLLM version so codecs match","If you added a custom utility method, verify the result type's serialization is identical on both sides","Check call_id in logs to correlate which utility and payload failed decoding"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":"pub fn is_utility_result_decode(e: &vllm_engine_core_client::Error) -> bool {\n    matches!(e, vllm_engine_core_client::Error::UtilityResultDecode { .. })\n}","tryCatchPattern":"match client.utility_call(method, payload).await {\n    Err(e @ vllm_engine_core_client::Error::UtilityResultDecode { method, .. }) => {\n        tracing::error!(\"codec mismatch on {method}: {e}\");\n        Err(e.into()) // not retryable until versions are aligned\n    }\n    other => other,\n}","preventionTips":["Deploy frontend and engine-core from the same release artifact","Pin the vLLM version in both processes; never mix minor versions across an IPC boundary","For custom utilities, add round-trip encode/decode tests shared by both sides"],"tags":["serialization","version-skew","utility-call","rust"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}