On Jan 3 08:03, Takashi Yano via Cygwin wrote: > On Mon, 2 Jan 2023 11:32:01 +0900 > Takashi Yano wrote: > > On Thu, 29 Dec 2022 21:59:45 -0700 > > Brian Inglis wrote: > > > I got some hangs (deadlock?) between (parallel?) make jobs, top, procps, > > > and > > > even ls /proc/*/ when trying to cygport all check curl or look at the > > > process > > > statuses when builds hung under Cygwin 3.4.3 and 3.5.0-0.69... > > > [...] > Do we need to guard here as well? > > case __SIGPENDING: > { > unsigned bit; > > *pack.mask = 0; > tl_entry = cygheap->find_tls (pack.sigtls); > while ((q = q->next)) > { > /* Skip thread-specific signals for other threads. */ > if (q->sigtls && pack.sigtls != q->sigtls) > continue; > -------> if (pack.sigtls->sigmask & (bit = SIGTOMASK (q->si.si_signo))) > *pack.mask |= bit; > } > cygheap->unlock_tls (tl_entry); > } > break;
I'm not entirely clear what the right action is in terms of this sigtls problem, but no, we don't need a guard in the __SIGPENDING branch. __SIGPENDING is always called with a valid sigtls member in pack, because __SIGPENDING is only called for a specific thread, either from sigpending(2) or from fhandler_signalfd::poll(), which is called via select(2). Corinna -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple