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.
Summary
On the official Windows release binary,
whisper-cli.exeterminates withSTATUS_STACK_BUFFER_OVERRUN(0xC0000409) instead of printingfailed to open ...,when
-mpoints to a file that does not exist and whose ANSI representation contains abyte >= 0x80. No error message is printed at all.
Reproduction
Japanese Windows 11 (ACP 932), official
b4938whisper-bin-x64.zip:where
あ.bindoes not exist. A single non-ASCII character is enough.Observed:
and the process then exits with 3221226505 (0xC0000409). Nothing further is printed.
Expected — what an ASCII path does (
-m a.bin):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.
b4938nonexistentあ(U+3042)82 a0日本語モデル93 fa 96 7b 8c ea 83 82 83 66 83 8bΩ(U+03A9)83 b6é(U+00E9)e65한글??3f 3f😀(U+1F600)??3f 3fCharacters that the ANSI code page cannot represent are converted to ASCII before
argvis formed, so they never produce a high byte and do not trigger it.Additional observations
97811330) locally with MinGW-w64 GCC 16.2.0 exits 3cleanly in every row above, so I only observe this with the released MSVC build.
-fwith a missing non-ASCII path exits 2 cleanly. Only-mis affected.transcription), so this is specific to the missing-file path.
Environment
Windows 11 Pro 10.0.26200.9168, system ANSI code page 932,
chcp932,official release
b4938(whisper-cli.exereportswhisper.cpp version: 1.9.3).What I did not determine
My data only shows the trigger is a high byte in the ANSI
argv; which charactersproduce one depends on the code page, and I could only test CP932.