From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id 17A663858C78; Tue, 10 Jan 2023 10:48:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 17A663858C78 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1673347727; bh=/CHc/to7thTjkgUZZdzu2YMHzJ9ges1lVizE3mWjNU4=; h=From:To:Subject:Date:From; b=cD2yZt2JmgBD5iUGmcpfA2NoSqZ30PM25ZtodTeqZMCh8Siu1zDSmeChMAVV1OW8J VoOh1ewMBZcxzuy1xPU7M9nwb7N9browZqB823QgULQHg48gbpoVCkNUz/38j6HcgC ceK46caJce8uLNT6CYWbpHSX/nd5plW3QkcahCE4= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: /proc//status: avoid crash computing signal info X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/master X-Git-Oldrev: 1a9f95d8941d58385fb76ec20fac143c035cec85 X-Git-Newrev: 7c14e5a10add3ad3dc53ed6af1ad2044d205e844 Message-Id: <20230110104847.17A663858C78@sourceware.org> Date: Tue, 10 Jan 2023 10:48:47 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D7c14e5a10ad= d3ad3dc53ed6af1ad2044d205e844 commit 7c14e5a10add3ad3dc53ed6af1ad2044d205e844 Author: Corinna Vinschen AuthorDate: Tue Jan 10 11:45:28 2023 +0100 Commit: Corinna Vinschen CommitDate: Tue Jan 10 11:48:02 2023 +0100 Cygwin: /proc//status: avoid crash computing signal info =20 The code computing the mask of pending signals used the per-queued signal TLS pointer without checking it for NULL. Fix this by using the process-wide signal mask in that case. =20 Fixes: 195169186bfd5 ("Cygwin: wait_sig: allow to compute process-wide = mask of pending signals") Signed-off-by: Corinna Vinschen Diff: --- winsup/cygwin/release/3.4.4 | 3 +++ winsup/cygwin/sigproc.cc | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/release/3.4.4 b/winsup/cygwin/release/3.4.4 index a653b08a1a40..35d746ba08fd 100644 --- a/winsup/cygwin/release/3.4.4 +++ b/winsup/cygwin/release/3.4.4 @@ -10,3 +10,6 @@ Bug Fixes =20 - Reinstantiate exporting _alloca. Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252797.html + +- Avoid hangs when reading /proc//status. + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252756.html diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index ce36c8be37fb..86e4e607ab7e 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1375,7 +1375,8 @@ wait_sig (VOID *) *pack.mask =3D 0; while ((q =3D q->next)) { - if (q->sigtls->sigmask & (bit =3D SIGTOMASK (q->si.si_signo))) + _cygtls *sigtls =3D q->sigtls ?: _main_tls; + if (sigtls->sigmask & (bit =3D SIGTOMASK (q->si.si_signo))) { tl_entry =3D cygheap->find_tls (q->si.si_signo, issig_wait); if (tl_entry)