Skip to content

Voice mode fails with exception, hinting towards async issue #298

@johbo

Description

@johbo

I just wanted to try the voice mode out of curiosity and it did fail with an exception. Afterwards also the creation of the github issue failed with an exception.

Details and configuration

Here is what I tried:

> /voice                                                                                                                                                                                           
Processing...
Initializing sound device...

Setup details

Aider-CE version: 0.90.5.dev+less
Python version: 3.13.7
Platform: macOS-14.7-arm64-arm-64bit-Mach-O
Python implementation: CPython
Virtual environment: Yes
OS: Darwin 23.6.0 (64bit)
Git version: git version 2.51.0

Configuration:
35turbo: False
4: False
4_turbo: False
4o: False
add_gitignore_files: False
agent_config: {
"large_file_token_threshold": 12500,
"skip_cli_confirmations": false
}

aiderignore: /Users/johannes/wo/aider-ce/.aiderignore
alias: None
analytics: False
analytics_disable: False
analytics_log: None
analytics_posthog_host: None
apply: None
apply_clipboard_edits: False
assistant_output_color: #0088ff
attribute_author: False
attribute_co_authored_by: False
attribute_commit_message_author: False
attribute_commit_message_committer: False
attribute_committer: False
auto_accept_architect: True
auto_commits: True
auto_lint: True
auto_load: False
auto_save: True
auto_save_session_name: auto-save
auto_test: False
cache_keepalive_pings: 0
cache_prompts: True
chat_history_file: /Users/johannes/wo/aider-ce/.aider.chat.history.md
chat_language: None
check_model_accepts_settings: True
check_update: True
code_theme: default
command_prefix: None
commit: False
commit_language: None
commit_prompt: None
completion_menu_bg_color: None
completion_menu_color: None
completion_menu_current_bg_color: None
completion_menu_current_color: None
config: None
context_compaction_max_tokens: 209715
context_compaction_summary_tokens: 4096
copy_paste: False
dark_mode: False
debug: False
deepseek: False
detect_urls: True
dirty_commits: True
disable_playwright: False
dry_run: False
edit_format: agent
editor: None
editor_edit_format: None
editor_model: None
enable_context_compaction: True
encoding: utf-8
env_file: /.aider.env
exit: False
fancy_input: True
file: None
files: []
git: True
git_commit_verify: False
gitignore: True
haiku: False
input_history_file: /Users/johannes/wo/aider-ce/.aider.input.history
install_main_branch: False
just_check_update: False
light_mode: False
line_endings: platform
linear_output: True
lint: False
lint_cmd: []
list_models: None
llm_history_file: None
load: None
map_cache_dir: .
map_max_line_length: 100
map_memory_cache: False
map_multiplier_no_files: 2
map_refresh: files
map_tokens: None
max_chat_history_tokens: None
mcp_servers: ['context7', 'fetch', 'nixos']
mcp_servers_file: None
mcp_transport: stdio
message: None
message_file: None
mini: False
model: openrouter/mistralai/devstral-2512:free
model_metadata_file: .aider.model.metadata.json
model_overrides: None
model_overrides_file: .aider.model.overrides.yml
model_settings_file: .aider.model.settings.yml
multiline: False
notifications: False
notifications_command: None
o1_mini: False
o1_preview: False
openai_api_base: None
openai_api_deployment_id: None
openai_api_type: None
openai_api_version: None
openai_organization_id: None
opus: False
preserve_todo_list: False
pretty: True
read: ['
/.codex/AGENTS.md']
reasoning_effort: None
restore_chat_history: False
set_env: []
shell_completions: None
show_diffs: False
show_model_warnings: True
show_prompts: False
show_release_notes: None
show_repo_map: False
skip_sanity_check_repo: False
sonnet: False
stream: True
subtree_only: False
suggest_shell_commands: True
test: False
test_cmd: []
thinking_tokens: None
timeout: None
tool_error_color: #FF2222
tool_output_color: None
tool_warning_color: #FFA500
tui: None
tui_config: None
tweak_responses: False
upgrade: False
use_enhanced_map: False
user_input_color: #00cc00
verbose: False
verify_ssl: True
vim: False
voice_format: wav
voice_input_device: None
voice_language: en
watch_files: False
weak_model: None
yes_always: None
yes_always_commands: False

An uncaught exception occurred:

Traceback (most recent call last):
  File "cecli", line 10, in <module>
    sys.exit(main())
             ~~~~^^
  File "main.py", line 605, in main
    return asyncio.run(main_async(argv, input, output, force_git_root, return_coder))
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "runners.py", line 195, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "base_events.py", line 725, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "main.py", line 1452, in main_async
    await coder.run()
  File "base_coder.py", line 1236, in run
    return await self._run_linear(with_message, preproc)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "io.py", line 1035, in stop_output_task
    await output_task
RuntimeError: asyncio.run() cannot be called from a running event loop

All exception related tracebacks

/Users/johannes/wo/aider-ce/aider/io.py:1035: RuntimeWarning: coroutine 'Application.run_async' was never awaited
  await output_task
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
ERROR:asyncio:an error occurred during closing of asynchronous generator <async_generator object stdio_client at 0x10e0d38b0>
asyncgen: <async_generator object stdio_client at 0x10e0d38b0>
  + Exception Group Traceback (most recent call last):
  |   File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  |         "unhandled errors in a TaskGroup", self._exceptions
  |     ) from None
  | BaseExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/mcp/client/stdio/__init__.py", line 189, in stdio_client
    |     yield read_stream, write_stream
    | GeneratorExit
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/mcp/client/stdio/__init__.py", line 183, in stdio_client
    anyio.create_task_group() as tg,
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 789, in __aexit__
    if self.cancel_scope.__exit__(type(exc), exc, exc.__traceback__):
       ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 461, in __exit__
    raise RuntimeError(
    ...<2 lines>...
    )
RuntimeError: Attempted to exit cancel scope in a different task than it was entered in
ERROR:asyncio:an error occurred during closing of asynchronous generator <async_generator object stdio_client at 0x10e0d3a00>
asyncgen: <async_generator object stdio_client at 0x10e0d3a00>
  + Exception Group Traceback (most recent call last):
  |   File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  |         "unhandled errors in a TaskGroup", self._exceptions
  |     ) from None
  | BaseExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/mcp/client/stdio/__init__.py", line 189, in stdio_client
    |     yield read_stream, write_stream
    | GeneratorExit
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/mcp/client/stdio/__init__.py", line 183, in stdio_client
    anyio.create_task_group() as tg,
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 789, in __aexit__
    if self.cancel_scope.__exit__(type(exc), exc, exc.__traceback__):
       ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 461, in __exit__
    raise RuntimeError(
    ...<2 lines>...
    )
RuntimeError: Attempted to exit cancel scope in a different task than it was entered in
ERROR:asyncio:an error occurred during closing of asynchronous generator <async_generator object streamablehttp_client at 0x10df1b6e0>
asyncgen: <async_generator object streamablehttp_client at 0x10df1b6e0>
  + Exception Group Traceback (most recent call last):
  |   File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  |         "unhandled errors in a TaskGroup", self._exceptions
  |     ) from None
  | BaseExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/mcp/client/streamable_http.py", line 620, in streamablehttp_client
    |     yield (
    |     ...<3 lines>...
    |     )
    | GeneratorExit
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/mcp/client/streamable_http.py", line 596, in streamablehttp_client
    async with anyio.create_task_group() as tg:
               ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 789, in __aexit__
    if self.cancel_scope.__exit__(type(exc), exc, exc.__traceback__):
       ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/johannes/wo/aider-ce/.venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 461, in __exit__
    raise RuntimeError(
    ...<2 lines>...
    )
RuntimeError: Attempted to exit cancel scope in a different task than it was entered in

# Uncaught RuntimeError in io.py line 1035

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