From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/14284 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Markus Wichmann Newsgroups: gmane.linux.lib.musl.general Subject: Conditional signal safety? Date: Sat, 29 Jun 2019 07:54:05 +0200 Message-ID: <20190629055405.GA22788@voyager> Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="183402"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mutt/1.10.1 (2018-07-13) To: musl@lists.openwall.com Original-X-From: musl-return-14300-gllmg-musl=m.gmane.org@lists.openwall.com Sat Jun 29 07:54:21 2019 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.89) (envelope-from ) id 1hh6JZ-000lb8-Hz for gllmg-musl@m.gmane.org; Sat, 29 Jun 2019 07:54:21 +0200 Original-Received: (qmail 11465 invoked by uid 550); 29 Jun 2019 05:54:19 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 11426 invoked from network); 29 Jun 2019 05:54:18 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1561787646; bh=j5FfybmlFHfbWU+Xxm8h0eWU8XNocBx8za4d+K96uyY=; h=X-UI-Sender-Class:Date:From:To:Subject; b=MJQwBYZYP0y9bR9qNqTLG98rUJjyWyzX6eNoJX3PqRv2+0RrAb+zbgLBMPUYGGo9U u9flnHWgW8iSgktk9LYs86XpwenaRonylCrBFw9TW+4hLTEiDFxyJ3qJ7PCYmGyztg Z4ZzXJKK4IPjOQ0o6Jr0aq/jQqGRDjAatdvLBl3s= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Content-Disposition: inline X-Provags-ID: V03:K1:LNU7Zy6TAl5/6d53UrIV+hXJjzUdRfbiDeASArPXGjxz00UiG5E k5H+XvzOCQzmtz/7ZfonLONaP/+X46KMeG3t0AsrZ0+jMc/OGvc2pWUXNtTy0j9GPYAkjF3 IXX1bge93bGhSnv/Pvbqpq5cRYmueeW5fOHdQGl+onxwre62GwfG6WQEaxqvaLL/wmZZWKG vOIAHr+9w6QwxYQPAiW9g== X-UI-Out-Filterresults: notjunk:1;V03:K0:OM2DfHK1Hz8=:1nOJ3zExFLdYzjUUS4H7Yi AvweNn7KUL+gqvJv0363MofF2rH5GXHcEadIdJ04ksDspR4Qz7tCabdjVOgjIRxLZ904+dxSR aHYg3t9eUyyoHXqCUku+zyor94nC/PMfX5O6ZrRUX6sJd3QKXVo1reevvBZztQVIoYacxT0Gx Uhht4onhc809FzlLomCYDoyO1pRDXTLu+X2ARtI2jgSqxtsm+rAdgyI31j9POCaFt5dO18Exs zqXTEpTu8eRoA8sm2IWfGiiS+G1qGcZrAhP4sNFWruv7Ys3YquGisygCRXjJGR/YiAf7ZUrur KumkTNYIZIj4bxGVKpT3fVc59fvwKifQGE4XoY/MpsdCaG44CrzPBOa+V4SJj5KhvcJVS9hqE LupFoV0ZSBk5t3NamZcMg43TqEXTcVk1DNFpYF63p9zYaCDveKynZG6pK13jaYXBldCc3dJzq i7HIxOGFd49Wbbkh00hG0a+8rCEJ4e/ksPU7b0v2N5qi/5JfPWpGVowDBX94o0FOSlM8KXD/B 4IadIhOynLHr3o1tjr1KK4+bE0sFhcrGFiStRBAERtEHLHl2LhPC6Z0TADM3qcuXosjbe35QZ +L7FQ6MYTzcVJh8tHtOR8T06VrzeM5kDL/hS12G7A08t9JO3MtGE9B9HV2MYS3eRz4lAdPwNl 2MFzoywe94L0Z0bZcflowFBdnorwxpKkBHfgiD+JlJg/iL7yCu2PPYe89/DODbpVv/+S7epmk JtKgRH4WFdUg5ztW2SNSkshF7iBT3LrYI/kd9tkiEBpHlvD+TQDivQUUkAtfqB2H+xnQRRoc Xref: news.gmane.org gmane.linux.lib.musl.general:14284 Archived-At: Hi all, at work yesterday I had to build an exception handler (a signal handler for SIGSEGV, SIGBUS, SIGILL, and SIGFPE). For my purposes, it was really convenient to just use dladdr() to find out at least what module and function PC and LR were pointing to when the exception happened, so I used that function. Now, dladdr() is not on the list of signal safe functions, but then, dladdr() is a GNU extension. I wondered if it is signal safe and noticed that at least musl's implementation is, provided that dlopen() was not the function that was pre-empted. That got me thinking: Is there such a thing as "conditional signal safety"? dladdr() takes a rwlock in read mode. At the moment, this means it can only block if the lock is write locked, which only dlopen() will ever do. dladdr() does nothing else that would impede signal safety. But of course, these are implementation details. What is actually defined about the interface? Ciao, Markus