Thread (80 messages) 80 messages, 5 authors, 2019-06-25
STALE2555d
Revisions (2)
  1. v2 current
  2. v3 [diff vs current]

[PATCH v2 18/20] msvc: do not pretend to support all signals

From: Jeff Hostetler via GitGitGadget <hidden>
Date: 2019-06-19 21:06:19
Subsystem: the rest · Maintainer: Linus Torvalds

From: Jeff Hostetler <redacted>

This special-cases various signals that are not supported on Windows,
such as SIGPIPE. These cause the UCRT to throw asserts (at least in
debug mode).

Signed-off-by: Jeff Hostetler <redacted>
Signed-off-by: Johannes Schindelin <redacted>
---
 compat/mingw.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
diff --git a/compat/mingw.c b/compat/mingw.c
index 667285887a..d01e88c2f8 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -2119,8 +2119,33 @@ int mingw_raise(int sig)
 			sigint_fn(SIGINT);
 		return 0;
 
+#if defined(_MSC_VER)
+	case SIGILL:
+	case SIGFPE:
+	case SIGSEGV:
+	case SIGTERM:
+	case SIGBREAK:
+	case SIGABRT:
+	case SIGABRT_COMPAT:
+		/*
+		 * The <signal.h> header in the MS C Runtime defines 8 signals
+		 * as being supported on the platform. Anything else causes an
+		 * "Invalid signal or error" (which in DEBUG builds causes the
+		 * Abort/Retry/Ignore dialog). We by-pass the CRT for things we
+		 * already know will fail.
+		 */
+		return raise(sig);
+	default:
+		errno = EINVAL;
+		return -1;
+
+#else
+
 	default:
 		return raise(sig);
+
+#endif
+
 	}
 }
 
-- 
gitgitgadget
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help