Thanks to visit codestin.com
Credit goes to github.com

Skip to content

panic when using goose in acp mode w/litellm backend #5357

@dwa

Description

@dwa

Running 'goose acp' (v1.11, v.1.11.1 and v.1.12.0) working w/ litellm backend (v1.78.7) produces a panic and a backtrace. Using the openrouter backend seems to work fine.

I've included the traffic log from a session between the acp client (i.e., agent-shell) and goose, followed by the resulting backtrace (see below).

Note: Please check the common issues on https://block.github.io/goose/docs/troubleshooting before filing a report

A clear and concise description of what the bug is.

To Reproduce

  1. configure goose to use a local litellm server
  2. call it (goose acp) from an acp client
  3. start a session w/ pretty much any query
  4. panic

Expected behavior
I expected no panic

Screenshots
If applicable, add screenshots to help explain your problem.

Please provide following information:

  • OS & Arch: Fedora 42 Workstation ed.
  • Interface: CLI
  • Version: v.1.11.{0,1}, v1.12.0
  • Extensions enabled: -
  • Provider & Model: through litellm: openrouter/nvidia/nemotron-nano-9b-v2:free

Additional context

OUTGOING OBJECT >

((jsonrpc . 2.0) (method . initialize) (id . 1) (params (protocolVersion . 1) (clientCapabilities (fs (readTextFile . t) (writeTextFile . t)))))

OUTGOING TEXT >

{"jsonrpc":"2.0","method":"initialize","id":1,"params":{"protocolVersion":1,"clientCapabilities":{"fs":{"readTextFile":true,"writeTextFile":true}}}}


STDERR >

Goose ACP agent started. Listening on stdio...

INCOMING TEXT >

