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 786D747597 for ; Tue, 12 Sep 2023 13:10:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6115B68C997; Tue, 12 Sep 2023 16:10:08 +0300 (EEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2014.outbound.protection.outlook.com [40.92.66.14]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 068BE68C8F3 for ; Tue, 12 Sep 2023 16:10:00 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iJt5FHhxQ1Z/KDUcAb2TkBB2eAlZxb090A0GuB2obhpaU88AyA1bcFaUyTf/FcxyNChrQYVqMhXXzyLQRc4qNGGgC4JUCflXchm+5wMufqMsq+t5f8IPXBwzf3dqSS2eySfDmGQQtSXvyabwGTvbs3plMgmNCmuQc83WICf2o1DE5w63Qi8Pnf98fWLcWxcsKL5M/KYeu3BtVu0vFNw46zrYmad3c8G4IISmcXUg5e50yr+Y89sK0BgTItlUoA2PYlM9fqNbjq4y8BFfnejAh19L4wxcPe6+D1FlJtLJcIrVX1id44S+3Nxx+dXgZ/kOuH/xtVwd8KuKvuecED+Bcw== 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=VvS5TD9w3lc19DnVlu3FXN4o84InCmZIy/JRst10fWM=; b=Hl+RlxV26nsukEgqh1toxCGLu7rkszHBW8qwrwTrUrupWq7KgjfV5Rd5bOeIVLoN3ZsggOEPr7xQT+IqRpMbvVSH7mueGJMeCTaeJH7nsv61A5ZgV7v+zcCycWHbq36MBbqUgvae//m9dcgH7MPQAGYl6CdxSSCuTkUB2jZuF0yub+umQeh8wz8X2tCS7Fx61UaG99S+UMcP22M6IdeG1pThEwHI0OZYQHQdRRsQbqZINMDruhs50JYTAXYENXxOVXscUtQCFtPnaRIDPw/SERtmEs2Qb2sTLOzVT8cXzF1tBluO8mY7ZEK18DAowIwFmVns2XkAm+e7LZvGUXdjgA== 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=VvS5TD9w3lc19DnVlu3FXN4o84InCmZIy/JRst10fWM=; b=kDOLL27Vk645n9oS3znJx1WKxynuSwKOPqz6SZrGT6qjUWsJXcWwD7d63LozwnjTF4Jc1KfGrZkSqujeTfV1DcgLFqeGr+KGRpqOdephBQflpDIMP0eOwEOHDaHQ85pwN1XXiT9QWgK9uR/U3P4IAR2+tNN6CXbbjUeD9PK/b3HQjufyvwR+evjzGbNO92YPGfWmSxfiwMzwmmtOwdMRNx/ILOuYinMWey9ohla+k6+79/zPrSCa+ownY02qFOmR40Ohfisk9qWyLdgsHb4Opjxoi4YEzk6lV9qmB9AqyGb9HYj6jK/uB8kWV0SKiB9jKfNs2oMpZV2R1jjnZAMt4Q== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0170.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:321::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.35; Tue, 12 Sep 2023 13:09:59 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6768.029; Tue, 12 Sep 2023 13:09:59 +0000 Message-ID: Date: Tue, 12 Sep 2023 15:11:16 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20230912114015.59937-1-thomas@gllm.fr> <20230912114015.59937-3-thomas@gllm.fr> From: Andreas Rheinhardt In-Reply-To: <20230912114015.59937-3-thomas@gllm.fr> X-TMN: [RFI2L7lt0m2TE+rG7PUV+7HR5B6SHgPD] X-ClientProxiedBy: ZR0P278CA0162.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <636df72a-e50b-d4ab-263c-31a9e5e50469@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0170:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ca9e757-5e84-4681-76dc-08dbb3919023 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tPcsnnlWAP9IaGXeiLZX+Nb77QSIL1FCkqCDsaKBLViLUJn+ZegDcLH9/dD6doGfrLMZAZ4u3mpz2JbIA10v94SdL0EYg0GPpybai1Vz21AkHI6maaU7QI92q5KsYMkQfw0fw2SjhEeBOlVMaR/hDY9eiSQsksJ8Bfq73s501DNPAaBTWvs67jdqQfO0jkreI+1SQN4drFT4kEl+XacwEUTOQbIm1pFnTJCZVvi1k1RqGSJ3eia9ESyphY2xT/YshcEKa8lV49wrlNGFjAWWPuwf+mxPjmJAn6gctyRVvuN4Y8iJKE2r7VyNlHx57cJeRHcUYNnHRWEbeHtH8uJ9A6ZFJ/2k7QxM3R4z976fCVGmWrpGgPSNabYSUbIQREbiElXPbVD23WFqeb+brJtuZfAlN4MFoDMBW3WX+T/V2d/DxG+K3BmrNTYsxb9KfsQkx/Xj/u8gHNl8/iWhSBcWBMdjYpsrq7C9b53Ft+F+t+yoMYDE3eC/MTnMdnz/c1z/ORwcWXI3K1Lmpbkw/vs3NvaPkF4h5IHGIleVaqGHmYbCytA4TITihYpuJgsuD7Un X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eEFYMzZEalhtNFB4NHc2amlqQU1oeGEzNkxHNUh2S29kYmhKRmxDVVFhbXBU?= =?utf-8?B?QUd3UXh6bkFTVDF3cEoxSlBtTzViQ0ZPcGRPMGJVM2twMVZmcVR6bktUckhW?= =?utf-8?B?djZWQUtiVloxT0V0akZZQ2FxM0k3NmUwNVdZMGVJTGtsM2RCdGhhRXVZRWhF?= =?utf-8?B?czd1bDEyb2lHblpORHE5YloxYno3VlFMYWV5eUpBSVFyV1FXT2JzN1ErUHlI?= =?utf-8?B?MEFaWExBYXVuSDRySEdKVFZIUVRweEdUOHhTcDI2ZjB3bEx3UkFkVTdJQkZh?= =?utf-8?B?VE5RM2hXTTFiZ08zcGsza3FRdXJ4Zm4rSnVjajJlbWtVc1ExTWMwLzJFRkFy?= =?utf-8?B?clF1akxTaW9Lb3BZUEtMNFVpbUU2QStCaHRhcGtMcTRUTWhsSGxjZUNObFdD?= =?utf-8?B?dWNLZHVRZ3pmTS9vK3B0TVlMT2VhTDBDQjU5b0ZkQ1E1VjdjRDA4cVJKdktE?= =?utf-8?B?Q2thRDBSM09QZGxBaU1NV1k0RnU4UksvY0wwRVVYT1RvUVNWWWtXM01DQWlD?= =?utf-8?B?RnpnUE0yalJXL2Q4bHQ3UjdxS0N2cjJBREUrNHpydTU5Z0tNSnJ5SkhSajhw?= =?utf-8?B?Zk5jK21CZkFrd1lpY3VPc1BXcFJlSVVOZFByYmZLamJsek9LNSs1ODRpUnZl?= =?utf-8?B?RVMyWmxYUm9RcVI1QlNiRThkdXpNU3NBK1JxQ0lRMy82ckRNQ0hvRE4zdHZR?= =?utf-8?B?OU5ia3hFd1JhSjJBWERoTDlvelF4SVlNZTMvOGQvZDNScGNvdmNrR2p5ZXUv?= =?utf-8?B?ZWlaTTNRSFg1OVRuVllBVDlXNnVJV1BTanQ4NlZCSmJJa1lvaWZHZlZsOEUy?= =?utf-8?B?cm1PdFh4WjJJMGhZUXgvOUVmT2pWQXpaT041MGZ3cnFZY3hMNlorakREYzRu?= =?utf-8?B?cjB3ancrQ1VmUzZ4ZEJxKzF3SXVkOGlZVzExcTJUcGNrUzJqN0xkckpQK0xC?= =?utf-8?B?SFhlR0pISUhQRmpkVTFZZGx6ZHdrd1VwZkpaN0JielNNMGpWOTZqM0s3Ym5i?= =?utf-8?B?SmZmYml4c1Q2YW1Rd0VJdkpOOFc3NmNidFZSRjZQNUp2WklaWmVUbHpxeW9J?= =?utf-8?B?MFZXVloyZTJrUmpQcXFPdndjQ0RnVndDK3lZTDlEejRsMmlHckZqeDB1QnVm?= =?utf-8?B?MU1zNktHTGpjSkQ3aHR3QmZNTDdnaWVTVERVTzhlVHdPQ3V4OTZwTThSZE03?= =?utf-8?B?NUtkamJCSUo4cldKNGUxOFZUVmQ4WDBHQWtLN1RXM3pvL2hTdDRvNjJ6bEhF?= =?utf-8?B?dmMwMXZ5TTFNaWpVeFRFbGVET1JmVzhPWnY5OTEvRlpseUNCbGxTbjVIR04v?= =?utf-8?B?VnE1MkhYMFBzMDdjZ2RIVUgrTkZaemVuSjVHMVN0clM2dXV0VlJKVEo0aktm?= =?utf-8?B?eERobEU4OHI5K0VIUzhJRlNURDBlTEZnNVlWQnp6ZmFIQnV5b2dDaDhKZlNk?= =?utf-8?B?T3pKaG1URUkwV2xKSmZsd2xQRXNjN3pBNExHUlY4ZXpNTHJHaXA4M3l2UVQr?= =?utf-8?B?RmlJa0F3ajZoRW9pNWJDUlpob2VRZUZ3d3E1OEhPVEZBRkFySWxwMnVlNThn?= =?utf-8?B?N0RONzE4bW9GcENxZnlndmgrWXA5dmhmRFkwNnR5c2M5N3pnN3F6SkFXOFlj?= =?utf-8?B?SDZjaTNtdyswQ3pUTEdBajU1c291UVBRUWh5MExqOFA1YXgwK3pIV0k0b3Yz?= =?utf-8?Q?+kOm92CyTo2GsbxV3fXI?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ca9e757-5e84-4681-76dc-08dbb3919023 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2023 13:09:59.0732 (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: AM8P250MB0170 Subject: Re: [FFmpeg-devel] [PATCH 3/3] h264: fix data-race with FF_DECODE_ERROR_DECODE_SLICES 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: Thomas Guillem via ffmpeg-devel: > Same than the previous commit but with FF_DECODE_ERROR_DECODE_SLICES > > Fix the following data-race: > > WARNING: ThreadSanitizer: data race (pid=55935) > Write of size 4 at 0x7b5000009378 by thread T1 (mutexes: write M608): > #0 decode_nal_units src/libavcodec/h264dec.c:742 (ffmpeg+0xb19dd6) > #1 h264_decode_frame src/libavcodec/h264dec.c:1016 (ffmpeg+0xb19dd6) > #2 frame_worker_thread src/libavcodec/pthread_frame.c:228 (ffmpeg+0xdeea7e) > > Previous read of size 4 at 0x7b5000009378 by thread T14 (mutexes: write M610): > #0 frame_copy_props src/libavutil/frame.c:321 (ffmpeg+0x1793759) > #1 av_frame_replace src/libavutil/frame.c:530 (ffmpeg+0x1794714) > #2 ff_thread_replace_frame src/libavcodec/utils.c:898 (ffmpeg+0xfb1d0f) > #3 ff_h264_replace_picture src/libavcodec/h264_picture.c:159 (ffmpeg+0x149cd3d) > #4 ff_h264_update_thread_context src/libavcodec/h264_slice.c:413 (ffmpeg+0x14abf04) > #5 update_context_from_thread src/libavcodec/pthread_frame.c:355 (ffmpeg+0xdec39c) > #6 submit_packet src/libavcodec/pthread_frame.c:494 (ffmpeg+0xdecee3) > #7 ff_thread_decode_frame src/libavcodec/pthread_frame.c:545 (ffmpeg+0xdecee3) > #8 decode_simple_internal src/libavcodec/decode.c:431 (ffmpeg+0x9e1e20) > #9 decode_simple_receive_frame src/libavcodec/decode.c:607 (ffmpeg+0x9e1e20) > #10 decode_receive_frame_internal src/libavcodec/decode.c:635 (ffmpeg+0x9e1e20) > #11 avcodec_send_packet src/libavcodec/decode.c:732 (ffmpeg+0x9e28fa) > #12 packet_decode src/fftools/ffmpeg_dec.c:555 (ffmpeg+0x229888) > #13 decoder_thread src/fftools/ffmpeg_dec.c:702 (ffmpeg+0x229888) > --- > libavcodec/h264dec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c > index 24e849fc5b..b82ca8f14f 100644 > --- a/libavcodec/h264dec.c > +++ b/libavcodec/h264dec.c > @@ -739,7 +739,7 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size) > > // set decode_error_flags to allow users to detect concealed decoding errors > if ((ret < 0 || h->er.error_occurred) && h->cur_pic_ptr) { > - h->cur_pic_ptr->f->decode_error_flags |= FF_DECODE_ERROR_DECODE_SLICES; > + h->cur_pic_ptr->decode_error_flags |= FF_DECODE_ERROR_DECODE_SLICES; > } > > ret = 0; IIRC this does not work: The thread that decodes a frame is typically not the same thread that outputs said frame. The H264Picture srcp in output_frame() points to one of the H264Picture in the H264Context.DBP of the outputting thread, not the decoding thread. The outputting threads decode_error_flags will therefore always be zero. My preferred way to fix this is to allocate the H264Pictures (or at least the stuff needed by later decoding threads) separately and make them shared between decoder threads (with the caveat that only the actual decoding threads may modify them; and they may only do so in a controlled manner (i.e. no changes after having signalled to finish the picture etc.). But this would be a major rewrite which will probably never happen. In the meantime i will send an alternative patch for this. - 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".