From 0d84d52e37923aab3c7f44b20b1490d6c0fbaac5 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 5 Jul 2019 12:53:36 -0400 Subject: [PATCH] std.os.abort no longer calls msvcrt abort() when linking libc closes #2071 --- std/os.zig | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/std/os.zig b/std/os.zig index a4e8ca3ad8..9ca78fa9f3 100644 --- a/std/os.zig +++ b/std/os.zig @@ -138,15 +138,18 @@ fn getRandomBytesDevURandom(buf: []u8) !void { /// it raises SIGABRT followed by SIGKILL and finally lo pub fn abort() noreturn { @setCold(true); - if (builtin.link_libc) { - system.abort(); - } + // MSVCRT abort() sometimes opens a popup window which is undesirable, so + // even when linking libc on Windows we use our own abort implementation. + // See https://github.com/ziglang/zig/issues/2071 for more details. if (windows.is_the_target) { if (builtin.mode == .Debug) { @breakpoint(); } windows.kernel32.ExitProcess(3); } + if (builtin.link_libc) { + system.abort(); + } if (builtin.os == .uefi) { // TODO there must be a better thing to do here than loop forever while (true) {}