From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 806C4406D9 for ; Fri, 28 Jan 2022 13:36:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6A4B868B0D3; Fri, 28 Jan 2022 15:36:07 +0200 (EET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-oln040092065075.outbound.protection.outlook.com [40.92.65.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3303B68AF54 for ; Fri, 28 Jan 2022 15:36:01 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FskQr7ISvGgN1giT1gssyHezbvfnutUGt61BMUkJzSfiZc45kua/C/5VQlZXGyjDrfWGQ3g2tQljkkWznBnY19KrA+R99VQuRcCZa36vMWITg0awE0Dh/7ysuYGNiVQZ43FddFB/CdNr/J2iDRzxbQMxOZ6ZzuRActuToxohn/9HORpp8Fkpmri2e52twyuvNz0j6jc2F7+wacKk2bPb+/LMtb2kO6ICG8px4G5O1T/Oa6kkRkjulqSo7jCAQhSo56sbvrgL1ykZGOxp7NloqcBrE9P/Rh0kySc4bncuGud4/+uzGUDFSN4vk9ase4kHtxEnaJy0ezy+1bXkOc9dpg== 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=moRy9VjUD/tJeWW2lELz6RGBhBLWTdXnLh11t16CBo8=; b=WLqgwgv32EX4UtRhyxvvU47LuKbq1vgF2Za5ODsSKV2NXQqkSBAww1qYL7wpYzQZT/kWbTE1n6VNauC3QMLBthXxOLWbNed3MXOlMLawabJZBaQYlhKNt1JMDc6H32BeMd2WabiX4kcLwnwXIXRXLrOoQBTwTzcyejqyYrL+d/bkcw7F6VoOoiUEeIKtDVWtZmnsZ0qMiY6pDR2yqqeT7bet9zFV7hmFoFJCDhztG90WYNLtMM4Ll0jzeMvLg85GJ3etz26Gre++rL1mZ9de3n8erbm4Lm+/osKy/Mk1/oSSwhAIjpQAq6Agent4DTaQbChT1Pl+c5NKiJjiJb2Lbw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=moRy9VjUD/tJeWW2lELz6RGBhBLWTdXnLh11t16CBo8=; b=Wab5WRiFkkUMu2i8RgvVEAuLo0fwqnmgKjW7CB7FlYSEtEnYKCyiemFwc4+e9umCGN3IAyePseJIY5YDn4NScxYnb7m67YXWrWiqdhGENP5VuNLdfy92PI3SMTTazn2dVzlO5r+5XUdkV7Uwfv0SaW/r2HdPX89/ttvFt8QQbwD0aK5otJ56tpi8na1FlzyR6dX0gM/b+QIasTJvcjFcN00R5r4wzBgAM0QpGYeDMQFm5/RDEbyNlVaVbOtzfwhb8eM8bopJ+bPD5/rCVYRiQd1ZR247nA1RZZ0sF0L/AjWUgiuBSyRsNziG75kmp9ll/nb2YTHx3IqneUKk2vPkxA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4631.eurprd03.prod.outlook.com (2603:10a6:20b:10::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.17; Fri, 28 Jan 2022 13:35:58 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%6]) with mapi id 15.20.4930.018; Fri, 28 Jan 2022 13:35:58 +0000 Message-ID: Date: Fri, 28 Jan 2022 14:35:56 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [nSOtPIC5miikVq3GRO5gTUX8Dn3aiVFK] X-ClientProxiedBy: AS9PR06CA0318.eurprd06.prod.outlook.com (2603:10a6:20b:45b::18) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <50f00420-381f-82bc-abe2-7d336cb9554f@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3fffc8f9-e5c7-47cb-17c4-08d9e2631dca X-MS-TrafficTypeDiagnostic: AM6PR03MB4631:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: b9HGlHI2OkC3xLCzF1j6DrZSPwEq1K5LcWvC1WVg5CxRzLRqDIuIUPDn/pKJdHNd1nF4WKiCwmpI2XXpZXGXB+KEmqZbhltlK66qA2dWb8yjQV1bGTHCy2hhkuvyh4nBoXMfrWX8TQOKo7dnTiS1NiaSsDc97OhvcMGA3J7mFqeajukNHlmHlWP1V3mzBu49+dbquv0ZOppIPvgpZnw78ZdbJWKcaLTvB/6lq5yTnmaCGILNMOG6DTEucEAoFbrHR6S5xJlSufQRsKbnZMgDgD9EF/UfkJoar7D3+5VjSE1UWiSeWZvG8rrl3RPugKtr5L/BTyP4xHT5qZSABwLkc0hbKgOwiDFZp7T18iTh0OoswhKXB9yigUiJt9CnhM771q8YPOExhdaHWWPuCiKx01reUNCRrm9HnlUD1qbhwyHfXGsvHmbIJcpmX7Jqj29o3DUggjeoydYF24f5IFHBXZ6aImpMwSHivSGXf4GXzWITLxUE/fmjEg76RQpH1q7NnaHe6E/Qh6k7thJWnNmFvAmitxPpWCp5PK0sb93+c474dKl+ckgFO9fl3bkTqx5i X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eGtyc3RDQm45K1hleURSN0FEanJHMFZyckVYTjlmUXhLUVVVR3dGVlp4akRY?= =?utf-8?B?U2dEcXppZzNRY0REMUV3RXIyU0gzQ3RaQ25IMXVXWkk0eHlOaHQ1OElzU0Vv?= =?utf-8?B?dTlldzM0YWF0dy9rdlcwQXBISDNZdmRlSGlTakV1ZCtGR3prUnpqVHZaZ1JB?= =?utf-8?B?T3N5VzI4VERrdzBQM3h6UUVtbkZlYTJ1S0lhNDQ4Z1VGZjhpK1AxWEJ1VnJs?= =?utf-8?B?aWFTeU1USW9Cajl3SzFGL2lvTnVJU2t2VlJaRGZ5YkVFRTJZMEgwMVVhQVpx?= =?utf-8?B?emxhOFlHZEMyZzIvSlptbG5iemROU3RPeXRKbHFXWERWQzJHWlpZNkRyQTd0?= =?utf-8?B?NUVLTG5HUnlhQmVaaWlwUXVhd01SVFlDYThiQ2pScFZEdys4bVVNY0ttOUt2?= =?utf-8?B?Nk1lTWZIZUZxbGZiRkhCUnB3bU9NdW9mS3AySkVMTkN2ZXVWSTNyRE9QRGUz?= =?utf-8?B?T0FuZGdxRk5FSGJla1pwNHhvazQzcWdBZ0Z4cGszTHZDL0VGTDlLc0NVc2Nh?= =?utf-8?B?ejc0RDNjS2ZFTkwvcDM4Yk9BcmVSWW16UFJjOFZETHRMMTlCc2lCSDgyNldL?= =?utf-8?B?VlVzdStuZ0FDYllHTkZmUGN5akhZNmVqWGFSY01IS0VYS1hkckUzSkRYN29L?= =?utf-8?B?MXhEbVFZZ3NHdVJnSFNCQnBlb2ZMbGdCZjdUcFhDaDB3TGdKMkVBZlIxbE5E?= =?utf-8?B?NWo3KzBIVGZtblFCbzhVSyt2R2RUbEF6Q2Ywd0h3RGNDL1AxS0laSmJiMC84?= =?utf-8?B?S0VzYXJhL0piaWpEMEoxR2RCOW9jQlVmazJhV3AyVUR0dzdJWmZybjJBeXlz?= =?utf-8?B?ekpDS1JVTHlQZ3prWVR0SHpXMlhrWCttVTlUMS9VaG9HbTFzZDVYUXJYeHZy?= =?utf-8?B?SEhxNmtGY09WN0ZKTk1LQkhqNzhGSjNOeXBibmVUNnhWcEZXNWJFNytmNW91?= =?utf-8?B?TGNDTXowTURBbUkwZ0FkdDY0NEo1WGYyVnZzc2FrTUp5ZFMrRHNBN2lWSWNY?= =?utf-8?B?RFg2VHNaQTVORlBZOGpYc3dhWnVPM1o2cG9XaHFlcFMxQVNraC83QmhIaGVR?= =?utf-8?B?YXlEcTY4MEMxaGQ3Yy9NNmZMTm5Cc0lPb2dyd2ZDWkZpWVdvWWJGaE9tYnUw?= =?utf-8?B?M2JNTXVtdTFjY1BhZitIR1NSWGpHME1zRFdwQ0VnbGNTdWd1aEZRRU16MEtR?= =?utf-8?B?eWVqZG9pRHRRb3FQSTFERUE0bUJiQmZzWk02dEQxNWJaWkRsMDM2T2d3ek05?= =?utf-8?B?enRCbDZ4dm8rN3JKbEsrQzFDWm5CeDc4UjBaUER0SXZQbDBYQT09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fffc8f9-e5c7-47cb-17c4-08d9e2631dca X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jan 2022 13:35:58.2196 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB4631 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/jpeg2000dec: Move preparations to main thread, fix race X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Andreas Rheinhardt: > jpeg2000_decode_tile() (which is run concurrently by several threads > when using slice threading) currently modifies some joint values > before doing its actual work. This is a data race that happens to work > because all threads set the same values; but it is nevertheless > undefined behaviour. > > Fix this by performing said preparatory work in the main thread instead. > This fixes the vsynth(1|2|_lena)-jpeg2000(-97)? FATE-tests when using > TSAN and slice threading. > > Signed-off-by: Andreas Rheinhardt > --- > libavcodec/jpeg2000dec.c | 23 +++++++++++------------ > 1 file changed, 11 insertions(+), 12 deletions(-) > > diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c > index 80b2e2d627..a7eb809f30 100644 > --- a/libavcodec/jpeg2000dec.c > +++ b/libavcodec/jpeg2000dec.c > @@ -2080,7 +2080,6 @@ static int jpeg2000_decode_tile(AVCodecContext *avctx, void *td, > Jpeg2000DecoderContext *s = avctx->priv_data; > AVFrame *picture = td; > Jpeg2000Tile *tile = s->tile + jobnr; > - int x; > > tile_codeblocks(s, tile); > > @@ -2088,17 +2087,6 @@ static int jpeg2000_decode_tile(AVCodecContext *avctx, void *td, > if (tile->codsty[0].mct) > mct_decode(s, tile); > > - for (x = 0; x < s->ncomponents; x++) { > - if (s->cdef[x] < 0) { > - for (x = 0; x < s->ncomponents; x++) { > - s->cdef[x] = x + 1; > - } > - if ((s->ncomponents & 1) == 0) > - s->cdef[s->ncomponents-1] = 0; > - break; > - } > - } > - > if (s->precision <= 8) { > write_frame_8(s, tile, picture, 8); > } else { > @@ -2537,6 +2525,17 @@ static int jpeg2000_decode_frame(AVCodecContext *avctx, void *data, > if (ret = jpeg2000_read_bitstream_packets(s)) > goto end; > > + for (int x = 0; x < s->ncomponents; x++) { > + if (s->cdef[x] < 0) { > + for (x = 0; x < s->ncomponents; x++) { > + s->cdef[x] = x + 1; > + } > + if ((s->ncomponents & 1) == 0) > + s->cdef[s->ncomponents-1] = 0; > + break; > + } > + } > + > avctx->execute2(avctx, jpeg2000_decode_tile, picture, NULL, s->numXtiles * s->numYtiles); > > jpeg2000_dec_cleanup(s); Will apply this patch tomorrow unless there are objections. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".