diff options
| author | mlugg <mlugg@mlugg.co.uk> | 2025-09-18 15:03:45 +0100 |
|---|---|---|
| committer | mlugg <mlugg@mlugg.co.uk> | 2025-09-30 13:44:55 +0100 |
| commit | dae703d3c028eab3bf98d89d2bca1abc75f864fa (patch) | |
| tree | 4bd94cfc89a12966a4d585f1c2da73ec861c6a8b | |
| parent | 2ab650b4817cbb22244c17de828e82cbb0ccf15e (diff) | |
| download | zig-dae703d3c028eab3bf98d89d2bca1abc75f864fa.tar.gz zig-dae703d3c028eab3bf98d89d2bca1abc75f864fa.zip | |
std.posix.abort: only trigger breakpoint on Windows if being debugged
Processes should reasonably be able to expect their children to abort
with typical exit codes, rather than a debugger breakpoint signal. This
flag in the PEB is what would be checked by `IsDebuggerPresent` in
kernel32, which is the function you would typically use for this
purpose.
This fixes `test-stack-trace` failures on Windows, as these tests were
expecting exit code 3 to indicate abort.
| -rw-r--r-- | lib/std/posix.zig | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/std/posix.zig b/lib/std/posix.zig index 3b77e58df5..3e4c7f05ed 100644 --- a/lib/std/posix.zig +++ b/lib/std/posix.zig @@ -689,7 +689,7 @@ pub fn abort() noreturn { // even when linking libc on Windows we use our own abort implementation. // See https://github.com/ziglang/zig/issues/2071 for more details. if (native_os == .windows) { - if (builtin.mode == .Debug) { + if (builtin.mode == .Debug and windows.peb().BeingDebugged != 0) { @breakpoint(); } windows.kernel32.ExitProcess(3); |
