fix[notask]: ship Parakeet CPU-only on Android to stop Adreno Vulkan SIGABRT#2525
Open
Zbig9000 wants to merge 2 commits into
Open
fix[notask]: ship Parakeet CPU-only on Android to stop Adreno Vulkan SIGABRT#2525Zbig9000 wants to merge 2 commits into
Zbig9000 wants to merge 2 commits into
Conversation
…SIGABRT
@qvac/transcription-parakeet crashes on Android (SIGABRT on the Bare mqt_v_js
worklet) ~8s into loading the parakeet-tdt-0.6b-v3 model, killing the consumer
and failing the whole Android e2e batch ("All consumers are dead"). Confirmed
on device-farm runs 27282459468 and 27286841825 (Samsung S25 Ultra): the crash
is immediately preceded by `AdrenoVK-0: Application Name: ggml-vulkan` and the
backtrace is entirely inside libqvac__transcription-parakeet.0.7.1.so.
Root cause: ParakeetModel::load already forces useGPU=false on Android
(n_gpu_layers=0) "pending Vulkan/Mali and OpenCL/Adreno driver fixes", but the
addon still ships the libqvac-speech-ggml-{vulkan,opencl}.so backends, and
parakeet-cpp's ggml_backend_load_all_from_path() initialises the Adreno Vulkan
device regardless of n_gpu_layers. After parakeet-cpp 2026-06-04#0 (tetherto#2461) added
robust Adreno-generation detection, that init engages the Adreno Vulkan backend
on the S25 Ultra and aborts in ggml graph compute. The same parakeet@0.7.1
passed on Android on Jun 5 (run 27030121365) with the older parakeet-cpp
2026-05-26#2, which did not detect the Adreno and stayed on CPU.
Fix: drop the vulkan/opencl vcpkg features from the Android parakeet-cpp
dependency so the Android prebuild is CPU-only (no GPU backend .so is shipped ->
nothing initialises the Adreno driver), completing the existing engine-boundary
GPU-disable policy. iOS (Metal) and desktop (Vulkan) builds are unchanged.
Bump 0.7.1 -> 0.7.2.
Same class of Android Adreno-GPU ggml instability as the tts-ggml / Supertonic
issue; re-enable once the upstream parakeet-cpp / ggml Adreno Vulkan/OpenCL path
is fixed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎯 What problem does this PR solve?
parakeet-tdt-wav), killing the consumer and failing the whole batch ("All consumers are dead"). Android-only.SIGABRTon themqt_v_jsworklet ~8 s into loadingparakeet-tdt-0.6b-v3, with the backtrace entirely insidelibqvac__transcription-parakeet.0.7.1.soand the crash immediately preceded byAdrenoVK-0: Application Name: ggml-vulkan.📝 How does it solve it?
Root cause:
ParakeetModel::loadalready forcesuseGPU=falseon Android (n_gpu_layers=0) "pending Vulkan/Mali and OpenCL/Adreno driver fixes" — but the addon still ships thelibqvac-speech-ggml-{vulkan,opencl}.sobackends, andparakeet-cpp'sggml_backend_load_all_from_path()initialises the Adreno Vulkan device regardless ofn_gpu_layers. Onceparakeet-cpp 2026-06-04#0(#2461) added robust Adreno-generation detection, that init engages the Adreno Vulkan backend on the S25 Ultra and aborts inggml.Evidence it's a dependency regression (not the addon code): the same
transcription-parakeet@0.7.1passed Parakeet 4/4 on Android on Jun 5 (run27030121365) — that build used the olderparakeet-cpp 2026-05-26#2, which didn't detect the Adreno and stayed on CPU.Fix: drop the
vulkan/openclvcpkg features from the Androidparakeet-cppdependency, so the Android prebuild is CPU-only — no GPU backend.sois shipped, so nothing initialises the Adreno driver. This completes the existing engine-boundary GPU-disable policy. iOS (Metal) and desktop (Vulkan) are unchanged. Version0.7.1→0.7.2(SDK pins^0.7.1, so it picks this up).This is the same class of Android Adreno-GPU
ggmlinstability as the tts-ggml / Supertonic defect.🧪 How was it tested?
ggml-vulkaninit → SIGABRT signature) + a known-good comparison (Jun 5 green run on old parakeet-cpp = CPU).verifiedlabel to run the prebuild + Device Farm parakeet suite to confirm CPU-only loads cleanly. Thereadelf-style ground truth here is the Device Farm run getting pastparakeet-tdt-wav.💥 Breaking Changes
useGPU=false, so no behavior change for callers). Re-enable once the upstream Adreno Vulkan/OpenCLggmlpath is fixed.➡️ Follow-up
parakeet-cpp/ggmlAdreno Vulkan/OpenCL instability (same root family as the Supertonic-Adreno abort) so GPU can be re-enabled on Android.[notask]as a placeholder).Drafted by a Cursor agent.