Skip to content

[Bug]: Desktop speech worker segfaults in ggml while streaming Parakeet #33616

Closed

Description

@AfshinJalili

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/desktop

Steps to reproduce

  1. On Linux desktop, set the local transcription model to handy-computer/parakeet-unified-en-0.6b-gguf (parakeet-unified-en-0.6b-Q8_0.gguf). The file size and SHA-256 match the catalog (731357568 bytes, 4b50b6dd862bf6e346929aaf4f5eaacec003bfa3f56462d6c874b41ef2f38795).
  2. Dictate into the composer long enough for live streaming to produce text.
  3. Keep speaking. In this case the worker died during an otherwise working session, after live text had already been coming through.

This has happened once on this machine. I do not have a shorter deterministic repro.

Expected behavior

The speech worker keeps streaming the transcript. A failure inside transcription stays in that worker and does not kill the desktop backend.

Actual behavior

The speech worker segfaulted during live Parakeet transcription. The desktop backend was then SIGKILL'd and restarted.

This is the only t3code coredump on the machine. Hex, which uses the same Parakeet weights, kept transcribing through the same minute.

Impact

Minor bug or occasional failure

When it hits, the backend process dies and the app restarts. Seen once.

Version or commit

T3 Code desktop 0.1.8 (desktop-last-started-version). Speech native package @transcribe-cpp/linux-x64-cpu-vulkan 0.4.1 (handy-computer/transcribe.cpp).

Environment

Linux 7.2.15-1-omarchy, Hyprland, AMD Ryzen 9 4900HS. Speech acceleration was the default (auto). The crashing library is the CPU Haswell build even though the installed package is linux-x64-cpu-vulkan. Model: Parakeet Unified English 0.6B Q8_0.

Logs or stack traces

TIME: 2026-11-10 03:09:01 +0330
PID: 1928680 (t3code speech worker)
TID: 1968888 (libuv-worker)
Signal: 11 (SEGV) si_code: SI_TKILL

#0  libggml-cpu-haswell.so + 0x98700
    ggml_quantize_mat_t<8, ggml_type 15> (Q8_K)
    vmovups (%rax), %ymm4

Command line is the desktop speech worker (`t3code --input-type=module -e …`),
loading transcribe.cpp and streaming Parakeet. It is not the main UI process.

Backend, same moment:
  pid 1788249 killed by SIGKILL
  desktop.backendInstance: "backend exited unexpectedly; restart scheduled"
  reason: "killed by SIGKILL"
  The backend then came back up.

Workaround

The app restarted on its own. Dictation worked again afterward. No other workaround.

Activity

  1. shivamhwp commented on Nov 10, 2026

    @shivamhwp
    Collaborator

    [gpt-6.1-sol][Codex] on behalf of shivam.

    Handing this over to Julius's fix in #33624. No competing changes or PR from this investigation.

    Independent checks on Linux corex at bbdc7dca320ee4fbc7131498aaffef2fa1eb3d41: all 9 native.test.ts cases and 6 selected SpeechService crash/finalization recovery cases passed. Forcing an isolated worker to SIGSEGV rejected its request with Speech process exited (SIGSEGV).; the parent stayed alive and a fresh worker completed transcription. This supports distinguishing the backend's SIGKILL from the worker's crash.

    One diagnostic detail for any further native investigation: in the npm 0.4.1 Haswell library, 0x98700 is ggml_vec_dot_f32 + 0x40, verified through ggml_get_type_traits_cpu(F32).vec_dot. The Q8_K label is the nearest exported symbol in this stripped binary. Library SHA-256: 5787b42303af149aeb18c05463d214e3a966c7630b5ee46cd1884091f8949394.

    Unverified here: the original spontaneous crash and the fix. The desktop attempt reached setup but was blocked by the locked OS keyring and unavailable background controls; the exact-model download was stopped when Julius's PR appeared.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions