newlib-cygwin/winsup/cygwin
Takashi Yano 9ae51bcc51 Cygwin: signal: Fix another deadlock between main and sig thread
In _cygtls::handle_SIGCONT(), the sig thread waits for the main thread
to process the signal without unlocking the TLS area. This causes a
deadlock if the main thread tries to acquire a lock for the TLS area
in the meantime. With this patch, unlock the TLS before calling yield()
in handle_SIGCONT().

Addresses: https://cygwin.com/pipermail/cygwin/2024-November/256744.html
Fixes: 26158dc3e9c2("* exceptions.cc (sigpacket::process): Lock _cygtls area of thread before accessing it.")
Reported-by: Christian Franke <Christian.Franke@t-online.de>
Reviewed-by: Corinna Vinschen <corinna@vinschen.de>
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
2024-11-28 20:25:27 +09:00
..
DevDocs Cygwin: testsuite: Add x86_64 code to "dynamically load cygwin" test 2022-08-29 17:53:48 +01:00
fhandler Cygwin: console Add comment for the recent change 2024-11-11 21:45:03 +09:00
include Cygwin: Change pthread_sigqueue() to accept thread id 2024-11-12 13:05:07 +01:00
lib Cygwin: drop __stdcall usage 2022-08-04 20:54:09 +02:00
libc Cygwin: strptime: fix am/pm handling 2024-02-21 19:54:20 +01:00
linux-locale-helpers Cygwin: replace all `fgrep' with `grep -F' 2024-01-18 10:53:25 +01:00
local_includes Cygwin: signal: Fix another deadlock between main and sig thread 2024-11-28 20:25:27 +09:00
math Cygwin: fix return value of ilogbl(NaN) 2023-04-18 13:43:06 +02:00
mm Cygwin: cygheap: compute bucket instead of looping over it 2024-03-01 22:35:22 +01:00
regex Cygwin: regex: fix faulty check for valid range expression 2023-03-20 12:58:03 +01:00
release Cygwin: sched_setscheduler: allow changes of the priority 2024-11-27 18:06:56 +01:00
scripts Cygwin: cygtls: rename sig to current_sig 2024-11-23 12:23:15 +01:00
sec Cygwin: (mostly) drop NT4 and Samba < 3.0 support 2024-03-20 12:31:50 +01:00
tzcode Cygwin: move EXPORT_ALIAS expressions to end of source 2024-03-07 21:50:07 +01:00
x86_64 Cygwin: x86_64: import swab.S from NetBSD 2022-12-20 10:19:23 +01:00
Makefile.am Add libaio to SUBLIBS built for Cygwin 2024-11-19 17:02:13 +01:00
advapi32.cc Cygwin: drop all usages of WINAPI 2022-08-04 22:13:59 +02:00
aio.cc Cygwin: fix build failure due to redefinition of __restrict in sys/cdefs.h 2023-08-07 16:04:32 +02:00
assert.cc
autoload.cc Cygwin: mixer: Fix volume control for no WAVECAPS_LRVOLUME device 2024-06-01 15:23:37 +09:00
automode.c
binmode.c
clock.cc Cygwin: drop wincap::has_precise_system_time 2022-12-04 14:01:41 +01:00
config.h.in
create_posix_thread.cc Cygwin: add memory_layout.h 2022-10-28 16:26:53 +02:00
crt0.c Cygwin: drop 32 bit considerations in crt0 code 2022-05-16 18:17:06 +02:00
ctype.cc Cygwin: fully support KOI8-T codeset 2023-02-25 16:12:51 +01:00
cxx.cc
cygthread.cc cygthread: suspend thread before terminating. 2024-11-20 11:16:24 +01:00
cygtls.cc Cygwin: cygtls: rename sig to current_sig 2024-11-23 12:23:15 +01:00
cygwait.cc Cygwin: cygtls: rename sig to current_sig 2024-11-23 12:23:15 +01:00
cygwin.din Cygwin: timespec_get: implement C11 function 2024-02-16 20:44:31 +01:00
cygwin.ldif
cygwin.sc.in Cygwin: drop objcopy .gnu_debuglink juggle 2022-10-28 16:26:53 +02:00
cygxdr.cc
dcrt0.cc Cygwin: globify: read full 32 bit character 2024-04-09 22:30:03 +02:00
debug.cc Cygwin: debugging: convert muto to SRWLOCK 2022-08-22 14:38:49 +02:00
devices.cc Cygwin: console: Fix race issue on allocating console simultaneously. 2024-07-09 00:01:22 +09:00
devices.in Cygwin: console: Fix race issue on allocating console simultaneously. 2024-07-09 00:01:22 +09:00
dir.cc Cygwin: opendir(3): move ENOTDIR check into main function 2024-03-20 12:34:51 +01:00
dlfcn.cc Cygwin: remove miscellaneous 32-bit code 2022-05-29 17:54:32 -04:00
dll_init.cc Cygwin: redefine how to recognize forkee state 2024-01-29 13:33:05 +01:00
dtable.cc Cygwin: pipe: Switch pipe mode to blocking mode by default 2024-11-01 04:50:45 +09:00
environ.cc Cygwin: reorder list of CYGWIN env var options alphabetically again 2024-02-03 19:54:50 +01:00
errno.cc Cygwin: set ENOSHARE and ECASECLASH _sys_errlist[] entries to empty 2024-02-28 09:59:07 +01:00
exceptions.cc Cygwin: signal: Fix another deadlock between main and sig thread 2024-11-28 20:25:27 +09:00
exec.cc Cygwin: move EXPORT_ALIAS expressions to end of source 2024-03-07 21:50:07 +01:00
external.cc Cygwin: CW_CMDLINE_ALLOC: fix a pontentially undefined return value 2024-02-01 13:34:52 +01:00
fcntl.cc Cygwin: simplify some function names 2022-05-29 17:45:52 -04:00
fenv.c
flock.cc Cygwin: flock: Fix overlap handling in lf_setlock() and lf_clearlock() 2024-11-20 21:19:15 +09:00
fork.cc Cygwin: redefine how to recognize forkee state 2024-01-29 13:33:05 +01:00
forkable.cc Cygwin: unlink_nt: declare in winsup.h 2023-09-08 22:34:52 +02:00
gcrt0.c Revert "sys/types.h: Don't include sys/_stdint.h" 2022-05-04 15:08:44 +02:00
glob.cc Revert "Cygwin: glob: perform ignore_case_with_glob on input" 2024-03-18 11:10:13 +01:00
glob_pattern_p.cc
globals.cc Cygwin: Do not show Error dialogs by default 2024-02-03 19:54:50 +01:00
gmon.c
grp.cc Cygwin: getgrent: don't skip SAM-only builtin-accounts 2024-03-11 12:46:50 +01:00
hookapi.cc Cygwin: Fix previous attempt to drop i386 targets from hookapi 2022-07-28 16:38:01 +02:00
init.cc Cygwin: drop all usages of WINAPI 2022-08-04 22:13:59 +02:00
ioctl.cc
ipc.cc Cygwin: simplify some function names 2022-05-29 17:45:52 -04:00
kernel32.cc Cygwin: cygwin_GetCommandLineW/A: don't rely on __argv[0] content 2024-01-31 20:11:58 +01:00
ldap.cc Cygwin: drop all usages of WINAPI 2022-08-04 22:13:59 +02:00
libstdcxx_wrapper.cc Cygwin: remove miscellaneous 32-bit code 2022-05-29 17:54:32 -04:00
loadavg.cc
lsearch.cc
mcount.c
miscfuncs.cc Cygwin: setpriority, sched_setparam: fail if Windows sets a lower priority 2024-11-27 16:38:39 +01:00
mktemp.cc Cygwin: simplify some function names 2022-05-29 17:45:52 -04:00
mount.cc Cygwin: check remote drives for being SSDs as well 2024-01-08 11:45:13 +01:00
msg.cc
net.cc Cygwin: Fix warnings about narrowing conversions of socket ioctls 2024-08-13 19:35:49 +01:00
netdb.cc
nfs.cc
nlsfuncs.cc Cygwin: Avoid use-after-free warnings in __set_lc_time_from_win() etc. 2024-08-13 19:44:00 +01:00
ntea.cc Cygwin: use new XATTR_{NAME,SIZE}_MAX instead of MAX_EA_{NAME,VALUE}_LEN 2023-06-16 21:44:41 +02:00
passwd.cc Cygwin: getgrent/getpwent: avoid local enumeration on DCs 2024-02-20 23:55:51 +01:00
path.cc Cygwin: FILE_OPEN_NO_RECALL is incompatible with FILE_DIRECTORY_FILE 2024-04-04 18:21:13 +02:00
pinfo.cc Cygwin: revert use of CancelSyncronousIo on wait_thread. 2024-11-25 12:22:51 +01:00
poll.cc Cygwin: poll: Fix a bug on inquiring same fd with different events. 2022-06-27 10:54:24 +09:00
posix_ipc.cc Cygwin: move POSIX semaphore API functions to posix_ipc.cc 2022-08-10 18:11:57 +02:00
posix_timer.cc Cygwin: timer_delete: Fix return value 2024-10-23 13:25:09 +02:00
profil.c Cygwin: drop all usages of WINAPI 2022-08-04 22:13:59 +02:00
pseudo-reloc.cc Cygwin: drop macro and code for CYGWIN_VERSION_USE_PSEUDO_RELOC_IN_DLL 2022-08-03 16:01:29 +02:00
quotactl.cc
random.cc Cygwin: move EXPORT_ALIAS expressions to end of source 2024-03-07 21:50:07 +01:00
registry.cc
resource.cc Cygwin: fix a few comments mentioning Windows 7 or 8 2022-12-04 14:01:41 +01:00
scandir.cc
sched.cc Cygwin: sched_setscheduler: allow changes of the priority 2024-11-27 18:06:56 +01:00
select.cc Cygwin: pipe: Switch pipe mode to blocking mode by default 2024-11-01 04:50:45 +09:00
sem.cc
setlsapwd.cc
shm.cc Cygwin: shm: Convert muto into SRWLOCK and avoid overlocking 2022-08-22 14:28:11 +02:00
signal.cc Cygwin: cygtls: rename sig to current_sig 2024-11-23 12:23:15 +01:00
sigproc.cc Cygwin: signal: Drop unnecessary queue flush 2024-11-28 20:21:51 +09:00
smallprint.cc Cygwin: smallprint.cc: Drop HEAP_ZERO_MEMORY 2022-08-22 17:58:53 +02:00
spawn.cc Cygwin: pipe: Switch pipe mode to blocking mode by default 2024-11-01 04:50:45 +09:00
strace.cc Cygwin: globals: make __progname an alias of program_invocation_short_name 2024-01-31 20:11:58 +01:00
strfuncs.cc Cygwin: cXXrtomb, mbrtcXX: use function-specific internal state 2023-08-15 22:34:29 +02:00
strsep.cc
strsig.cc Cygwin: signals: drop accidental spaces from real-time signal names 2023-03-15 21:44:52 +01:00
sync.cc
syscalls.cc Cygwin: setpriority, sched_setparam: fail if Windows sets a lower priority 2024-11-27 16:38:39 +01:00
sysconf.cc Cygwin: execve: drop argument size limit 2023-08-29 14:17:04 +02:00
syslog.cc
termios.cc Cygwin: drop macro and code for CYGWIN_VERSION_DLL_IS_OLD_TERMIOS 2022-08-03 15:35:29 +02:00
textmode.c
textreadmode.c
thread.cc Cygwin: Change pthread_sigqueue() to accept thread id 2024-11-12 13:05:07 +01:00
timerfd.cc Cygwin: drop all usages of WINAPI 2022-08-04 22:13:59 +02:00
times.cc Cygwin: move EXPORT_ALIAS expressions to end of source 2024-03-07 21:50:07 +01:00
tls_pbuf.cc Cygwin: tls_pathbuf: Use Windows heap 2022-08-23 12:09:44 +02:00
tty.cc Cygwin: accommodate gcc -Og option 2024-02-14 14:00:34 +01:00
uinfo.cc Cygwin: (mostly) drop NT4 and Samba < 3.0 support 2024-03-20 12:31:50 +01:00
uname.cc Cygwin: uname: fix building in non-git source dir 2022-12-07 22:22:38 +01:00
wait.cc
wincap.cc wincap.cc: set wincap member has_user_shstk true for 2004+ 2023-06-20 10:06:56 +02:00
window.cc Cygwin: drop all usages of WINAPI 2022-08-04 22:13:59 +02:00
winf.cc
winver.rc