From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 71130 invoked by alias); 24 May 2017 14:10:31 -0000 Mailing-List: contact newlib-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: newlib-owner@sourceware.org Received: (qmail 71116 invoked by uid 89); 24 May 2017 14:10:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=H*r:203, H*r:10a6, audio, Audio X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Received: from mail-db5eur01on0121.outbound.protection.outlook.com (HELO EUR01-DB5-obe.outbound.protection.outlook.com) (104.47.2.121) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 24 May 2017 14:10:28 +0000 Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=powersoft.it; Received: from [192.168.2.106] (93.146.228.90) by AM5PR0202MB2545.eurprd02.prod.outlook.com (2603:10a6:203:6c::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14; Wed, 24 May 2017 14:10:28 +0000 To: newlib@sourceware.org From: massimiliano cialdi Subject: Is this a bug? Message-ID: Date: Wed, 24 May 2017 14:10:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: DB6PR07CA0067.eurprd07.prod.outlook.com (2603:10a6:6:2a::29) To AM5PR0202MB2545.eurprd02.prod.outlook.com (2603:10a6:203:6c::23) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM5PR0202MB2545: X-MS-Office365-Filtering-Correlation-Id: 32cbe001-e206-4d06-009c-08d4a2aea1ea X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:AM5PR0202MB2545; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2545;3:OjnavYu78/gyOIOQ4y88kUrMiMQS2hRDpVRImfmvIXt6MwxNWiCkGPK2klyH7V33ACDwTw5o4kijY+5F6NlD9nKj01Q0Kpkz/khENfJ/a217zjpcFKV/GuEQoiA1CZ2SDMi0NIF6f+s1jrdhj9+5994/3w+EzG+Zzdtl2XDTjv7tEgmUsa4UI6QMJucZ2BU0CFNyoNTKbkrPN8vizrwDky99I35KZcz+DEnYYDiPskC1w06m8XNVtbWAcsdVJcWaks3lWhJwlPAQOtSqcZje61VhcnoAPH1zoFandmBcccCM8+mIMVBB9E2qbPxWoBgrlRYTs5BcTl3LWxn29rvKVg==;25:55Fypwqah7ncxyz07Mh3te3yDY4j1NG4qnF8FyHOS4CrEm+Pa3epySbb0xtHpl+ZaHcFZy9v+sBfXGDDy/Zdc+pgYuAR96zD8trN9bV1poBNTMlVDyCOv7VEpFnJK1TOBbwsiXhBM18ZXw9FtpZbRplh2navycsVexDiKgy21mi0fA+XthTt7868T/ySWOFWE8kLBiU9ajUaxM0khJwypYDBG89bNrEuMND7a6mHLY4gItBo9Nl8TlgVH5D1WllUZtghVDBU/bz+Begfh/vX8gcPatKfA8b3HjA5Jun4DFqwhVXruxLVroRjqo+J6PIHIFtYVOKfWF1492di53s5gyvf6Hc3+MqZaDb1kKE8Npg3vyTP8CtPhOhk3/4aVT4cvWka/Kd/0keMjqKORjuyvYUDygoc0vzkv0s6cgHL48dOxeTdZDmgb99P/6fhmlVa8skLKh4VLDDbyfgQ50Q8pr0bXz6DKkSheRAnehCh1MI= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2545;31:azX/9yRFYidpI0H+gCuBzFmktEuRprK9/5+AbZnp7r48uklMKgnMkpKqJ52P5juCBTGs95RZWRnjrtLOQ6rkXk8TmnHZUx0XZ06oGijfb8BCDwD6vhLQw7DXWP6pUMGn4Yi8loRzpzDGFcXbtM+tVvLLuRPN5jId8TLypJveMeX4f1A7zA1ONcMHDGGjnoBlwPQvhljwZifroyjEDAsi9eriJJsDHlo+K/lGeIuJnLivI8FNA1sf3bd2hjnVWzMl;20:/qui3uNXYJDuBFsrOnYW2ivTodFhgeFMuU/UD61GaYh0cf5fBYOpBDZXmf35CD83ezH0z8hOOYWrgdJ2Sy9vLwemx8fvZg2fW0GvtEDpSFLW6HDtVsw8SlW7FogzjDNYcN6ldS45hsgw5+2ledTgSoPXB989EYcBrQix/N121Lrq+tPbrxB5WyQov62FkR7N6I2Iu1lblw33amPkQCi7e7Lpgi+oI3KFhrpLQx+5+OOkhzJE4I5Zc6sA0agUtJuHMj3qUChPh0xRf3rymeT9Rs6pyARSjRlHXvwaugqMu6ytJENcNnWM1DsbECnuVi7boml3UBOIz6ROuHhbv+5tLN9Q+FlW/DKjRSxwboqJN2bE6upL3GflVdUpQ0SvIWfnbuSf29M9ZNupNNQpBRYr6Kfn2sauuXM706P5DRA3Z3AErdw0yqLyVAt61VIb/WqF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123560025)(20161123558100)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148);SRVR:AM5PR0202MB2545;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0202MB2545; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2545;4:bzsgHE1tW/pVMzXfKKqct5CCAom6s5WgiPpV0xhXouasZi03EEkolDQlnSQQcWDhpex72htwcZXrYEpET8rexPTQfELd8b1fGEm+RCQEfABOsXnoPM5rLI851Lx0rQn8iJfQh+n0qrv/8dZj1xXtRuV33Vj5Y0aIuPLrDIZ7yCs5IcFMuI8NrbOFxvXRSJrmKbIAua/DKt9RZyBW3sZ+fP0kdwQSWB3pQYvCBsLCpX5/SlOtruPtZ6w1XsW5nvaZQFXqZNfgPxFlkI2AQ28jP0RCHFFl/XL3+Hwf9MtGFldepzQafZjD3znhDAm97n08uWFUKhHfkDQxypo0dQ9exKJq6YTPiacCg6iT+NLGBp6+b/CKhlrmJmukKlhfu+7TAweSm3yW8B/3Yifm6NZW7zxMPl1IYi4Hi3RceBavzfAx18sGuiQFTVXjXRPvIu74JOUEAJX7JOVbxBF6Yem7tns1faHRBtGextoB97N/uMfWq0pERJo+jP4YS8WeGsZCr5ESmol+QewOgq90djSepmWmD8bN49jU3c8oqOXIqND6v5GLfo5W2NGJoQcdHiZiVWIIGB1UNp2TiWjJI3RaRmQv1j+w/ooDMWL0CrDYC0/qcSVx4G9FQ6G+jOjF6VahctcPBNBQ9vxrijizLJx0DSv+B/Dh+qJQlK/rw3JeuWgbnwcimgLYsG3YxLf+iIcONx4BsRml82nkRNetfAYA+rBC781X8RAGmXgyWQf312M4SMH3vyN2FPzw3pORcA7xYaAjeKoYvS4IHT0FymXA9rU289o4qIlP0qLcKYA3GmA= X-Forefront-PRVS: 031763BCAF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(39830400002)(39410400002)(39450400003)(39400400002)(50466002)(74482002)(7736002)(53936002)(31696002)(65826007)(86362001)(5660300001)(117156002)(189998001)(2906002)(54356999)(50986999)(31686004)(110136004)(38730400002)(42186005)(230700001)(4001350100001)(6116002)(2361001)(33646002)(305945005)(47776003)(66066001)(65956001)(2351001)(65806001)(36756003)(23676002)(8676002)(81166006)(6486002)(3846002)(77096006)(15974865002)(86152003)(83506001)(478600001)(6306002)(3480700004)(25786009)(6916009)(6666003);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0202MB2545;H:[192.168.2.106];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTVQUjAyMDJNQjI1NDU7MjM6eVVKbTRlRkZOYmRyenRNcTRueFFtNEZ4?= =?utf-8?B?SGF4dWJ4dFhEWTlVclZBTVI2RlFtK0tuYTFPcjU1T2V3VGg2UnYvMFVGNkVy?= =?utf-8?B?cmd3S3ZvMVJMeVMyR3c3M2tiSjU5RStnZzRlSGp1QmRtZ0pNTXQzMkxrcmdk?= =?utf-8?B?Zm5IaXBXV2ZzcThyand2anB1bEtFaWVISm1MOHBVeGZqejFpcDdYT0Z2a2li?= =?utf-8?B?NDVlWEZGZ1NuOWJ0c1R4OHZ1am5hVGRDY2dERW1CTm5qdk5xSzZHZGJPUDB0?= =?utf-8?B?UzZKOHM2Y0RNa1RSY1p3TG5rY1hhNHFlSERQMlNTOW9PVytXQ2RKa2ptY3Vu?= =?utf-8?B?U2x0LzBzdjduc2xoV1NZdHJzTnM5Rm9aV01ZcXZBT2hqOTIrU2NOc3FXZmRE?= =?utf-8?B?VjRHR1FGSlVDK0lHbHAyY1ZUbkd3bVBHL0pYMWxmYlUyRnFaTXhZZkwzbVVp?= =?utf-8?B?U1V4RjNUUnNQQ0xGK0luWUlzOW56MXZoTmw1ZDBKd2NpR3JqR1k1S05ySit1?= =?utf-8?B?RHBVYzkzaEM5QmQvTUZhVHFCTEVVWWpYaEpHRVFTazk2VjRTSGs4YTZRbHcx?= =?utf-8?B?MjRNOVArTWxZQWllYlVsM3lXRzYwcVIxdHVTK2dBK1VJVWVMZkdZUG90VlRU?= =?utf-8?B?SXJCOXJScFg0WE9LeXZFSXcwNmRQK0JaL0tBdXBsUzB5Nkd6UFZwUU1JRUEx?= =?utf-8?B?R2FZQkJERHNocGppRndjUS9PTlIvdW16V0FiMGJLSU9SZnBVWmppbnhLSTlh?= =?utf-8?B?TGR2YXM0SDBkeStxcW9ZVHlDa0VyZ2ZPNFp1UHBFaC90V3hjcWViWGN5SXlG?= =?utf-8?B?dWovZHhmcGlScFhYb1d1ZWdWOXdpdU4xWjdRVnF2RU1lelBiTFRseXN1ZmRq?= =?utf-8?B?Y2szaVpBY05tOUdDQVdzZEZXNzgrRDcyQUY2KzdHTTBrREhMV2FqVFArVU8w?= =?utf-8?B?bVNNK3cvSWh6KzBBVGE0SFVCSlJZdjNQZXJWOHl2bS9ibkpJNXBhVTgrS01n?= =?utf-8?B?a1BoYTk3cjh0Nzdqa0FKMGdyUDFqVnYrMk5MaWRaQ1IvaW5FMjl4QjUyYklZ?= =?utf-8?B?cFFqOTBUSElFZlFhdHduSE1mUTZuekdZeXdwQzJoSW8xTEtvM1V0d0pvK1lW?= =?utf-8?B?TGVES2NNN0xyWWppaFZKSkIwelBsamZTQ1BrTElwZXgwdHdmRnh5bHMrVUw3?= =?utf-8?B?aS9DT2FxSVh1QVZOZzBhOWZKbEE3TWEzZjliNlRRUEdLMVRTNXIyVytSUWZY?= =?utf-8?B?Z3pjdjFrNUhOVVRjdWFBdG43Zm5zWVpLK0VXUTNJMmY0LzM0dm8wek9LQjRu?= =?utf-8?B?SllZZGhxZkkrdTdjUVVFbWN1bUZuZGFTbk44OWY2MjdxZnRJTkVhOEVaRVhF?= =?utf-8?B?aE56T2RVWVlicFdtOXlVbWd1K0Y0NGJzendqUHR3TVMyV3hmajJsRU5uS1lv?= =?utf-8?B?Q1cyVExtbE1SdWRWU0F4R2o4WjJOSU9acmNPNmgwcnJTREhVOHY2dVNjUUVZ?= =?utf-8?B?bVZoRzhPa2IyTXkwbUJDQjdmeUt2TjNMNHdUWHRuQm9GRUlyL2t0NlVRNndF?= =?utf-8?B?K2o1YXBsa0Zob2NJQm5BUWxJczEvMG51cEJXQVAva2pFenBmU0U0ZWs4dTRl?= =?utf-8?B?bnNkbndNaldIRk1jZkU4RXE1Zll1RlJCUHJ6YlRseDA3K3R5UFVQOFJ3UW1l?= =?utf-8?Q?rlSCl1iiCdIGFNYPYMNnbn4wIaAojajO/acFbr9rO?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2545;6:AQWj3sM3nULif9EE9APO5H777vHB8/pQa6DNPbubto72DI7hzCImHV1O+tOyGO/kiMXp+cILaW15pDPr+NVlb94joyRnQ9r5mf34dNxb57kmerUI1CvC3WCeZZpJfEXZ49z0xUSaOsLJhZTH2omaplha9rLMN9h+wCg2/qjLsFsJL3AFgVfC6vtJz7o0seZqMHfZ7B4ccmICAiJqUeMohCls1AsvrODSrQMzaCjt8UXd0qpW/H4VyxUmakdy2GNo/7EBO2xmvMoysNyk/m1RppvWFyG06CojxM9HSbn2EqOjPCb31cDxF4ApMSUNATVJuyEByY9x1uKO+pz1uqcQuZ+BC+sn+b6JHklJ8H1/16qME5HTHFcN/zWTpxJiyPmV7SDTUtC3VOGH0s+12CRFWmZdSe9rtyhV1Nu72czFR/PwZbowq4+CCttJEFlVtg4xQaWo+6aBScAS+pNcE3+aOY639omDst9AEke+ARtuGFklWrdr/fjNNHpxqPBhHj8cVLfEZRKeTg6wAnST6uki9g==;5:gRzEuip/skad/4JqfiwFu7B2UCOQJcipYGf7HqRRRKpPSM5lEkPuqh3SPoeft1priqBa+grIkYgJZZUPlQFhYrRSYMJMiMc9PGSKrBj/hTAYre34jfPkwLJaYQkZjS65aDU1e6OBmIzKEXPuOr7pO0hILJX9clK8+0rdz3D2+r8=;24:T1hfyuPVd9gVUzDRX1EVyFXyWi5UdaYUzwioNWtFYUvR+zGx80VIetW5CM3DTWo2exECAlJABUq1N3/s2fmYvldt0mfYMd8EJaokhWB41v4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2545;7:sfSIOkz+ZBgzyMJAmy1Ou7QAdWOj+uW4AjaTuo116PSNqSY0NqPZbJT+ruH9CI9Icf9pQVrPhFf0zJC5iTYAJrdVgs8XI5PiUxbP43CD72JAU3pdpuXe5s6sCR8mP1HPo0+/63r5y0TyxaOHD2O9fCgqCx7Xr6Ojjx+2FrxtQXgeua/ZfBJ4CsQBVFPW+3UGiGn2X6yN3hX8T27mFkpD+0Frah+yYzur8LPJ649COyxpTaVLWUdHMQnFLBp+6ceveWtxXJ1Io4UKMpB1xcpVFI41XKCEwEpFAczwoJx6MmHp1DmG/MjbA2u88Vf59n+Ag15o0Sl1XE1q9sasic/2Ow== X-OriginatorOrg: powersoft.it X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2017 14:10:28.2122 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0202MB2545 X-IsSubscribed: yes X-SW-Source: 2017/txt/msg00364.txt.bz2 I'm experiencing a problem with newlib (tag newlib-snapshot-20160923, but I think it is the same in master): file newlib/libc/stdio/nano-vfprintf.c line 401: 394 _NOINLINE_STATIC int 395 _DEFUN(__sfputc_r, (ptr, c, fp), 396 struct _reent *ptr _AND 397 int c _AND 398 FILE *fp) 399 { 400 if (--fp->_w >= 0 || (fp->_w >= fp->_lbfsize && (char)c != '\n')) 401 return (*fp->_p++ = c); 402 else 403 return (__swbuf_r(ptr, c, fp)); 404 } fp is NULL. On my microcontroller (STM32F410RB) address 0x00000000 is valid, but not mapped to RAM. fp->_p is an invalid address, so the instruction raise a busfault. I have investigated and I think the problem is in file newlib/libc/stdio/findfp.c function __sinit() 207 _VOID 208 _DEFUN(__sinit, (s), 209 struct _reent *s) 210 { 211 __sinit_lock_acquire (); 212 213 if (s->__sdidinit) 214 { 215 __sinit_lock_release (); 216 return; 217 } 218 219 /* make sure we clean up on exit */ 220 s->__cleanup = _cleanup_r; /* conservative */ 221 222 s->__sglue._next = NULL; 223 #ifndef _REENT_SMALL 224 s->__sglue._niobs = 3; 225 s->__sglue._iobs = &s->__sf[0]; 226 #else 227 s->__sglue._niobs = 0; 228 s->__sglue._iobs = NULL; 229 /* Avoid infinite recursion when calling __sfp for _GLOBAL_REENT. The 230 problem is that __sfp checks for _GLOBAL_REENT->__sdidinit and calls 231 __sinit if it's 0. */ 232 if (s == _GLOBAL_REENT) 233 s->__sdidinit = 1; 234 s->_stdin = __sfp(s); 235 s->_stdout = __sfp(s); 236 s->_stderr = __sfp(s); 237 #endif 238 239 std (s->_stdin, __SRD, 0, s); 240 241 /* On platforms that have true file system I/O, we can verify 242 whether stdout is an interactive terminal or not, as part of 243 __smakebuf on first use of the stream. For all other platforms, 244 we will default to line buffered mode here. Technically, POSIX 245 requires both stdin and stdout to be line-buffered, but tradition 246 leaves stdin alone on systems without fcntl. */ 247 #ifdef HAVE_FCNTL 248 std (s->_stdout, __SWR, 1, s); 249 #else 250 std (s->_stdout, __SWR | __SLBF, 1, s); 251 #endif 252 253 /* POSIX requires stderr to be opened for reading and writing, even 254 when the underlying fd 2 is write-only. */ 255 std (s->_stderr, __SRW | __SNBF, 2, s); 256 257 s->__sdidinit = 1; 258 259 __sinit_lock_release (); 260 } at lines 234, 235, 236: pointers are assigned to stdin, stdout and stderr, but I have no room space (actually I use heap_4 allocatore from FreeRTOS, that uses almost all free memory). __sfp() returns NULL, but no check is done. The subsequent call to std() function uses these NULL pointer, that I think is unsafe behaviour. Unfortunately I do not know what the expected behavior should be in case __sfp() returns NULL. Is this a bug, or am I wrong in uses of newlib-nano in this context (embedded system with FreeRTOS, heap_4 allocator, and uses of printf())? There is a way to preallocate memory? How to pass to framework? best regards -- Powersoft logo *Massimiliano Cialdi |*Senior Firmware Engineer *skype:* mci.pws *| email:* massimiliano.cialdi@powersoft.it *HQ Italy:* Via E. Conti, 5 *|* 50018 Scandicci (FI) Italy *direct phone:* +39 055 0153429 *| Fax:* +39 055 735 6235 *web site:* www.powersoft.it Green Audio Power