You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Voice server segfaults (signal 11) on WSL2 after updating to 1.0.100; /voice stuck on 'Fetching voice models' #5197
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
Update to 1.0.100; the update installs a new voice runtime (libfoundry_local.so, ~85 MB).
Start copilot and run /voice, choose Continue.
Status shows "Fetching voice models" indefinitely.
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.
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).
Root cause: the voice runtime's 1DS telemetry uploader crashes
(CurlHttpOperation -> curl_easy_cleanup -> invalid free). The runtime
skips that upload when it detects a CI environment, so setting a CI marker
variable that the CLI itself doesn't read avoids the crash.
How to apply
Add this to ~/.bashrc (or ~/.zshrc). It sets the variable only for the copilot command, not your whole shell:
Reload your shell: source ~/.bashrc (or open a new terminal).
Exit any running copilot session completely and start it again. The voice
server inherits its environment from the CLI, so a session that's already
running won't pick up the change.
Run /voice as usual.
One-off test without editing your rc file
JENKINS_URL=disabled-1ds copilot
Verify: with the repro from the comment above, the voice server segfaults
without the variable and stays running with it:
Side effects: the only one is that the voice runtime stops uploading its
usage telemetry. Dictation and model downloads still work. Remove the line once
this issue is fixed.
Activity
bhardwaj-nakul commentedon Oct 21, 2026
Same crash on native Linux (not WSL), so it isn't WSL-specific. Backtrace below points at the voice runtime's telemetry uploader.
Environment
foundry-local-sdk1.2.3 (1.0.98, works) → 2.1.0 (1.0.101+, crashes); runtime cache~/.cache/copilot/foundry/7deebcd90bf1HTTP(S)_PROXYset). Unsetting all proxy variables does not change the result.Repro (no client, no audio needed)
It crashes with voice disabled and with no PulseAudio server, so device capture isn't involved.
Backtrace (gdb)
The crash is in the 1DS telemetry HTTP client (
Microsoft::Applications::Events) insidelibfoundry_local.so:curl_easy_cleanupfrees an invalid pointer. Frame #10 resolving tolibonnxruntime-genai.somay 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).nailujx86 commentedon Oct 22, 2026
It crashes with the same backtrace on Fedora 44, this is not limited to WSL.
1bwood1 commentedon Oct 22, 2026
Workaround (confirmed on WSL2, CLI 1.0.101)
Root cause: the voice runtime's 1DS telemetry uploader crashes
(
CurlHttpOperation->curl_easy_cleanup-> invalidfree). The runtimeskips that upload when it detects a CI environment, so setting a CI marker
variable that the CLI itself doesn't read avoids the crash.
How to apply
Add this to
~/.bashrc(or~/.zshrc). It sets the variable only for thecopilotcommand, not your whole shell:Reload your shell:
source ~/.bashrc(or open a new terminal).Exit any running
copilotsession completely and start it again. The voiceserver inherits its environment from the CLI, so a session that's already
running won't pick up the change.
Run
/voiceas usual.One-off test without editing your rc file
Verify: with the repro from the comment above, the voice server segfaults
without the variable and stays running with it:
Side effects: the only one is that the voice runtime stops uploading its
usage telemetry. Dictation and model downloads still work. Remove the line once
this issue is fixed.
alisonsm92 commentedon Oct 22, 2026
Also reproducing on WSL2 (Ubuntu, kernel 6.18.33.2-microsoft-standard-WSL2).
Behavior
/voicefails with[VoiceEngine] start failed: Engine connection closed(ECONNRESET ~1s after connecting to the spawned voice server).dmesgshowscopilot: MainThread: potentially unexpected fatal signal 11on every attempt.boot/readylines, with no error before it dies./voiceworks.Ruled out
nemotron-3.5-asr-streaming-0.6b-generic-cpu:3is downloaded and cached.foundry-local-sdkloads fine and its native libs are present.This looks like a regression between 1.0.98 and 1.0.103 in the voice server's native code path.
Workaround
copilot --prefer-version 1.0.98(this also disables auto-update).