Skip to content

hangs on first startup , TextualInputOutput exception, cecli 0.95.7 #374

@CoolCold

Description

@CoolCold

Issue

waited at least 4 minutes while getting coffee, and it didn't resolve - stuck like

ubuntu@ub24-aiderce:~$ cecli
Starting cecli TUI...

with --debug -v shows:

Traceback (most recent call last):
  File "cecli", line 7, in <module>
    sys.exit(main())
             ^^^^^^
  File "main.py", line 505, in main
    return asyncio.run(main_async(argv, input, output, force_git_root, return_coder))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "runners.py", line 194, 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 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "main.py", line 638, in main_async
    io, output_queue, input_queue = create_tui_io(args, editing_mode)
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "__init__.py", line 30, in create_tui_io
    io = TextualInputOutput(
         ^^^^^^^^^^^^^^^^^^^
  File "io.py", line 26, in __init__
    super().__init__(**kwargs)
  File "io.py", line 399, in __init__
    self.tool_warning(
  File "io.py", line 1419, in tool_warning
    self._tool_message(message, strip, self.tool_warning_color)
  File "io.py", line 1371, in _tool_message
    self.stream_print(message, style=style)
  File "io.py", line 120, in stream_print
    self.output_queue.put(
    ^^^^^^^^^^^^^^^^^
AttributeError: 'TextualInputOutput' object has no attribute 'output_queue'

version:

ubuntu@ub24-aiderce:~$ cecli --version
cecli 0.95.7

installed for testing as:

  • pipx
ubuntu@ub24-aiderce:~$ pipx install cecli-dev
  installed package cecli-dev 0.95.7, installed using Python 3.12.3
  These apps are now globally available
    - aider-ce
    - ce.cli
    - cecli
  • UV:
aidertest@ub24-aiderce:~$ uv tool install --native-tls --python python3.12 cecli-dev
ubuntu@ub24-aiderce:~$ cecli
Starting cecli TUI...
^C^CTraceback (most recent call last):
  File "/home/ubuntu/.local/bin/cecli", line 7, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/ubuntu/.local/share/pipx/venvs/cecli-dev/lib/python3.12/site-packages/cecli/main.py", line 505, in main
    return asyncio.run(main_async(argv, input, output, force_git_root, return_coder))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete
    self.run_forever()
  File "/usr/lib/python3.12/asyncio/base_events.py", line 641, in run_forever
    self._run_once()
  File "/usr/lib/python3.12/asyncio/base_events.py", line 1987, in _run_once
    handle._run()
  File "/usr/lib/python3.12/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/home/ubuntu/.local/share/pipx/venvs/cecli-dev/lib/python3.12/site-packages/cecli/main.py", line 768, in main_async
    selected_model_name = await select_default_model(args, io)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ubuntu/.local/share/pipx/venvs/cecli-dev/lib/python3.12/site-packages/cecli/onboarding.py", line 115, in select_default_model
    await io.offer_url(urls.models_and_keys, "Open documentation URL for more info?")
  File "/home/ubuntu/.local/share/pipx/venvs/cecli-dev/lib/python3.12/site-packages/cecli/io.py", line 1136, in offer_url
    if await self.confirm_ask(
       ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ubuntu/.local/share/pipx/venvs/cecli-dev/lib/python3.12/site-packages/cecli/tui/io.py", line 514, in confirm_ask
    result = self.input_queue.get(timeout=0.1)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/queue.py", line 180, in get
    self.not_empty.wait(remaining)
  File "/usr/lib/python3.12/threading.py", line 359, in wait
    gotit = waiter.acquire(True, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 157, in _on_sigint
    raise KeyboardInterrupt()
KeyboardInterrupt

my blind guess for now - it tries to connect somewhere:

[pid  1348] futex(0x3c8b8760, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=1506140, tv_nsec=661257388}, FUTEX_BITSET_MATCH_ANY) = -1 ETIMEDOUT (Connection timed out)
[pid  1348] epoll_wait(3, [], 1, 100)   = 0
[pid  1348] epoll_wait(3, [], 1, 0)     = 0
[pid  1348] futex(0x3c8b8760, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=1506140, tv_nsec=865715549}, FUTEX_BITSET_MATCH_ANY) = -1 ETIMEDOUT (Connection timed out)
[pid  1348] epoll_wait(3, [], 1, 100)   = 0
[pid  1348] epoll_wait(3, [], 1, 0)     = 0
[pid  1348] futex(0x3c8b8760, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=1506141, tv_nsec=70168885}, FUTEX_BITSET_MATCH_ANY) = -1 ETIMEDOUT (Connection timed out)
[pid  1348] epoll_wait(3, [], 1, 100)   = 0
[pid  1348] epoll_wait(3, [], 1, 0)     = 0

Version and model info

cecli 0.95.7

no model, no anything, fresh 1st start in almost empty homedir

mitigation

seems like it just cannot handle empty configs (though, I'm not sure why object/attributes missing from the traceback anyway), if you run it like cecli --no-check-update --api-key openrouter=sk-or-v1-5xxxxxxxxx - then it starts

more info

seems to be trying to connect to github for unknown reason

21:37:51.733286 IP 127.0.0.1.38350 > 127.0.0.53.53: 16625+ [1au] A? raw.githubusercontent.com. (54)
21:37:51.733324 IP 127.0.0.1.38350 > 127.0.0.53.53: 54012+ [1au] AAAA? raw.githubusercontent.com. (54)

and

[pid  1505] connect(3, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("185.199.109.133")}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("185.199.110.133")}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("185.199.111.133")}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("185.199.108.133")}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_INET6, sin6_port=htons(443), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "2606:50c0:8001::154", &sin6_addr), sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)
[pid  1505] connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_INET6, sin6_port=htons(443), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "2606:50c0:8002::154", &sin6_addr), sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)
[pid  1505] connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_INET6, sin6_port=htons(443), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "2606:50c0:8003::154", &sin6_addr), sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)
[pid  1505] connect(3, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
[pid  1505] connect(3, {sa_family=AF_INET6, sin6_port=htons(443), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "2606:50c0:8000::154", &sin6_addr), sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)
[pid  1505] connect(3, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("185.199.109.133")}, 16) = -1 EINPROGRESS (Operation now in progress)

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