This commit corresponds to https://github.com/msys2/msys2-runtime/pull/180. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
66 lines
2.6 KiB
Diff
66 lines
2.6 KiB
Diff
From 7616b8a2e0ffcf068b47e1a66bbb1dbd7d9b5c50 Mon Sep 17 00:00:00 2001
|
|
From: Johannes Schindelin <johannes.schindelin@gmx.de>
|
|
Date: Wed, 31 Mar 2021 11:38:41 +0200
|
|
Subject: [PATCH 22/N] Do not show Error dialogs by default
|
|
|
|
In https://github.com/msys2/msys2-runtime/pull/18, we discussed a change
|
|
that would allow default Windows error handling of spawned processes to
|
|
kick in (such as registered JIT debuggers). We even agreed that it would
|
|
make sense to hide this functionality behind a flag, `winjitdebug`.
|
|
|
|
However, when this got upstreamed as 21ec498d7f (cygwin: use
|
|
CREATE_DEFAULT_ERROR_MODE in spawn, 2020-12-09), that flag was deemed
|
|
unnecessary.
|
|
|
|
But it would appear that it _is_ necessary: As reported in
|
|
https://github.com/msys2/MSYS2-packages/pull/2414#issuecomment-810841296
|
|
this new behavior is pretty disruptive e.g. in CI scenarios.
|
|
|
|
So let's introduce that `winjitdebug` flag (settable via the environment
|
|
variable `MSYS`) at long last.
|
|
|
|
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
|
|
---
|
|
winsup/cygwin/environ.cc | 1 +
|
|
winsup/cygwin/globals.cc | 1 +
|
|
winsup/cygwin/spawn.cc | 2 +-
|
|
3 files changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc
|
|
index 89e989a..31ada02 100644
|
|
--- a/winsup/cygwin/environ.cc
|
|
+++ b/winsup/cygwin/environ.cc
|
|
@@ -128,6 +128,7 @@ static struct parse_thing
|
|
{"winsymlinks", {func: set_winsymlinks}, isfunc, NULL, {{0}, {0}}},
|
|
{"disable_pcon", {&disable_pcon}, setbool, NULL, {{false}, {true}}},
|
|
{"enable_pcon", {&disable_pcon}, setnegbool, NULL, {{true}, {false}}},
|
|
+ {"winjitdebug", {&winjitdebug}, setbool, NULL, {{false}, {true}}},
|
|
{NULL, {0}, setdword, 0, {{0}, {0}}}
|
|
};
|
|
|
|
diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc
|
|
index 1541fa4..f243aad 100644
|
|
--- a/winsup/cygwin/globals.cc
|
|
+++ b/winsup/cygwin/globals.cc
|
|
@@ -73,6 +73,7 @@ bool reset_com;
|
|
bool wincmdln = true;
|
|
winsym_t allow_winsymlinks = WSYM_deepcopy;
|
|
bool disable_pcon;
|
|
+bool winjitdebug = false;
|
|
|
|
bool NO_COPY in_forkee;
|
|
|
|
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
|
|
index c77970b..383f5e5 100644
|
|
--- a/winsup/cygwin/spawn.cc
|
|
+++ b/winsup/cygwin/spawn.cc
|
|
@@ -429,7 +429,7 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv,
|
|
get the default error mode instead of inheriting the mode Cygwin
|
|
uses. This allows things like Windows Error Reporting/JIT debugging
|
|
to work with processes launched from a Cygwin shell. */
|
|
- if (!real_path.iscygexec ())
|
|
+ if (winjitdebug && !real_path.iscygexec ())
|
|
c_flags |= CREATE_DEFAULT_ERROR_MODE;
|
|
|
|
/* We're adding the CREATE_BREAKAWAY_FROM_JOB flag here to workaround
|