Skip to content

whisper-cli / parakeet-cli: any non-ASCII -m path aborts with 0xC0000409 on MSVC Windows builds #4018

Description

@hiros0921

Summary

On the official Windows release binary, whisper-cli.exe terminates with
STATUS_STACK_BUFFER_OVERRUN (0xC0000409) instead of printing failed to open ...,
when -m points to a file that does not exist and whose ANSI representation contains a
byte >= 0x80. No error message is printed at all.

Reproduction

Japanese Windows 11 (ACP 932), official b4938 whisper-bin-x64.zip:

whisper-cli.exe -m あ.bin -f samples\jfk.wav

where あ.bin does not exist. A single non-ASCII character is enough.

Observed:

load_backend: loaded CPU backend from ...\ggml-cpu-haswell.dll
whisper_init_from_file_with_params_no_state: loading model from '...\??.bin'

and the process then exits with 3221226505 (0xC0000409). Nothing further is printed.

Expected — what an ASCII path does (-m a.bin):

whisper_init_from_file_with_params_no_state: loading model from '...\a.bin'
whisper_init_from_file_with_params_no_state: failed to open '...\a.bin'
error: failed to initialize whisper context

exit code 3.

Reproduced 3/3, both through a normal PowerShell launch and through CreateProcess.

What decides whether it happens

The trigger is whether the path, after conversion to the ANSI code page for argv,
contains a byte >= 0x80 — not whether the character is Japanese.

model path representable in CP932 argv bytes official b4938 own MinGW build
nonexistent yes ASCII exit 3 exit 3
(U+3042) yes 82 a0 0xC0000409 exit 3
日本語モデル yes 93 fa 96 7b 8c ea 83 82 83 66 83 8b 0xC0000409 exit 3
Ω (U+03A9) yes 83 b6 0xC0000409 exit 3
é (U+00E9) no → best-fit e 65 exit 3 exit 3
한글 no → ?? 3f 3f exit 3 exit 3
😀 (U+1F600) no → ?? 3f 3f exit 3 exit 3

Characters that the ANSI code page cannot represent are converted to ASCII before
argv is formed, so they never produce a high byte and do not trigger it.

Additional observations

  • Building the same commit (97811330) locally with MinGW-w64 GCC 16.2.0 exits 3
    cleanly in every row above, so I only observe this with the released MSVC build.
  • -f with a missing non-ASCII path exits 2 cleanly. Only -m is affected.
  • An existing non-ASCII model or audio path works normally (exit 0, correct
    transcription), so this is specific to the missing-file path.

Environment

Windows 11 Pro 10.0.26200.9168, system ANSI code page 932, chcp 932,
official release b4938 (whisper-cli.exe reports whisper.cpp version: 1.9.3).

What I did not determine

  • The cause. I did not attach a debugger or determine which call fails.
  • Whether this reproduces on Windows installations with a different ANSI code page.
    My data only shows the trigger is a high byte in the ANSI argv; which characters
    produce one depends on the code page, and I could only test CP932.
  • Whether earlier releases behave the same way.

Activity

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