From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2110.outbound.protection.outlook.com [40.107.101.110]) by sourceware.org (Postfix) with ESMTPS id 698053858C74 for ; Thu, 11 Aug 2022 16:29:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 698053858C74 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cornell.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cornell.edu ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Akg/JwAyj5DBSuUzP2DFP95SB+2ElYmjT9EtSCnMhmnk1b96YrEcQCpubm4azMQ6LoyKm89BUuqL12DZ4v36wH4GcScHeWvIaF2DMqvipLumLaDtESnVU2EggnckwoUprEZYNMRg/mTZQxfws0Bo2OYKgUKQyXjSyLR73d0NVgOLCQema3s3tPniAszkHNrZhQmtcAcD2XIyz74gX9MOwb1uC3EEnEx+RsEJN6VdkrnJodFX1+jT3nj5b53qUdpbHK0ysEzAcut7+CK5ZZpc/i4lH8ihbe85TZulq6t14He5n8YcCUQd6kPX798boZcojEz3uEckO/BCiWegBbhXwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IPGCMUUKFd2DgOpXVTZ8eY4Vhr3W8fGWHBHf+SvfZZE=; b=O12DxZjlCt9RAde7E1HZ8W29yc7l8byOItRndoPY0XLbUwe81RMsELlLymHBIvdo70P9Xdjk0I9jcshFJ8008S6dFSV6jlqYP9RF90qQyn19EtRJSR78Wq9wQAG4a+MBK3Wz19NVabVcfElm5TeH0lB1VZjO4hHhuJESRek49UaieuZsRzL6hK7sNl6y6uqLkFGZ7CVxFyvHCf9CLdFHOTIDCzz9IV1YCIOZk+mhQZ1N91Y6MURtf6/rL76FyDUmqZDl36Ot++a7Lx4onYU/PP+f+pl24xqiKQbUxWE40NquPnnFAkPVKjBOH8TqYjJKQxqrK7KeQS5IVqlXdBMS1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cornell.edu; dmarc=pass action=none header.from=cornell.edu; dkim=pass header.d=cornell.edu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cornell.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IPGCMUUKFd2DgOpXVTZ8eY4Vhr3W8fGWHBHf+SvfZZE=; b=DsVVMSn3JehRPmrvR91+xiudlnL3vyJJi5VfY+rJyaQYr/u+gP/k2Wn6XfnFU9WVHVGsc8xZO2EddroYS1pZlANbG41whHrUJLTzuhhxTnws9/kmiQtuiHPivnqKlMaXkWeZL3TzsJzc9pBgwYOAmQ09g5P/lJnkq1D9Kd1cYlY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cornell.edu; Received: from BN7PR04MB4388.namprd04.prod.outlook.com (2603:10b6:406:f8::19) by BL0PR04MB4642.namprd04.prod.outlook.com (2603:10b6:208:47::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.22; Thu, 11 Aug 2022 16:29:34 +0000 Received: from BN7PR04MB4388.namprd04.prod.outlook.com ([fe80::901f:a758:30f5:309d]) by BN7PR04MB4388.namprd04.prod.outlook.com ([fe80::901f:a758:30f5:309d%2]) with mapi id 15.20.5504.020; Thu, 11 Aug 2022 16:29:34 +0000 Message-ID: <84729a34-a9dc-0098-3230-6a944d3f7c37@cornell.edu> Date: Thu, 11 Aug 2022 12:29:31 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Subject: Re: crash in newlocale() Content-Language: en-US To: newlib@sourceware.org References: <20220811211806.bc7f5426ce52f57d1c1538c2@nifty.ne.jp> From: Ken Brown In-Reply-To: <20220811211806.bc7f5426ce52f57d1c1538c2@nifty.ne.jp> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MN2PR02CA0016.namprd02.prod.outlook.com (2603:10b6:208:fc::29) To BN7PR04MB4388.namprd04.prod.outlook.com (2603:10b6:406:f8::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f6c00fd-d150-4fa6-c5af-08da7bb6ac8c X-MS-TrafficTypeDiagnostic: BL0PR04MB4642:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: P6lSxUNopcbukcVPSyHEwFV8ghlDXnIbnxrgAUPdtcpfLonu5lTIsqI03BX+IlcFKgeojPsBqk60/B37MGSS1gFapUt07ObwAHKoSVFMMqOkFLmTgE9kEP25n+7qOjNndKCFNViBWyeu9YRSB040BS5byv2oPPVJtLH2likIE4eC+3EQ37OKYRyXV45xBm4Ve611pMYsD2sNmE4OdN2a8zgQveUM7h4RHleUyxcqvBjiVwgJjsA373SK3Lx7SkazU1XOIducm6xrA8ZkBJI32Fnu+zVOXbEVLFBKBCTCv/xBJAoG6ebLdVIyiCa99ipGh+oJJSn2PLz2vU/mT1Ot6TACy1QyqE9uQaNMg74tiTe0HPoJXus7uTxfrVKziGiR+Qw01Aw6RhkGU/qsnZfHrSvhz5eegm6Jt5EuVCKS3HyjHarLfu78bfR0FSNvJ+h39PcN5WQBb8lU+QEutH26AIKkn2ceDoFxJcdTxDY7uRV5/NSCRDRgb/jdfVfTFx1dmqOWerDupGuywbli4Y6i4fjkQMifDUoR11LVNvvuPyeBbBf3yAsHnYklD3MOHhmLiuj/NwTpS+3UhqQVG2MRNnNdad9X7UZLecJtVUiY379Ekr5dBwtCudwTqaubrH1LxQ3NXvx6D8HeLxQtsagDNg1Gnp2ouU3R3TFl1rYJt+rT+nHX/P3xO0+mzZA7MZVRAY2z4N7orEvsUQ3XB3WbYS2B0x5xPzP21iDHILXodRNCUrWFZ1/ytqzsOxGQXCUWbwL/bLjuYug6WNb4dym8H30tx49/We/MG7yFVn4E4v5OzaDoFLkG438Ulboi0aWA X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN7PR04MB4388.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(376002)(366004)(346002)(136003)(396003)(2616005)(31686004)(478600001)(7116003)(66946007)(66556008)(66476007)(8676002)(6486002)(3480700007)(8936002)(41300700001)(316002)(5660300002)(6916009)(36756003)(41320700001)(786003)(31696002)(6512007)(86362001)(186003)(2906002)(6666004)(83380400001)(6506007)(75432002)(53546011)(38100700002)(45980500001)(43740500002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SDE2d3p3SU01VXhGVTA1MEIrTjMzN2wvS09uSXhpMWRxdVVSZy9XZGxJbkxE?= =?utf-8?B?aW53L01pV1Z0RGRoRkZ0MG1pL3BjQkV5bVBWZGNvWDkvZ2NIaktvYmdWU0tU?= =?utf-8?B?Y1RhWUpIT3BZUCswSjJZVzNTQ29XUTBiUmhiYVZGQU5ycFFROGRqWlpGa0ll?= =?utf-8?B?elFsWmd4ZkY5d0laejd1WVlINU12WFZoVEE3OXI1cGdhK1Budk91YVhPWHZB?= =?utf-8?B?SzRRM0JZWkJsWnp3N21iK29oY3pCN0xZOVp6bm1IcGY3RkNDck9oekpXSjBH?= =?utf-8?B?Z0xqWUV5eVpUSk9LaFluN082Q0NMUHVQZVkwb1ZTN0FDejdLZ2ZHVDVYeXBI?= =?utf-8?B?aWl3MFNyckk1Tk1lZ2FvNkF5Q1FhMFRKMTQ2VlFNWFFtaXhtUGNneUlucmVx?= =?utf-8?B?RkhJRG56Z1luR2NlS1FFa2w5clNxd3NTSWIvNWkrTisvZTR0ODV4TVBraHl3?= =?utf-8?B?N2tON0JsclIvSUl2K2htaGF0RmhxS25BbVpkODBob0pLME1QbWZ0QVNBZ0xK?= =?utf-8?B?dldPTkxkYVV4VU94WFU3TkdvQVFTM0hlMUtNSm16TlZ3WkdXT2lXU0NwVHVs?= =?utf-8?B?Sk84UGo4c0t6ZHBwczJFZlErNXh4SVZ5Yy9SakxNbTcwQVRIZnV0cnloMHFz?= =?utf-8?B?K0lPTmRndVg3NUVyS3BxVDdMdkpiL1pQY1ZpcE94d0UrZ1R6a2FwdXFUYTlx?= =?utf-8?B?TmhoWTRJV3RBUjVncGllWEF0c25Rd3hjcFdkS3FNVGNqeWZRZDlsK2VYZUR2?= =?utf-8?B?NXNnQ0RvdkEzWXJOcGRPWklUN0hsU2M5L0hWU1ZlcHpnMy8zWklObmRXRWZF?= =?utf-8?B?ZmJ4NGZwWWNlOHBUcGVTUEFPRnJkaENZZThVZHdJZ2RrUkZSbm44bkMyM3Jq?= =?utf-8?B?OTRVMVBKRnlNbDV4eVo4dkhDVDNtelNIWGs4QUswNDJJRXZEdlRvVW5GMWdT?= =?utf-8?B?ZlpQK3lqQk5ib1ZWQ2l6bk1TdHJNdDhrb3JIVnJRNHhDa2ViWWFtNVVGeTJr?= =?utf-8?B?NEFZa1dSS2RJU1hJRmh1NEZkYmlXNnFFNmU2R2dlWEh4czVTUkZBR0xPZWkz?= =?utf-8?B?TUZERVVmZHRLZEwwck4zajRPMTlVR2llb2hkOUl4TXA1UCtnSDBoeDRLU3M3?= =?utf-8?B?eEtScGErd1J6dFp5U1BNNFQ0WjdpSDNRY21FaGFQbjNYMU5TenA2QTAraWRx?= =?utf-8?B?ajE0SWNvdS9MV09QZUZCQ0I5YnY0bnhjVVBvdmhucStXWFdHWGF0RS9ISTBo?= =?utf-8?B?QWpNSE4rL1hmeC84U3lCZ3laR00xZjFHTFYrekd5WlFlZllIT2ZoZ3JUZDFE?= =?utf-8?B?Vk9iejdDYW82b3l5eitQc29lang2SmZodXV0bk5GVitmQm10azlUd3BjSzJJ?= =?utf-8?B?SnR0c0RvZDBzYUNGSmdveGxRd1l5aURuWTJsNmhrU0cwWjBIaUswb3EwREl4?= =?utf-8?B?SjVDUk9lTVp3bkI4VXJXSmlsMlRQdXh3d0xHNHJHRGFxN2RYRGFXK3VLOHk3?= =?utf-8?B?enByd1o2MHdYVE1tVVduL1lXSE9Wb2RMbm55dlN1UUl4am9lRkRYTFBMTHpU?= =?utf-8?B?TG1OT0JYM1hTa3VRa25GL0NscUxrNExBSjdRbVRXZzR6WVdsSGorcUVzOFNH?= =?utf-8?B?M0JodVIyOEJSWGhWYmp5SWtnSWgxaHZCWWt1RkRJY2JTb2F5ZjY3YkZ5em5u?= =?utf-8?B?aXRUR3NmL2lVZ1BiY0c1Yi9LaVBvWURDUXlkcFpzZEllTlZ3aWR1QURJYk5h?= =?utf-8?B?NkFLQjVZMnA1QnFQNWV3ZVg4dWhoKzhjeCsweDhBeHkvRkFoeU4waitFc3dB?= =?utf-8?B?a1orSCtzUkMwSXFKZ0YzOEl6d3EycmFhOEp1WS9SSkN2R3ZaWVBLK2Ewek1N?= =?utf-8?B?MHgvQmFsZGk3NmRReU9WWnBLQWM3K1FhaE42aWk3THE4SnZmejhqRjM0bnR6?= =?utf-8?B?Y2xUVzdxaFhsemsvNEtoVmhPSngwT1VBZ05JN01tVmNWYndMVlpIc3B3aHVu?= =?utf-8?B?VDhPNTZLNzBob0FJNTFUNFJYSHRKMkd5ZXdDSHo0TGs5bFpsUDNTRXB0SHlQ?= =?utf-8?B?SGNkMGIwVGt3L282c2Fxa1VjQkNmR1RFS1pPVkZ2OHpFMHR0N2I4WUxnZmZv?= =?utf-8?B?dFZoWkZVbklzVzFER1FjaWJVS2tUUzJVTFpXdVA3RkVmL2lUVCtENDc5SzRV?= =?utf-8?Q?ecyJWyAbayFmNmuo5AiXBc1zLyjNyuPLLQgLCQj/gwoa?= X-OriginatorOrg: cornell.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 2f6c00fd-d150-4fa6-c5af-08da7bb6ac8c X-MS-Exchange-CrossTenant-AuthSource: BN7PR04MB4388.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2022 16:29:34.1923 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5d7e4366-1b9b-45cf-8e79-b14b27df46e1 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MqyL1SM8tqZj4ZIDigsC/PT93MdC99y27uEbUeXKNWi3NZVTe6wyGprXOL8Y2HXuiG1L0yHHyLxGpvQIcFv3Yg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR04MB4642 X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Aug 2022 16:29:38 -0000 On 8/11/2022 8:18 AM, Takashi Yano wrote: > On Thu, 11 Aug 2022 11:29:28 +1000 > Tony Cook wrote: >> $ cat newlocale-test.c >> #include >> #include >> >> int main() { >> locale_t st = newlocale(LC_ALL_MASK, "C", (locale_t)0); >> >> locale_t st2 = newlocale(LC_CTYPE_MASK, "en_US.UTF-8", st); >> printf("Done\n"); >> return 0; >> } >> Program terminated with signal SIGTRAP, Trace/breakpoint trap. >> The program no longer exists. >> (gdb) > > I looked into this problem and found the access violation > occurs at: > newlib/libc/locale/newlocale.c > @@ 188,7 @@ _newlocale_r (struct _reent *p, int category_mask, const char *locale, > if (tmp_locale.lc_cat[i].buf == (const void *) -1) > { > tmp_locale.lc_cat[i].buf = base->lc_cat[i].buf; > base->lc_cat[i].ptr = base->lc_cat[i].buf = NULL; <-- Here!!! > } > #endif /* __HAVE_LOCALE_INFO__ */ > _freelocale_r (p, base); > > This is because > locale_t st = newlocale(LC_ALL_MASK, "C", (locale_t)0); > returns > extern const struct __locale_t __C_locale; > return (struct __locale_t *) &__C_locale; > , which is in the const area that cannot be modified. > > This seems to be a newlib bug. > > I also found following patch solves the issue. > > diff --git a/newlib/libc/locale/newlocale.c b/newlib/libc/locale/newlocale.c > index 0789d5fd9..1974665ec 100644 > --- a/newlib/libc/locale/newlocale.c > +++ b/newlib/libc/locale/newlocale.c > @@ -108,10 +108,12 @@ _newlocale_r (struct _reent *p, int category_mask, const char *locale, > } > /* If the new locale is supposed to be all default locale, just return > a pointer to the default locale. */ > +#if 0 > if ((!base && category_mask == 0) > || (category_mask == LC_VALID_MASK > && (!strcmp (locale, "C") || !strcmp (locale, "POSIX")))) > return __get_C_locale (); > +#endif > /* Start with setting all values to the default locale values. */ > tmp_locale = *__get_C_locale (); > /* Fill out new category strings. */ Good work tracking this down! I was about to suggest that instead of just disabling this optimization, you call _duplocale_r to return a duplicate of __get_C_locale (). But then I saw the following in the definition of _duplocale_r in duplocale.c: /* The "C" locale is used statically, never copied. */ else if (locobj == __get_C_locale ()) return __get_C_locale (); This looks like another bug. Shouldn't duplocale always return a modifiable object? Ken