https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=8201c57dd1f741b94dd0b2e2478384cffb468424
commit 8201c57dd1f741b94dd0b2e2478384cffb468424 Author: Takashi Yano <takashi.y...@nifty.ne.jp> Date: Wed May 28 15:31:23 2025 +0900 Cygwin: signal: Revert _cygtls::inside_kernel() change This patch partially reverts the commit b7097ab39ed0 because it seems to cause issues when longjmp is used within a signal handler. The problem that the commit addressed no longer occurs even if this change is reverted. Fixes: b7097ab39ed0 ("Cygwin: signal: Revive toggling incyg flag in call_signal_handler()") Reviewed-by: Corinna Vinschen <cori...@vinschen.de> Signed-off-by: Takashi Yano <takashi.y...@nifty.ne.jp> (cherry picked from commit 9c3e1e9ea9d2d930fef1ae6a62e61b101c1e047c) Diff: --- winsup/cygwin/exceptions.cc | 6 +++--- winsup/cygwin/local_includes/cygtls.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 804adc92b..bcc7fe6f8 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -932,7 +932,7 @@ _cygtls::interrupt_now (CONTEXT *cx, siginfo_t& si, void *handler, /* Delay the interrupt if we are 1) somehow inside the DLL 2) in a Windows DLL. */ - if (incyg || inside_kernel (cx, true)) + if (incyg || inside_kernel (cx)) interrupted = false; else { @@ -1797,7 +1797,7 @@ _cygtls::call_signal_handler () int this_errno = saved_errno; reset_signal_arrived (); - incyg = false; + incyg = 0; current_sig = 0; /* Flag that we can accept another signal */ /* We have to fetch the original return address from the signal stack @@ -1910,7 +1910,7 @@ _cygtls::call_signal_handler () } unlock (); - incyg = true; + incyg = 1; set_signal_mask (_my_tls.sigmask, (this_sa_flags & SA_SIGINFO) ? context1.uc_sigmask : this_oldmask); diff --git a/winsup/cygwin/local_includes/cygtls.h b/winsup/cygwin/local_includes/cygtls.h index 1b3bf65f1..615361d3f 100644 --- a/winsup/cygwin/local_includes/cygtls.h +++ b/winsup/cygwin/local_includes/cygtls.h @@ -198,7 +198,7 @@ public: /* Do NOT remove this public: line, it's a marker for gentls_offsets. */ class san *andreas; waitq wq; volatile int current_sig; - unsigned incyg; + volatile unsigned incyg; volatile unsigned stacklock; __tlsstack_t *stackptr; __tlsstack_t stack[TLS_STACK_SIZE];