From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 3362 invoked from network); 30 Jun 2020 14:59:13 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 30 Jun 2020 14:59:13 -0000 Received: (qmail 28328 invoked by uid 550); 30 Jun 2020 14:59:06 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 28307 invoked from network); 30 Jun 2020 14:59:05 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1593529134; bh=ce8hO6dSwick9b8JT8NqKeX/4FQqUb2eVCQFp0R6jUY=; h=X-UI-Sender-Class:Date:From:To:Subject:References:In-Reply-To; b=eXMSkKoufe+MJ2czKZCj32LcnRJZffPrIu2L8YZJA5iNNpjLl6bCzJOquC6O4wCY2 QURmjupM5XdF4TIfMKaTOhJb8V9j2LYH9DN0RBtT5mJiyRcQ1lY2ZOAjvItN2FU//z 2QJJZfAd44cASQZWqP6QX+uCt7upfrn/tPDiVP00= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Date: Tue, 30 Jun 2020 16:58:51 +0200 From: Markus Wichmann To: musl@lists.openwall.com Message-ID: <20200630145851.GD13001@voyager> References: <0217b8838100175725993b0ed0114ee7@thelig.ht> <20200630044323.GD6430@brightrain.aerifal.cx> <20200630092644.GE6430@brightrain.aerifal.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200630092644.GE6430@brightrain.aerifal.cx> User-Agent: Mutt/1.9.4 (2018-02-28) X-Provags-ID: V03:K1:tIzqz66PaevF/Xh4RVd0JMdwpi6ygR5KifUn/ZGgW5FpgCtRg/i /X3HIs9NR20vq4Ick9wgtr2YBgq21Qh6zsytwHcmTRDRRl9+kr1LpgPtBHth8f+c6GwIZE3 7icfOMOjUlqDdxly2AdX4RKMWAlUtqb32t2LIUOba49685I4GaAKUZS9w0f5SRxa2LOVTGb 4b/QpMK5yd9sX5Pu98a1A== X-UI-Out-Filterresults: notjunk:1;V03:K0:PzSPlh05SmU=:vQ85sjOggu/dsq+aZKmmiN +4Q+r9W2goB9iDj0W+tE2OQifC4F3hvZiluxtPESR6EuBjRrjma6NnvCk1VpFQpYdxYxyZL/r Qh2LhNPPQqQ16tn9zBetNJjt/fqiLjub5kTgEG9AEODFmpYvfhTsJ8nextLjR6cHtvImBIRvO 2pVnoSGXmY+HrhIqJBAGMivrBODrULXty5+2/wZJMxoWS6VUO8ryYgOYMpp02IKUZo7HkJhp6 xb2m4K364L1dVTurFNWEGUCbpSwwL5KuWlCztbBXYzH3eCq94Dia1kYucrF1JwhPgn9H4GhDo JtCRhe/lhZ2GOqcH/quKXDwWcxvkCqs4K1p/0czpdCUa9eMhLWqySb0vSYdQ0wIO3m/A7O3zJ /Oz+gclnA9F3X8k9kgT7lo7XJdj+5VHIHUYM2dZOdVyU02RLwRIEdDcO3mqQKcmGBIHZ8nk+L cogEO8U5gYjNMIzDcYmMPUrUbxRBHoc4qTatpwXYuRey14BmbbHdyS96nBSByf8u+oJmIDQsj zb0gFlMFUNlmaaUYXtm/7RBAKKCjKhQw8PO4z4o3E5qk9PGTs1q6g1TbU/GB/bTRILZql4aSQ r8IO/600kSdchj/807tA48mjlpZdUbxrkMz2xdJnh8pu30PKsKt4lQHqK6dN5+w2t57cb/eJJ Rds60J2eelyVaOXZF+jr0O8eop+TTl4o2s2g0xkqxIheuOpGQrZ11afEAXPVPvD2JF9eBn57R hHLK+HTai7rdJfSLKao6PYZs7TRv4gF0eqcc0rc20gUHHzY8V2M1vyTE8KyRMjql4L03oIlIA egwLWEGwv45NvrL66G/dR5s21EnO0/qMIO3SA5i1mVhF95lou1ECp8Aeq+XjqP+QjUEjSrMIJ sCsvbfXsuTqB+pmR6SNzNnL0w1wBg5nKKyywp4bDCbAlZ5jcCi3eDl9H+4YIARMmmU2COkzVu Zy2QrBm2OWkFmILeCHGLH/13Aql+TkCfLkUihTg16jVLfKN98TaymtU/sKwXR060hY/rM97/H I2fsWdNeo+Q5t10bg9E0Ehvzmz7YjcJITw9cO6qYaXhD9m96Poq/hHSIiSkKjpkRMYGrUk0YM iKnpeqQ2K0Jd+VtdnpEXjUE2SUdpPDvNly9/i+xZdPX08RIprVqcWlYam5p2guG5AOquaLe2d 9deFXA6lSILzt8JItWrxikDDh2AXyhN3+kZxl+/cX6OF4IVxkVDKUuHsxEFY+pFKGE7xRmb6C jHZFscewNYtQMVIri Content-Transfer-Encoding: quoted-printable Subject: Re: [musl] Potential deadlock in pthread_kill() On Tue, Jun 30, 2020 at 05:26:46AM -0400, Rich Felker wrote: > On Mon, Jun 29, 2020 at 11:19:39PM -0700, Hydro Flask wrote: > > > > Just to be clear, this doesn't only occur when calling > > pthread_kill() and using pthread_self() as the target, it can be any > > target thread, as long as it's the same target thread is used in the > > signal handler and in the synchronous context. > > How so? If the target is different, the rest of the pthread_kill, > including the unlock, will proceed concurrently with the signal > handler. However you may be able to construct mutual-signaling > deadlock cases. > Thread A calls pthread_kill(thread_c, ...). Thread B calls (concurrently) pthread_kill(thread_a, ...). Thread B's signal arrives while thread A holds the killlock. Signal handler calls pthread_kill(thread_c, ...). No mutual signalling. Doesn't even need thread B to be calling pthread_kill, could be an external signal that just happens to arrive at that time and is taken by thread A by (bad) luck. Ciao, Markus