Skip to content

Voice server segfaults (signal 11) on WSL2 after updating to 1.0.100; /voice stuck on 'Fetching voice models' #5197

Open

Description

@gbot

Summary

After updating to Copilot CLI 1.0.100 (which also pulled a new voice runtime), voice input no longer works on WSL2. The voice server process segfaults (signal 11) a few seconds after starting, so /voice stays on "Fetching voice models" and no model can be downloaded.

Environment

  • Copilot CLI: 1.0.100 (linux-x64), latest at time of report
  • OS: Ubuntu (glibc 2.39) on WSL2, kernel 6.18.33.2-microsoft-standard-WSL2
  • CPU: x64 with AVX2, 8 cores, 16 GB RAM
  • Audio: WSLg PulseAudio available (/mnt/wslg/PulseServer)
  • Voice worked on earlier versions (e.g. 1.0.98) with the older runtime (Microsoft.AI.Foundry.Local.Core.so, ~645 MB)

Steps to reproduce

  1. Update to 1.0.100; the update installs a new voice runtime (libfoundry_local.so, ~85 MB).
  2. Start copilot and run /voice, choose Continue.
  3. Status shows "Fetching voice models" indefinitely.

Actual behaviour

Process log:

[INFO]  voice server: boot pid=1708 endpoint=/run/user/1000/copilot-voice/<id>.sock
[INFO]  voice server: connected to spawned voice server pid=1708
[WARNING] [VoiceEngine] connection error: read ECONNRESET
[ERROR] [VoiceEngine] fatal: Engine connection closed.
[WARNING] [VoiceEngine] start failed: Engine connection closed.

WSL kernel log (repeated on every attempt, ~6-15s after the voice server starts):

copilot: MainThread: potentially unexpected fatal signal 11.
WSL (CaptureCrash): Capturing crash for pid: 1708, executable: .../@github/copilot-linux-x64/copilot, signal: 11

Already tried

  • Removed stale /run/user/$UID/copilot-voice/* socket/pid files
  • Deleted ~/.cache/copilot/foundry and ~/.github-copilot-cli/cache/models, then re-ran /voice to reinstall the runtime. The crash still occurs with the freshly downloaded runtime.
  • ldd on libfoundry_local.so reports no missing libraries.

Expected behaviour

The voice server stays running, the model list loads, and dictation works.

Possibly related: #4024

Activity

  1. added
    area:input-keyboardKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text input
    and removed on Oct 20, 2026
  2. bhardwaj-nakul commented on Oct 21, 2026

    @bhardwaj-nakul

    Same crash on native Linux (not WSL), so it isn't WSL-specific. Backtrace below points at the voice runtime's telemetry uploader.

    Environment

    • Copilot CLI 1.0.101 and 1.0.102-1 (linux-x64) crash; 1.0.98 works
    • foundry-local-sdk 1.2.3 (1.0.98, works) → 2.1.0 (1.0.101+, crashes); runtime cache ~/.cache/copilot/foundry/7deebcd90bf1
    • Ubuntu 24.04.4 LTS, kernel 7.0.0-38-generic, glibc 2.39
    • Behind an HTTP proxy (HTTP(S)_PROXY set). Unsetting all proxy variables does not change the result.

    Repro (no client, no audio needed)

    COPILOT_VOICE_SERVER_MODE=1 COPILOT_VOICE_SERVER_BOOT='{"voice":{"enabled":false}}' copilot
    # -> Segmentation fault (exit 139) after ~2 s on 1.0.101 / 1.0.102-1
    COPILOT_VOICE_SERVER_MODE=1 COPILOT_VOICE_SERVER_BOOT='{"voice":{"enabled":false}}' copilot --prefer-version 1.0.98
    # -> stays up

    It crashes with voice disabled and with no PulseAudio server, so device capture isn't involved.

    Backtrace (gdb)

    #0  __GI___libc_free (mem=0x100000000000000) at malloc.c:3375
    #1  Curl_freeset ()                                    libfoundry_local.so
    #2  Curl_close ()                                      libfoundry_local.so
    #3  curl_easy_cleanup ()                               libfoundry_local.so
    #4  Microsoft::Applications::Events::CurlHttpOperation::~CurlHttpOperation()   libfoundry_local.so
    #6  std::_Sp_counted_deleter<...CurlHttpOperation*, ...MakeTrackedOperation...>
    #8  Microsoft::Applications::Events::HttpClient_Curl::SendRequestAsync(...)::{lambda}  libfoundry_local.so
    #10 std::_Function_base::~_Function_base()             libonnxruntime-genai.so
    #11 std::thread::_State_impl<...CurlHttpOperation::SendAsync(...)...>
    #14 start_thread
    

    The crash is in the 1DS telemetry HTTP client (Microsoft::Applications::Events) inside libfoundry_local.so: curl_easy_cleanup frees an invalid pointer. Frame #10 resolving to libonnxruntime-genai.so may mean both libraries carry their own copy of the 1DS/curl symbols and they clash (ODR/symbol interposition).

    Workaround: copilot --prefer-version 1.0.98 (the voice server is spawned with the same --prefer-version).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:input-keyboardKeyboard shortcuts, keybindings, copy/paste, clipboard, mouse, and text input

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions