From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 56755 invoked by alias); 20 Oct 2017 11:31:21 -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 56738 invoked by uid 89); 20 Oct 2017 11:31:20 -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= X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Received: from mail-he1eur01on0046.outbound.protection.outlook.com (HELO EUR01-HE1-obe.outbound.protection.outlook.com) (104.47.0.46) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 20 Oct 2017 11:31:18 +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 HE1PR0802MB2491.eurprd08.prod.outlook.com (2603:10a6:3:d9::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 11:31:13 +0000 Message-ID: <59E9DE7F.6010909@arm.com> Date: Fri, 20 Oct 2017 11:31: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: 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> In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: DB6P189CA0012.EURP189.PROD.OUTLOOK.COM (2603:10a6:6:2e::25) To HE1PR0802MB2491.eurprd08.prod.outlook.com (2603:10a6:3:d9::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a90ff73e-779c-4527-4423-08d517ae1247 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(48565401081)(2017052603199);SRVR:HE1PR0802MB2491; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2491;3:ini3zsuZiLQIS+toQhItDgnJeCxJf2S6i0RbDSYzWCZ8BWcGk0uq1RLdxCH0MMQnJNR0IWfOk9RyYyeJJ3P2nGuH8c8ZMOgzVaaqvY/9W2otElnx7y1ob+V5qXDlGdmoTnez3a4SnPtuSDakjJXnCjqmPfVTBV59xD4CV9eUzgatoO1Y7F8OU1XBCAMboF8Se0gHWnwK17RIGhAVPyH8FD5pEMOkoLqz6AQO7BBWiV3EMn4HJLG9cREHUP8fPIV2;25:xtVVtHjdixatYRepwEzfxP6JsD0GbTUqmSlGgJPp9uUWdt33XmXLNlQkiMrgDuVt3ViWs9EJE+pFvS8BMF8kjAWW3kYPjlSXAdC3k0zf1PswBVN4lVlsnLC2biGlm1R+w63aYaHGTfYJY30ixnaxQAkjYTdUFgOXf/9IoVDHzOssc86nUJsZstNKOusVcPpTmxoh2Uy1haXYF3FiBJy1nSsDHatQvRhP/n60rWFTmTID8Z1qIpTeFAj4qpLkfwsmTeOFERmeuPvIwIeBd2rKFpq+dqs+8XwiLWXKaStJ0p8iObbCrPlzQ/BIlMQsRUBSMebXhIu5cLDN0W/MlJy0IA==;31:rzjUbFC7l8SMnrjjETY5HkooMiXt0XVdG+6od7gQ5OnjoB2OyVN+6eTBEXn6FZdnwAqpRFzUMEQTF1QRK27rx2mTmqg7NjaoC1WOer14VhGUjUjmisyXNx6DjldKZ3j4aj12FgFeE6iLNk2wd06VfjJo6kstEB+8RGl1i7sN5k+7qo86xu7otg8Yb9Ac7C0/tKf638pEWm/n3e9JPZD7t2TKvDOCE+dmROzfJmi5I7U= X-MS-TrafficTypeDiagnostic: HE1PR0802MB2491: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2491;20:vbkYVaSAdxvN0FGLo76/KjzinwX8Q6UagYAhQ6h/ooC3czPcpDVjSdK8xqgmaLOr3mrHx+PwpPciw/oofJqWwgA1KvsQpVtAJtz6baYB+lU2iOPkc+ACwAjHgKn2wBBf9TVIUW/aoJBaYHaggJH/2onORv6JYLKH/RGlovePcd4=;4:gjlN3+TtbztulJlRIR7vdHHLXg1ObrvsTgML9Xe9zG283AMOkPIvsX88FlFY7TAKGJmD4yWzLC6VONXesbNegbwGgLaq1w/5wkaPfrHLuDwuZnJeo7KWswzMToVNs3sue5m9/wO9OEqw4A2v5e89l6gOAIuBkux5IAGYHT/oOMNNjjs3lF9wdCSApyPBcSyyRBP0nBkMHqdpP6YBGMYRX5cPd+i66fUh37DLXTSLfUYWlWkDr3DaPW/MGX5WiNRX+JEP5R8R2sI6zlKsUoE4kRAroe1SdLHyeH7iSvJb+nU= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); 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)(10201501046)(100000703101)(100105400095)(3002001)(3231020)(93006095)(93001095)(6055026)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:HE1PR0802MB2491;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:HE1PR0802MB2491; X-Forefront-PRVS: 0466CA5A45 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(376002)(346002)(39860400002)(377424004)(199003)(24454002)(189002)(77096006)(65956001)(50466002)(39060400002)(101416001)(68736007)(47776003)(25786009)(6246003)(4326008)(72206003)(87266999)(33656002)(230700001)(561944003)(97736004)(83506002)(59896002)(76176999)(23676002)(65806001)(53936002)(6916009)(50986999)(86362001)(229853002)(305945005)(65816999)(106356001)(8936002)(105586002)(5660300001)(64126003)(7736002)(58126008)(2950100002)(316002)(2906002)(478600001)(3846002)(189998001)(1411001)(6116002)(66066001)(8676002)(81166006)(16576012)(36756003)(80316001)(4001150100001)(53546010)(6486002)(54356999)(16526018)(81156014);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0802MB2491;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?MTtIRTFQUjA4MDJNQjI0OTE7MjM6UFNEQUNmZFRVWnBtUXFUMGJmK2xEeFJB?= =?utf-8?B?ZUl6V2hEc0k5dFRUMXE0VzhueDdVTm1pUmRYaU82VENMYnRla3NVWlBoRlJw?= =?utf-8?B?YWRpdUlQYWVZL3FIUS8zVjJ0YjlOLzhpQm8zSTV1ZmZpVjQydXVSUGE1dllu?= =?utf-8?B?ZUNSd2ZTeklOL0hIOEVSUnNHZjl2b1pXaVdzSjhNRzY3QU9sVjZtbEVVYVNF?= =?utf-8?B?bVJyUnpibkRxdXc5MnNWR1c1Nk9wNkdqQTJBQlR1ZzN2SmhRNW5rZnR4M280?= =?utf-8?B?cHg5d213cVJnOTFwRXQvNStOMDRDTGYwZ09WZlJBM3dyZnhvT05QOWxScEJQ?= =?utf-8?B?TzNkR0lHM05tUGpYem9VZ3JHdVNGRTZySXBHUXhVZ3FneXFxVEZqb3ljdHVY?= =?utf-8?B?b1czNmxrSHMvaGQ0L2x0V2M5WFh0YXN1UmlKU3B2S2RQTlhGcDlNNWp5dFIy?= =?utf-8?B?OFZJTkVCNkI2RjZEQ05hTFVuUVhYcE5tbk1tVnNoUEs2TCtwaUcvSENic0V4?= =?utf-8?B?dnBRa05mdmswU1pTbmI2ZVVVclpFUU9yV2lBWHVtVEZXcm1VYnUwUC8rZFpH?= =?utf-8?B?elB5aEI2c3hOQXZWeXF2VGNsa2tGdmpFWHdwczF0OEtjdkZVVVBrbXZsWEND?= =?utf-8?B?UVFEcXZ1aUxKVE4zci9CV1BocXhBQTRxbFZxSEdLQkJ0RENRRjU2VENnamZC?= =?utf-8?B?cERodjl0T2tsbVpNR3NySlIwOG10ck4vVU54RWFISGtHUVgzVkZ4b2FBTDZl?= =?utf-8?B?WlozVndLenBDOXFCOTRodVBROFFhL2htSnRTSm5CZlhxTHowMkxkbkdiVEoy?= =?utf-8?B?dytQVklGdU9WeGo4dmdQeWREbVI3U3hyOVZidWdrNzZoUXE4di9lL0FqcUYv?= =?utf-8?B?T1VnbFdQSU9QMXcyTHFJK090aHhQUVJzZDBha3FTZDJMQkRKQXUyMmwwZ0Qy?= =?utf-8?B?NEZGZzRPSDdBUzJ5MXlJT3ZqRlZWRlNuaWN0cG5YbGRGUkpuZ2tlWU9USTNR?= =?utf-8?B?UGFmdFdOY3BMSXA4d0pOTGs4SGpwVy9lOCtBYmt1WHdlcjVNTnVqaEp6dFJ0?= =?utf-8?B?VjlRbXBKY3hHMUx5a01CNnZvREJFRDNvTkNJYmVjeC9MeU43OFozc2tCa0hv?= =?utf-8?B?UWVxbVhiRm9UaEtCSFd2YkVvSlBKeE9uUUJIUkFEeFZoeXBoRXkxTUlOaW4w?= =?utf-8?B?VVRHQXZEL1RVV1RGZjFpazZvR0RXSHZhdTlSL012eW05bEdETUY2WURiVTdF?= =?utf-8?B?N3VrWUxUaXhsK2RHZ2c5MFZBN2JhVWoycWtQYTFWVzdTRW9mdXdkRDkyR2lh?= =?utf-8?B?ZXE2b0JXRUxuYkRrdHZuTzhRYkJDNVlDK0o1b2c2em54LzB6OHdCRm0zRWg1?= =?utf-8?B?ekJ1UFN5TDBxWmhJSllzV2UvUm9XK3BCaHBHUFNrTVF5czFZcVhVTWxsVERw?= =?utf-8?B?cFFjbzdBMzc1UHpISjYrbHZhRE1xUnQ0akxnN3BudUkxQ3VXQUkyOTI0T1Bo?= =?utf-8?B?L2RQZ3dWRWFBbHFsUlM0NnM5dVhLMGJEMU5xd0c1a0RiTVB3WlYxY2VFMUZ5?= =?utf-8?B?SEZlS2tOdTl1dkxHc042Y1RXQitGd1FyMGRlSVFUeGRubEc4R2lVQVV0cjNR?= =?utf-8?B?U2duRVRnamorT0JHZmk0R3loMm9SanFHME42SURGTFB4UklxclZJVW1NOWFy?= =?utf-8?B?dUF1UnlsMlFQWDd5b0JxTXRPMHNVRlBQL1JIcXNYYldtR1Y2NlpZUjhiNXNB?= =?utf-8?B?Ly8vdmQwNjBzQTBOVXJGdjNCYmRYYnZFTVRFMVVTa1ZIYkIrZ1U1MzBEVzFn?= =?utf-8?B?cjFpeGNNWko3WGgrckVjWHIzdFBPTmYrbit2aUVQTnYvWWw5OFl3dDY1elNS?= =?utf-8?B?bUNEUk9wdFJIcEk3Q3BCRktWMG45TGFoYWFvdlpZdGROVTcreXh4NURaeWsy?= =?utf-8?B?YjIxbU8rMnFIbm1yZFVueVgzdE1PSTY5VUpRb3RvN2xNcElaZXJyQ01RcUJa?= =?utf-8?B?OFkyaG9MZlZ2blpuTEtCMDVZTVBEWlJvc2lGbXVBPT0=?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0802MB2491;6:vnHsoc9ZtPDsvzw0j3FUaMki/lZqjnpc/xbSbN1rZuh5Pqg1Ea68SgDa430jH/cT9NM2VxIEmzWVl79vJT+fni6HiT+1xIjqehEffAWbYBrxQiv8RZ0knVkfi2jYr0ikXrQZEcMJo8MhtHYDRniLZL3kJpHQmJPT5sd3gRz2Df1EIKDxLjCauy8norJ1uqwOlvmeKiV2AX7iP+M3BHVlGvGN3ylj7Jkeeb0Z+wQnaFusXB7ccKsw+qP7sl9D5Iytavpr22QC4Xqjx3SdzfEXR76bcKhrVf5ODJUCZTaMOaqrYQqOPvYb+h4nQd9u75u6VmnPdQvKMTGdAur2Aw0Krw==;5:UbsnN7TmqVcSE3V+Qr/7KWlBRPqk/6ZYFdcW/ltXAOunEIXgADIYP9BnA44Nf4ZJSqTg1MymnOFvQEt0phJQRiqDiu/DhgmQ9yTU3Au8VEkR+HSmVKH1Pc53YSENgY7EHKQRh+Bsjc1uq6eMqlUJoQ==;24:vgeDaynDBMSDrpdeagJjPtZz6+z2q48tcIH53X7C3SiqxUn6gO6Q2PLEV2BZHqN8KgKYp/YHAeqzFW7IXZeErUjMr9HJ6mX/kjlpbWjrHPI=;7:5/WolPkUCgb6y4Q0xUlL7X0prBr6xiRgyD2k4A/ieJt+1EsmkmeKuMVPwlXbjdJp1ivi9mmHx213u2j6CsrHmqWA/uo18bn/WY5cWvTwmvKJBktpn8bi3haMEg5Hs1kclFVudoyYMPHlkoKEt0B8IPJZSTj8KQCgjxkUhOsz1DjBIJOn0pUAFSIREBWMaXzM/1Sq88PcQy8nuIaVYqgfVOx99ref3rNJ8bfkD/rjcFI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2017 11:31:13.7295 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2491 X-IsSubscribed: yes X-SW-Source: 2017-10/txt/msg00031.txt.bz2 On 20/10/17 12:23, Yubin Ruan wrote: > Thanks Szabolcs, > > 2017-10-20 18:32 GMT+08:00 Szabolcs Nagy : >> On 18/10/17 15:18, Yubin Ruan wrote: >>> Hi, >>> >>> I am writing to see if this is any util functions in libc that can >>> help to determine it is currently running in a signal. >>> >>> I wrote some library and provide a function which will be used in many >>> client code. However this function is not async-signal safe (it calls >>> malloc(3)) so when it is called, I want to detect whether it is >>> currently running in a signal handler. If it is, I can avoid calling >>> those not-async-signal-safe functions which might cause deadlock. >>> >> >> note that in posix as-safety is symmetric between the >> interrupted code and interrupt handler: if any of the >> interrupt and interrupt handler is as-safe then the >> behaviour is well defined. >> >> so calling non-as-safe code in an asynchronous signal >> handler is perfectly fine if the interrupted code is >> as-safe. >> >> there are synchronous signals too, i.e. raise(sig), >> and then the signal handler runs in well-defined state >> (one can use signal masks to make sure a signal handler >> only runs in such state) > > Actually I think the point is that that piece of code should not run > in a signal handler. That have nothing to do with sync-signal or > async-signal code, because in both case we might encounter deadlock. > From this perspective, that `in_signal_handler_context()' make sense > to me. there is no deadlock, malloc is safe to call in a signal handler in posix if the signal interrupts as-safe code. this entire mailing list thread assumes that only as-safe code may run in a signal handler and that is wrong. your api proposal does not make sense in a posix libc. (which explains why it does not exists) (the libc startup code may raise a reserved realtime signal and make all programs run from a signal handler, it would be a posix conform implementation and your 'in_signal_handler_context' would be always true) >> so using "in_signal_handler_context()" is not a valid >> way to verify the as-safety interface contract. >> >>> that is, I want a `in_signal_handler_context()' utility that can be >>> used as this: >>> >>> int mylibfunc( void ) { >>> if( in_signal_handler_context() ) { return(-1) } >>> // rest of function goes here >>> return( 0 ); >>> } >>> >>> >>> Yubin >>> >>