From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 111448 invoked by alias); 20 Oct 2017 17:48:38 -0000 Mailing-List: contact libc-help-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: libc-help-owner@sourceware.org Received: (qmail 111348 invoked by uid 89); 20 Oct 2017 17:48:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=HX-ClientProxiedBy:sk:DB6PR07, complications X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Received: from mail-db5eur01on0088.outbound.protection.outlook.com (HELO EUR01-DB5-obe.outbound.protection.outlook.com) (104.47.2.88) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 20 Oct 2017 17:48:15 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Szabolcs.Nagy@arm.com; Received: from [10.2.206.69] (217.140.96.140) by HE1PR0802MB2489.eurprd08.prod.outlook.com (2603:10a6:3:d8::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Fri, 20 Oct 2017 17:48:10 +0000 Message-ID: <59EA36D8.3030803@arm.com> Date: Fri, 20 Oct 2017 17:48:00 -0000 From: Szabolcs Nagy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: Carlos O'Donell , Yubin Ruan CC: nd@arm.com, libc-help@sourceware.org Subject: Re: determine whether code is running in a signal handler context References: <59E9D0C2.4090900@arm.com> <59E9DE7F.6010909@arm.com> <36695ee6-cfb3-3363-5827-94d52ca48e24@redhat.com> In-Reply-To: <36695ee6-cfb3-3363-5827-94d52ca48e24@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: DB6PR07CA0160.eurprd07.prod.outlook.com (2603:10a6:6:43::14) To HE1PR0802MB2489.eurprd08.prod.outlook.com (2603:10a6:3:d8::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6c3a3d5a-bf12-4f94-af90-08d517e2bb1d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603199);SRVR:HE1PR0802MB2489; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2489;3:u93wv1F2EBUpG+bWxGUZi5pA9cE99enf4KOB/KhzyfewF5YtqF5+07GdfV2ZzJL3b8KIwUV3otgGCZQFDwm/ReLMonE/svZ4M9EhY1E/kpdNnu+/4e03pgTDayTanAqdZ7g+AElamtiCYaoZfhqLXb/CQrnHSNoySmgRB0Ss3FRHv5AwEkUkFUOxG1Dksu8gyB5jBsRQnSvOu0EWGoADedo1jAoNp0Z1zmkKWuyqzqz+QPViJnlHmMGs4xUQG2w9;25:PegIBOL72r4abDUkQRWd2e5/SBIcmhIoZjla58viQxlOLbks/HbcrNr3hg/7fhXqpANT8o6zHevrNchcM/Q2pacE5q51LNCnKdkI0d3hZKBjHbT/JjX9CRVNvtcjE5jksRRx6F0BRFdHB1Nkpud1KI9WsPYuXUAzaTB13e5rXhkW7idzHIwETcxtjchz5DTfKrifa/FmGpZo351B83sIX1JsbGqO7rLCxNpzsdThamQdo/gr5xYSCw8ew4SkucPl0SPzyrPfgj0uKrka+6PJCxd5d1tWY34g/lGAupd8KT4ywbFK00PJAoaB5Tq0JuFyLkdnlI6chWVasaclXCH9wA==;31:nshgM/kHuHU4JMvcYSVXieNG/7VnU0QW7fSsxU3LC1pnKRIUz9sqbjuWX9mnyDq/Z76ONuvvr4iESBzV6ZBMZCms3o9NIDJTse4yvytIi1FHjae4/cqkvhlydQ/0ROd8jUmAuJRHFHgX3IHfZj6kwdV08ygiwtSaiZ0V5eurRNe/S0bLpV2rdm+PZhPayDFMUXPtYE5ViXUztLIAjcynVsk2xI9HjtjPvPfu0dGjwzE= X-MS-TrafficTypeDiagnostic: HE1PR0802MB2489: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2489;20:WpkO5zCFHXPiY9wWlM1p7hmlsChwxlJfU1hSg7u8JFdRO+43BiCU6E7mGUOf7/3Z/U7Mwdmc3syTTEYkgKKoxh2d11D8u1Q4TrcPioCMj7bx5JfqLJLrUMdlCfKfDJjdxZPyzPnI6FFhbKCtkpPp4tUzwk2fq8QelsxFzd6Px9Y=;4:RzY995XNVdoD0XrlDJkFf6/whp4xgxKN0O0GMFTiorcjXKpFU0XeDJ3Lx6wUHYBFg05krguPlCM+NqsCuc3B1rptxPmV2m6qOsbkSSRXQtDxI9T68IIjq4RsjBubaPBotlLZRS5rra96ZSOSi5sgWk1jNJwyS5tXluXQrdg10+wWejotCSTKf6Q7WgE89oBI8mWZ3vKiDdBoyOXyD9ySD2+g7gxvcI1l2SVF7qdT9/BT8PioYXmTIU/rSoQFLtim X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231020)(100000703101)(100105400095)(6055026)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:HE1PR0802MB2489;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:HE1PR0802MB2489; X-Forefront-PRVS: 0466CA5A45 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(346002)(39860400002)(376002)(199003)(189002)(24454002)(66066001)(76176999)(54356999)(230700001)(86362001)(110136005)(3846002)(59896002)(64126003)(316002)(39060400002)(36756003)(5660300001)(8676002)(7736002)(83506002)(8936002)(72206003)(6116002)(80316001)(65806001)(81166006)(68736007)(25786009)(101416001)(81156014)(97736004)(2950100002)(77096006)(53546010)(4326008)(16526018)(93886005)(6486002)(50466002)(478600001)(106356001)(305945005)(105586002)(58126008)(65956001)(65816999)(23676002)(50986999)(561944003)(87266999)(229853002)(16576012)(6246003)(47776003)(2906002)(53936002)(33656002)(189998001);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0802MB2489;H:[10.2.206.69];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4MDJNQjI0ODk7MjM6NUx3cnN4bVlxaDY5SE5DWVlNc2JUaGZv?= =?utf-8?B?MmZ4eHVOOE9OQ2ZrRk9hdVBSOXZmZ0xDUTl3NFRiZ1Fkc0FBNCtTTExtNGtv?= =?utf-8?B?VjFlbDUwM1V1ankySU1zcENMbitheVZPWFZUblZzTVZ5TkM2MXNGWWs3RjQ5?= =?utf-8?B?bUJ4alZnenRGSEJrTjBuMHBSUU9IUzByZFdxbml2TWJuRnVTQXpDT1crUzUz?= =?utf-8?B?RFdHZmE5SE45SXJiV0t4VDNzMXNtNzJNenNSUUVpMUhUNFdOcXpJY1NqVWVt?= =?utf-8?B?YVlXdm9yd2xoUHhWSnVhcGZ6Sm5VRUlyTUo1bjlCeCtvNlNYd0xFRTBqb2Qx?= =?utf-8?B?QnlTZVBYQXlOUEpUNS9PbHRJRWFoK3ZvVzNiK0dFVWVWNmZ0U29pZ2w2SG5p?= =?utf-8?B?Zk9CekxjSkdMTDNlMkVBcEp4WTlEa2NzRmRFWmVzbkU4cGhoNGN3TDVvV2V1?= =?utf-8?B?dCsvcnRISzdvaHEzWjgxQzU4UlFyZkFCM3lWUVZSOTNIbmswMGVmY3l4eWRJ?= =?utf-8?B?SE9ZY01pZHY2TkliZkFEMS9Jd1VKM21MYzQyQ2s2NWNodUtwd0tSUWZVd1A5?= =?utf-8?B?TEgwMjUvSGUrTnVYWkdyc0I2VzViSFNaQkVmSTJoNEU0WUU5cUpyQkNYM29u?= =?utf-8?B?UXJNUjJ2SnpLekpkbXFINlRPbHUyNUZ0T3B5MlhHV25MblZpMXZtb2dHZnZB?= =?utf-8?B?K3Zhc3I2SGpWNnp1UFJqajlMZnhPSDBQQnlCeGNEZ2xPL0VGUmxPQUkxcVkv?= =?utf-8?B?RlhHNVZ3Mk4vc2Z2MnRVQVlNWDhnSnl1V2V5MUloZitXOWMvNTZqZEVEWERH?= =?utf-8?B?WmFVdFZqVE14S0xmTmM2VkhhdjJCbXp1RElVRHRXZ29UT3ZtcVozdFQraG5v?= =?utf-8?B?b3FPcmRMUFdvOWhad2dnUi9SNDk2MThRSG12dGl2NlRWS0VTK0dkbU9ncHdn?= =?utf-8?B?bnVNOTlQcS92Ymlqam94SGNaZ0UyVEVRN3lFOVdoUmN4MGs3RktDc0VsclF0?= =?utf-8?B?WlVjeU4yMERPWnkwaHFnMXJmNGNTWDlLeHIyVFJTVmdzYVFacnpVV0xCa2Ny?= =?utf-8?B?WFBkK1FlTXBPdk94SlhkT1VqT0dlakRmVDRlMUo1Y1dkTEZsdzlmL1RNNC9L?= =?utf-8?B?dTRqMVNsU3RneGNkV05Td2RHY1RZOTQzMXR0Z3p5Q3RlUTZLRjhxbVpPYW5F?= =?utf-8?B?OXBSUVBnb2YzbXI3LytzNjZwUlFCQm1Jcy9uVWNqamJDaXB0YU90aUJISXZK?= =?utf-8?B?bGsvTHltYXJRNm40dkRQa0tWNWZYbVdzNHppQUxWNmw2Tm5lODV0aUJWc1Ri?= =?utf-8?B?bE5sUHRiVjRGY3dRcXdidEVPQzBpMkRycm1teWU2c3hzZHFGSlhaY1VnT1Vk?= =?utf-8?B?NStQdVgxTFpsYXNFRW1aRHBPTU95U0Q5Q2lKaTFaeGYvOWhITW5VQzU5bmFu?= =?utf-8?B?dFZwcE5sVkI4Rk1GTFpFSnFYSmtEaXl6UkJZMHNPV0puV2FLVmFDcjM4U3Uy?= =?utf-8?B?MVdKVVJuRlJVRkdSYmdITzR6Y0hScmZXbFRKenZINElWblRxT3dCNHRQN3cy?= =?utf-8?B?d053b0JsVHBkUkFtNTVVZW1lMm5qTWV2Zmh2VmhIMk4xUFIxaWxZNjFxRW9L?= =?utf-8?B?aHdXL3ZWVE04eW1HU2kyVXNyZW9jbmhzeUJhbDB5d3VEVERNUFZDSGNmK1pr?= =?utf-8?B?T0NuTVozZDEvOVE0UVF0K0piaHhzNyswNHVuUjB0V2EwRE80NThJZTlEcXFu?= =?utf-8?B?M1NlYTdvZU4zUzdrbjhqMUlOd3F4Sm4yS21lYkJFOC9EK2dMME9pOE02emNr?= =?utf-8?B?ei90d2Q4THg0Y2g4bG5GNFFhblRwbEkrQlJyM1QvSHEyRHZsSlpaOXF1Wm9N?= =?utf-8?B?T0ZOZmFNNnp1UUx6VlZWOGgyWGJpV3NjbUNNYzJkd2dUZDhPbXNpT1JFNGM3?= =?utf-8?Q?jKHzeHD+Lo1s9hcA/B16QnN5uBxzcVM8=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2489;6:rOY8AYpuFc1IpcOTEGWX8Ea/mJE1wxisBWAV8+zssvwITDk5T4PzepcHUAW+gqA3dFTbh67E48I/oEbLc2rSlhuEc6wE8V0DqbrQDbGi/P52hfnUgSV7ONBCHxVDinq9BqHaMG1L+l96mvSfMTHl7Dg2Vg3jXJtCUk2o1/AS7vDnhDrCOMy+GE4MROtoy85HDYe8vdEa0TpsoJM/RFkVGu6vnjaHjuGIPiIVqAYQ/ANA/lTj+nk8Qh6iLk+gSOvSxgCwFSzwB7QR7WbbrfA8R0fDrVb03U3afRQ5AhTBMtl9zgkadphRcxSfGiv6rBNMyjfzZV/JaF0YCldqm4AlWw==;5:eEdmvcOwK7+5frq0e0VmLlxxd6wqeDgp+iBLRV24n3KBaK/3wahWZaltvCg8BjSgyCHtsvjPNcEDZ0bYDE/KuIZ7sbc3+ha2cS69ujV0Ey8/S7Bc3c7cfHhxm5gexCuRPH3RFWaZI9/l/5w4wcpu4A==;24:ZdQ5EMJfeDp96tQOKAOjDaq+pY9S5icjGFw8H98GBIIUTLgky44wp+a0OtGxvgiD6dWzUFd4pDhec2o2OEOE0riEVGM/eG7gzPRdR7BklTc=;7:fI6jveMfEbUrcQy3LFmgb8vHI3mpgDRw9rFtIm/iV+H1t52nFMVtX/QC1cEYcO2q/J8do7o8WGkuJcENZOa2+jEFAG1wZbYwWIqHF0AWAPgI5A2FNH5C83UdDL05uHOVmCk/aCjXza6OikgksA2iQwVgBhyhOGPsayAVsx3B1Bq8NpoXjIBn+Idmh8IcealhFaJf1ptVXJPS4TvFuY7QG130PLv5RDdu+K3cxGNw8K0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2017 17:48:10.8219 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2489 X-IsSubscribed: yes X-SW-Source: 2017-10/txt/msg00033.txt.bz2 On 20/10/17 18:19, Carlos O'Donell wrote: > On 10/20/2017 04:31 AM, Szabolcs Nagy wrote: >> this entire mailing list thread assumes that only as-safe >> code may run in a signal handler and that is wrong. > > Correct. > > I didn't want to go down more complex scenarios. > >> your api proposal does not make sense in a posix libc. >> (which explains why it does not exists) >> > > Conservatively, if you see you are in a signal handler, > and always run AS-safe code, you are always safe. > yes, with as-safe code your are always safe. > The converse is true too, if such an API call says you are > *not* in a signal handler, you may always run AS-unsafe > code because you know you could not have interrupted > AS-unsafe code. > that is usually true but may be false: if the programmer thinks a call is as-safe when it isn't that can cause problems even if the call is not in a signal handler: int main() { register_as_unsafe_handler(); call(); // ok if as-safe, not ok if as-unsafe mask_signals(); } > The API could still have its uses? > yes it may have uses, but if a library tries to use it for sanity checks, then the false positives will cause headaches when somebody tries to use the library correctly from a signal handler. so it's a lot of complication for a not quite correct check whether as-unsafe libc api is async reentered. (e.g. a correct check would be inc/dec of a tls counter in every as-unsafe libc api on entry/exit and checking the counter, the libc could do this without a public api change, may be possible to do as an ld_preload hack if somebody really cares.. of course there are complications with callbacks and, calls that go back to libc via plt etc, but i think this can be made correct unlike the signal context check)