{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":1,"agentCapabilities":{"loadSession":false,"promptCapabilities":{"image":true,"audio":false,"embeddedContext":true},"mcpCapabilities":{"http":false,"sse":false}},"authMethods":[]}}


INCOMING LINE >

{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":1,"agentCapabilities":{"loadSession":false,"promptCapabilities":{"image":true,"audio":false,"embeddedContext":true},"mcpCapabilities":{"http":false,"sse":false}},"authMethods":[]}}

↳ Routing as response (result)

OUTGOING OBJECT >

((jsonrpc . 2.0) (method . session/new) (id . 2) (params (cwd . /home/dwa/) (mcpServers . [])))

OUTGOING TEXT >

{"jsonrpc":"2.0","method":"session/new","id":2,"params":{"cwd":"/home/dwa/","mcpServers":[]}}


INCOMING TEXT >

{"jsonrpc":"2.0","id":2,"result":{"sessionId":"c18399ab-d386-4fb6-9156-a8fefe97ebe9"}}


INCOMING LINE >

{"jsonrpc":"2.0","id":2,"result":{"sessionId":"c18399ab-d386-4fb6-9156-a8fefe97ebe9"}}

↳ Routing as response (result)

OUTGOING OBJECT >

((jsonrpc . 2.0) (method . session/prompt) (id . 3) (params (sessionId . c18399ab-d386-4fb6-9156-a8fefe97ebe9) (prompt . [((type . text) (text . hello))])))

OUTGOING TEXT >

{"jsonrpc":"2.0","method":"session/prompt","id":3,"params":{"sessionId":"c18399ab-d386-4fb6-9156-a8fefe97ebe9","prompt":[{"type":"text","text":"hello"}]}}


STDERR >

thread 'main' panicked at crates/goose/src/providers/litellm.rs:201:29:
can call blocking only when running on the multi-threaded runtime
stack backtrace:

STDERR >

0:     0x55a61c35444b - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h68841b5a1fd89ea2
   1:     0x55a61c3c353f - core::fmt::write::h894f480f5a0c6265
   2:     0x55a61c391f8f - std::io::Write::write_fmt::hca774916e69622a4

STDERR >

3:     0x55a61c354283 - std::sys::backtrace::BacktraceLock::print::h28dbd75cb318cc92
   4:     0x55a61c35a3b8 - std::panicking::default_hook::{{closure}}::he9945b2d442a43ca
   5:     0x55a61c35a298 - std::panicking::default_hook::hf70f9c5b0029bb32
   6:     0x55a61c35a961 - std::panicking::rust_panic_with_hook::h7c1fae20a3e7b1eb
   7:     0x55a61c35484a - std::panicking::begin_panic_handler::{{closure}}::h2a2d6aa6a3cc9cd3
   8:     0x55a61c354669 - std::sys::backtrace::__rust_end_short_backtrace::h6fad435f27143cce
   9:     0x55a61c35a465 - __rustc[7d5e88824d81f3b9]::rust_begin_unwind
  10:     0x55a618b42740 - core::panicking::panic_fmt::h11da3c120fadd518
  11:     0x55a618ad4521 - tokio::runtime::scheduler::multi_thread::worker::block_in_place::panic_cold_display::h8e6357ef2fd199b8
  12:     0x55a61a9c8597 - tokio::runtime::scheduler::multi_thread::worker::block_in_place::ha2f5e632cb563f9e
  13:     0x55a61acb4682 - <goose::providers::litellm::LiteLLMProvider as goose::providers::base::Provider>::supports_cache_control::ha40105b5ddf5ce97
  14:     0x55a61aed1e6a - <tracing::instrument::Instrumented<T> as core::future::future::Future>::poll::h75ffda077936b37f
  15:     0x55a61acb6a01 - <goose::providers::litellm::LiteLLMProvider as goose::providers::base::Provider>::complete_with_model::{{closure}}::h7e489eb0d7f87bf1
  16:     0x55a6191241f6 - goose::providers::base::Provider::complete::{{closure}}::hc4d39c8831e9024e
  17:     0x55a6198429af - goose::agents::agent::Agent::reply_internal::{{closure}}::{{closure}}::h5adb860e70f36931
  18:     0x55a61980f3df - <async_stream::async_stream::AsyncStream<T,U> as futures_core::stream::Stream>::poll_next::hd66d3a66188b2fad
  19:     0x55a6197ddd9e - <goose_cli::commands::acp::GooseAcpAgent as agent_client_protocol::agent::Agent>::prompt::{{closure}}::h57d66e689d05b136
  20:     0x55a6192e7e46 - agent_client_protocol::rpc::RpcConnection<Local,Remote>::handle_incoming::{{closure}}::{{closure}}::h4e12562f7392c602
  21:     0x55a618e237e5 - tokio::runtime::task::core::Core<T,S>::poll::h57c5e415ff30b0fe
  22:     0x55a618ba47df - tokio::runtime::task::harness::Harness<T,S>::poll::h8411dcab8b75b139
  23:     0x55a61c1b36c3 - tokio::task::local::LocalSet::tick::hc2813776ef4307b5
  24:     0x55a6192ed46e - std::thread::local::LocalKey<T>::with::h7741d6e76be68127
  25:

STDERR >

0x55a618ca3744 - goose_cli::cli::cli::{{closure}}::h2ccc1b29f9b74106
  26:     0x55a618cf5dd6 - goose::main::{{closure}}::h355b8fc74269bf84
  27:     0x55a618d61987 - tokio::runtime::park::CachedParkThread::block_on::hfda776ea881fa146
  28:     0x55a61919455e - tokio::runtime::context::runtime::enter_runtime::ha178829136aee92a
  29:     0x55a61933a052 - tokio::runtime::runtime::Runtime::block_on::h44ba6073a1139c44
  30:     0x55a61908f29a - goose::main::hccaa86a2097da9e6
  31:     0x55a61914faf3 - std::sys::backtrace::__rust_begin_short_backtrace::h99d0ee845ec8ea8a
  32:     0x55a6191fef0d - std::rt::lang_start::{{closure}}::ha7caee005f05a2a1
  33:     0x55a61c38eab5 - std::rt::lang_start_internal::h6d8043665de548bf
  34:     0x55a61908f375 - main
  35:     0x7f3828cf1575 - __libc_start_call_main
  36:     0x7f3828cf1628 - __libc_start_main_alias_2
  37:     0x55a618b456f5 - _start
  38:                0x0 - <unknown>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions