authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-09-18 15:03:45+01:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-09-30 13:44:55+01:00
logdae703d3c028eab3bf98d89d2bca1abc75f864fa
tree4bd94cfc89a12966a4d585f1c2da73ec861c6a8b
parent2ab650b4817cbb22244c17de828e82cbb0ccf15e
signaturelock-open Commit is signed but in an unrecognized format.

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.

1 files changed, 1 insertions(+), 1 deletions(-)

lib/std/posix.zig+1-1
...@@ -689,7 +689,7 @@ pub fn abort() noreturn {...@@ -689,7 +689,7 @@ pub fn abort() noreturn {
689 // even when linking libc on Windows we use our own abort implementation.689 // even when linking libc on Windows we use our own abort implementation.
690 // See https://github.com/ziglang/zig/issues/2071 for more details.690 // See https://github.com/ziglang/zig/issues/2071 for more details.
691 if (native_os == .windows) {691 if (native_os == .windows) {
692 if (builtin.mode == .Debug) {692 if (builtin.mode == .Debug and windows.peb().BeingDebugged != 0) {
693 @breakpoint();693 @breakpoint();
694 }694 }
695 windows.kernel32.ExitProcess(3);695 windows.kernel32.ExitProcess(3);