From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 60262 invoked by alias); 20 Apr 2016 17:03:42 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 60253 invoked by uid 89); 20 Apr 2016 17:03:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.3 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: eu-smtp-delivery-143.mimecast.com Message-ID: <5717B657.6040007@arm.com> Date: Wed, 20 Apr 2016 17:03: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: Mark Thompson , GNU C Library CC: nd Subject: Re: [PATCH] Don't divide by zero when trying to destroy an uninitialised barrier. References: <5717B2F4.9050105@starleaf.com> In-Reply-To: <5717B2F4.9050105@starleaf.com> X-ClientProxiedBy: AMSPR04CA0052.eurprd04.prod.outlook.com (10.242.87.170) To HE1PR08MB1098.eurprd08.prod.outlook.com (10.166.87.144) X-MS-Office365-Filtering-Correlation-Id: 63f15d9a-865a-4043-e15e-08d3693daef0 X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB1098;2:Bd73pReO+3V5pXX5ornm0tNdvkPfnpJvltLaQ71m+8ThGTsWEqP+Mszlmci4/wAfrDcWKBo6eIIVBQCpkwsEWRGRu7y/pZB4wVVHmk03l2ROapQa00EpbIcK+bEMig+Ia3+Nu6nkR6rIZzGFHdjAs+VdFQJ6wAYTQFhNaO59m7CiISg/lEyXfNEAf3NAsuBL;3:7gjj8ab68UoM6qJqSaCoBb8RU6SX6A4ezT2Q1h4HnmhxO2fYIrn7aDV/cOm5ytzaB81sUN4sxRVDr9IlY7hrMwWL/d/9bTbAgF0d/GfPjlQP11k75QAXJFHkAOcpQ9io;25:7YtgQF3ql6FoDUeyRFOT0/aODOLKPIHH6P23NNwYk+Dq6EBhlEW/J1DjJSAHAPuU7iK6hGq8VhndQJwGgSj+f6qiqiKEiRrY0KKVp8akLaAckbM+IKZNRn9+fi5EgH60iHq+ZSnlL2MxBirG/g9G1mSQmqou4tDLZcy0zAIZhIlgtMYErKmgPjeQGRK6xtivLPtoMYY8unVJehnFhbkGQrAEzZV49+Y/dN0CAW8zz1w51VtYjdG2rYSj+XSvW3U3qRiTl/HxNQZEddHKMQb/LFS6Mn0UFrWissh05oR0JPLpoDo8sLEOBMskQoH4VAlulTYL4vEuYkwT1Eu/YeWZPQ==;20:TWfWchagdrLaryHSAXd0w9dxFEq1B7eSflKAAofJgbA1qe93SXiGIF8tX2mnYR7eGeEyNmKLL7gqTWUblryEcHMxiQHIfswrL1X5xGvbXeN3eyn0r1B0UkrCbzYg60deZy1W/AYTkQBUiHOUtuSojYgI1qyE7p/FOdCnYkyj88w= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR08MB1098; NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101521026)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:HE1PR08MB1098;BCL:0;PCL:0;RULEID:;SRVR:HE1PR08MB1098; X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB1098;4:pXnxZa/vHyH3CSqfjbf+6ilsfknS1MylsQ3PbWVROgg4jy2Lw+m07f9ae8FMC8SP2cFAIPJEOYp7LReGGe2Mr7rsZpB6fymLnpWd9YJnlZnRM5V1hdVRfO/nqS/rlvD+LeZR7LkMgtLUJtYmEtd1Rue+/bdDqnbbMlM1tG2xKSdxlZ4QlnYik+fUigOQliHTrGUKzfke9lj+G/miFi9QavbyPX6wLxmVRHIdIExHF1oHNg6vEEfI92/nd7Z22N+DzeoKvEdKxneBYHnmRcYA1nVcR5876EkOmutuWQXnTjPLmZsEKJ1juXBJNf/PdyGUq5iZVc/R80V4uFN/aFoW9EUkAXQ5cVp3JYfbEex/G6lQ2gfIuIX4Tyks9Rgh/5t3+btEtRgQ/qu/xYB2iXEosg== X-Forefront-PRVS: 0918748D70 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(24454002)(42186005)(33656002)(189998001)(4326007)(2950100001)(586003)(2906002)(5001770100001)(5008740100001)(36756003)(1096002)(5004730100002)(65816999)(54356999)(50986999)(76176999)(86362001)(47776003)(66066001)(65956001)(65806001)(92566002)(50466002)(4001350100001)(87266999)(77096005)(80316001)(3846002)(6116002)(230700001)(23676002)(83506001)(81166005);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR08MB1098;H:[10.2.206.73];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4TUIxMDk4OzIzOlFkYzBYTDJOR2dQTk80eVZuZ1ZWcXRuV0tX?= =?utf-8?B?V211KzRmMnJDQS90YXRkUW45MGt0MDc0K3RNaUlxckU1NTM5ODY0Q2pwNEZS?= =?utf-8?B?UXhuUHppVmsxVUJtdnlpSGVuSUk4TzZ5eFhGQ0VUVXYzaVQ3b0I5VWpXUktP?= =?utf-8?B?UEYyanMwMzZLRThWdUJmMzVZbEd0VWY3TDVKV2JLSk1HSVBQVVhxbUJsNHBJ?= =?utf-8?B?OWFrZ2daYWlibi90Q1NyQklzNEd6aGFMMVNWWVg2bEVROGNQTlFwQmZHdzBa?= =?utf-8?B?aVBkMGlnNzB4djJrdXpyblcxYmtyVlNUMHdWVEZ2MlBTd1YzaUU3NjAyVmFj?= =?utf-8?B?ckpBTE1NSWpmTGRvOGVhNWpDb1JtVVhqdGtDTEZGbnBsL1E5dHFrVGltQ25X?= =?utf-8?B?cmpTK2RwT09NSHA5ZFpmb2U3TVVTRDkzd0MrN29NR2dubEFEVEdNT0tCVWtm?= =?utf-8?B?SlBNWUlJcGRTMTJlVHgwRnd0RHBEb0hwckQzaXVUWXhVNGxPVndIbE1WcHYw?= =?utf-8?B?SlNHbzVmV0h0bThzdzBLWVdldWNCZjB3dWJZVFJMNGRGL1I2RjlVZ0NYOFhv?= =?utf-8?B?ZDVmUTh4YVNCMm9JNHNpSzV3WmVsWTB4TmkybWxZZk5YSWJaVnVmMmNZNHRn?= =?utf-8?B?bkJ4M0pDOTViSm5IR2hETEZDZmtHZWM3TDFPSmxMNVFHdC9TaFFPVnBUVzlx?= =?utf-8?B?dUtraC8xTWQyTElEUi9rczVrSUU3VHBmd2pVaUExaHlHUGpsMHBhajB4WTlF?= =?utf-8?B?YzVWY2xIdmhlS0xnbEY4YmZIQnVEb1R6QnRyWjVLZHljT1FjMHg1QkhkcHpH?= =?utf-8?B?a2cxMkxGQUVZL0VIc3drZWVURVB1ZmQ2R3RHMHVlMGwvbUFiYXFzMjIyS0sz?= =?utf-8?B?Z3RTN2hIVFpXZ2VDSkpva2hMR3pjZUVTTU9iSTdLYW9MTTFTVFZBRmpkVHlS?= =?utf-8?B?NmxlOUFySGhFemV6QVlVWitBZUZTR1Z4alZyWUc4d2J0N3h1b3preFBvbjJY?= =?utf-8?B?SitRcGlyUVZVYzZpWkZIY2FvNGptWTB1NDZvTExRQ1VVZWtKdk15eGFiQW5Q?= =?utf-8?B?cms2MDZiSEZQN2tkbzJFZzBxWkUyYUlrcFVVbmVXUWJnMTdyUk1KQ0ZQUXFq?= =?utf-8?B?azh3Z2hQU0FqbXZhaHFlc0wxNmRlS2UwdGF0aSt3aGxiaEFUczVEZGdCS2gw?= =?utf-8?B?ZCs4V1Z1eFFYNFFHR2dRK2d6NmcwaU9NZkI2SHFCcmlqSGZ0a3dpeXVaSEdj?= =?utf-8?B?TzFuRkdVbVE0a044NWsxc2oyTW13eElPV1JGZkNhSnFOcnR0aGJYUVdsRE4z?= =?utf-8?Q?1axbW56jq16fGtFMTijpQ3OFn4RJSX5M=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR08MB1098;5:LxgWUg1En0SWGKFFmTaYMNskTHV4Cvxf6fVM3B2U59RjFo0EgxA+haRJDA1xTg0NOH0PXs91Kn0oWz+vWWurT0rKXzM6+eVSR4+eP5dtrWL8JjRPU46b2+I65yhA1Rh1cFSugATqa7pSEN3Xl20KRM4E7jVzdM6aqdCGpW9AChGpe6FNP66iRoOAIIJ5MdZJ;24:hjkHQdzDNgmFQ/FvWlR4hZqtX3jCpHceZDD4CWJhpdyVhplei3kbTSyR+IqYxkC4y2d6sjyA/q2XXnkyD85eciPDAafKKiw3muIp44oySIs=;7:FNSkFey/31xqfo/C9nqeMORAsXLlD95YAZRZAFEPTKdDFph3ggtl8BB19sRFXxDEtBurQNTXd67oidQNEyl4Tw81BTxsS/RAyK32IlTCjxf8RcKqHLmgP/XopIYqaYOJUqNrs5rnXk5CGO6PVPj7x3bosBcNUWvpqCNzVzAxmPwPeaZqFCpzH15liOm2QpjVAnbKeQNAN5EZeAqVdStlseWpbor3yX8ODDajD78QUZQ=;20:Pe7Tg9uZLWq1lEZQVccYv+Kb/T5gP+EGGL5QpuwDnK8wQyrxLHnv0Y+vcjGXZ1pIp1Cgfqr60L3ZqXV59AdEYGAuFF13ghgpAiFmvc85+c5JkxckiwoMTCApVZ9Bx5yRmPSh34EJvYcCoLQCrFRddttyMQ5AL01atsQ8HSh6ZVU= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2016 17:03:23.5971 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR08MB1098 X-MC-Unique: vxUVvU8BTf-jvNoIEdEh2A-1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-SW-Source: 2016-04/txt/msg00494.txt.bz2 On 20/04/16 17:48, Mark Thompson wrote: > --- > nptl/pthread_barrier_destroy.c | 9 +++++++++ > 1 file changed, 9 insertions(+) >=20 > diff --git a/nptl/pthread_barrier_destroy.c b/nptl/pthread_barrier_destro= y.c > index 92d2027..d114084 100644 > --- a/nptl/pthread_barrier_destroy.c > +++ b/nptl/pthread_barrier_destroy.c > @@ -36,6 +36,15 @@ pthread_barrier_destroy (pthread_barrier_t *barrier) > they have exited as well. To get the notification, pretend that we= have > reached the reset threshold. */ > unsigned int count =3D bar->count; > + > + /* For an initialised barrier, count must be greater than zero here. = An > + uninitialised barrier may still have zero, however, and in this cas= e it is > + preferable to fail immediately rather than to invoke undefined beha= viour > + by dividing by zero on the next line. (POSIX allows the implementa= tion to > + diagnose invalid state and return EINVAL in this case.) */ > + if (__glibc_unlikely (count =3D=3D 0)) > + return EINVAL; > + this case is undefined behaviour in posix, and i think the best way to handle that is crashing. (because no behaviour can be portably relied upon) nowadays posix says "The [EINVAL] error for an uninitialized barrier attributes object is removed; this condition results in undefined behavior." > unsigned int max_in_before_reset =3D BARRIER_IN_THRESHOLD > - BARRIER_IN_THRESHOLD % count; > /* Relaxed MO sufficient because the program must have ensured that all >=20