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 E37AD43141 for ; Sat, 21 May 2022 13:48:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AD06E68B457; Sat, 21 May 2022 16:48:51 +0300 (EEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074012.outbound.protection.outlook.com [40.92.74.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4D6B168AF3B for ; Sat, 21 May 2022 16:48:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b1vDWiRKMQ2nx9zB8QLQT8F5S42lxH05izPPobrehQqF7thorrkfFL8Y2vsuEyVYLpEp7gkyQkMDDWQ/e2TA48AS0x/DPw5+KBhpZm0w/OCIuv+MCCcND7u27i32N3GW6xwYmig2UMq8KKbzF2QP13u2r9BzYHghuZKdxbPLrh+TomMB57IkZ5DsyrZaefNDsMB/OH25l9Whn3EwHiooflqZvGXHXIcbtGZE61wGeMutssqNF07MR5f6ciA4Im0zUxULdQgIUElYonITA6GEbMysqlLjhXVviotRIT0kOX9X+UlZkvwYJp2gexQBkUb/cGiXQy7ZET3b0ffgGtvguA== 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=B6VxliMjq1Gwk4/lfSg2NAI0yD7dRkLnDaxIAcOJvr0=; b=h5SG8V7+ffmcuj7yFoqouqOC/xxgxuRkwOVIVUizFLpmVqxFH1Yp0mZrFrSabvVVy+nOi0+IAQdMr+qxw/NiD3HcOjVjXXLYuIkNTkPzxHC8CEq81W4RmR2kZlWHKilC3JzBSHL6e2/1uWOHhKy1xO1qGHUw1ROFbNuw7ud1e5XH2FC5Yu2BCQCK3puGCogyCo4L6TEGle+tHeaZno7OpwbPo3EvcUS4o0hoTDuxsJCI0/Gzczdr/5AjpL8WD0GF56jClSMS6aNuj9sRfaBa8zn53Ykmw8ONCnbmezv6Hg035nJ1GdHtJuZ7UY36VbkL/7kf7pi6RUXEYS6y75dFCA== 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=B6VxliMjq1Gwk4/lfSg2NAI0yD7dRkLnDaxIAcOJvr0=; b=nqjULjNy2b01ptfke3seOINn5RamuQvsNsP+0aDP/Uf/d15JEXs4+wDM+waO67NIkufzCqZJofBPTpwGMRi/gmRpXh4ChVa4JNBN+5KUmqtLOd3nLVP7kDf3VCC+4OmdbUmQ4zkeinNGEWJBStYQJQ9rhZBhVx0ZAyhauCaf0g3jpHN3xoNJr+qvYaVbGYFuJ8IWbpXLzAr7PCr+2zY+P78fyFxwj7re9LvPehSrIFLKZSI3jLSzsVVC/d8ofYtF/xk+av+c9YJDp/VntjWDPov9GPcx7vJL8pGf0Zff4NLpBPyfrkbMnvvLCrJDHudUxdORDr+YzA3jMXpfbHh2pw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AS1PR01MB10271.eurprd01.prod.exchangelabs.com (2603:10a6:20b:47f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.20; Sat, 21 May 2022 13:48:42 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5273.019; Sat, 21 May 2022 13:48:38 +0000 Message-ID: Date: Sat, 21 May 2022 15:48:36 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [wwTTkYh6oTOrdI5SNoVgg93UIXfUhMOU] X-ClientProxiedBy: AM5PR0502CA0003.eurprd05.prod.outlook.com (2603:10a6:203:91::13) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <37df206a-024c-aa02-817e-983e6e8167fb@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5e2bfadb-ecca-4db4-6782-08da3b309ba9 X-MS-TrafficTypeDiagnostic: AS1PR01MB10271:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PoqhshrU2kd6AHdjGXlIxqldGMyZT37hbVcDlpUgea5E+Z0/gkQeUhmfuJhqneY4sT1Rgd0Q8txWJbdDWy8l/3pveAJRULj6dY0xjcPgITPE3mF3WaQFinR7U4l1RbNeRZb1agybsMtzXCRO55bc/NVgM3j/mLxSh3CEKjUWIbhwoYUuUfThuIeUDKGyAxAClL1ZIrdiDfrURrp7TLDIgKQNP6psmyzXhIGAEmSUMfjNuJI7P88ZcmXEGs6F+tuxEvHSny+52fcElaVSu1dN64zIS+Iltu84xLXsUs83HFvTAEVXD7WlWXAtJyZcJcr6gjQuWvYb7pMrE9cIaXfpstoUcs4bLNQwvggxs5Umzbn6ZNg/p5VR87e0tgbQ4f9lwufghmV5Kb3tv3wrrvxnhxi/hvzh9aGneh9CCDpocz46brIVd1jOHZKT6lzdq+XjiSvsWRmZGvPYloeCfzKt4Kze7kG8ZXErPmJ04TO145vstUvPiWVxuRAPLvFbeDE50FY9o3rb6hpA/9j6DZrU3IterxafxS2Xnun8WRQ09wiFg26PGb3qnJZgjTcJqN27O9ruFP+Y9OPvX2VQJii6RA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ckJQQ3FBUGR6L2NKdWVLWmpyblViNWhJSmREQ2Z1MnJoNTd4V2VkM0IyalFi?= =?utf-8?B?RTFpUFVuVFdJMlEybEh0R1hWV2trb253V1VQa1pzc1ZOKy9DM0g0VTZiYUFP?= =?utf-8?B?OGc3ajRFZUJDc2dtU1FKamNpSmtTM3FZN3ROUFVPZnU5UDc1Z3Z2ZWZjZGF3?= =?utf-8?B?Z2tta0tFNU1IQ2dCSnVnMzRwWEJwb0VreUt5WExaU3hVUm1VanV4Z2RCb05H?= =?utf-8?B?eWpnb2V3aytNYUpyWWNVV3ZpSlZhR1MxVDFnRTN4S0c2TVBPNjQrZ1VwN29E?= =?utf-8?B?STZMRUliaXliVVJlTnpKODVLaVd6L2wrZG02cTN0UFExTStWTWwvOGZOa0Fm?= =?utf-8?B?NDRvK28xdFlDMkJPN0ovZU92dENvKzFhQWdLYmY4UUJxTVpEcVM2VWlDUUJY?= =?utf-8?B?Z0tOTHdWTTdrZlN3SEQxMUNLMkRYa0thakF1UmMxaXp2ZHI2UEtmeTkwaTdm?= =?utf-8?B?S054RUVVeGNMTDhMaFZPd3p4SlhpOG9xQWF6VUxzbHpYamVuREt1di9BZTRk?= =?utf-8?B?bzBXU0srMHhxeC9WYmxUalNNaHRIczZjZFhnWXlJNk1JU2hBMVluUzFUa3Fx?= =?utf-8?B?YW13NGVVNStkcVVJT01SWHR1ZGZJT0N1bjhhNnJXNk5XN2p6MThZWU5BVHdy?= =?utf-8?B?QjgzcjlkaklSZFRpYzVQdGpJYzFOUVpLa3hIbisvT1RHL0k3NE9IWG1weTZj?= =?utf-8?B?M3pWYkExbndVbUo4aktEYW1qeHNHdGhnVS9LVHY2TU1ObVBpTERXNXlPTkJY?= =?utf-8?B?ZmQrUlVDdnRDM3JaZjlWd25tSkF5cDI5RzNEUE9MOHRSZUxuaTBkclFYNXk2?= =?utf-8?B?L1RBNzNLaENkUDhDc0tGWW5uTFhiRWtWblhTWDFLVG5EMTN1Rm9ibUFqWlRk?= =?utf-8?B?V2ZqMTNLc2E1SGVGWW40QW43dFRhclp2NjZZWEZmNUdiM0FjNy96NWNCK05D?= =?utf-8?B?M2dMdzgya1BvdDkvVjVObVpUNHR0RXdIeXpMSDgzK1lxTjF2ek1BRzJ1TVNE?= =?utf-8?B?M2M5MURsc0dUcDZlQTcvRUE1a3hXdnk2MWlxbzR4dWV4ZEZqb0RiZDM0Um9o?= =?utf-8?B?akVZbjNRQ1hLUU50TVQxOFZDeGxDNmZhekFoWEJYOUZiRFBybHNrR0ltY2Vy?= =?utf-8?B?eUxSTjZGNlNnRWNhbnZ5WTZzU1Zmd2xrUVVaY09uNFNmRHp0Zmxra1NndEg3?= =?utf-8?B?K3M5Y2wrZ2t5TzB0MzhTdEZBNlNKcDRUT0ltdjdVWlh4NGZuWEM4dS81SUpG?= =?utf-8?B?K0xDQ1I2UHgrcUVSS2xWeVBXNVc1cHpNWjF1VTJNVXpaTmM0d2Y0N1BTaVAr?= =?utf-8?B?QmFocU9zMVp3d2lZRFhIRDhKLzNqM29tTlVYTzJJbzJ1N2xOekFHNzFIVE9H?= =?utf-8?B?amNEanhoMlRKTlZ3YVlabUwyWVdIMjJKcldWL3lHK3NEaVFCVTM2R3hXNDcy?= =?utf-8?B?WisvUk1neHJQZ3BxTjdMMVBpQ3NaZTY4YnIwYy9sVklIQ29FL0g4RTdQcEdZ?= =?utf-8?B?WWZjaXF4L0RVRzllN29FdTdDaHAzcDdoVXdOb091RytBVW84SnNRWDl3K0NO?= =?utf-8?B?cEd4a0FXY3IxT25wbWtZaURTSjZlcENGRkpCSGN1NGY3NS9scGJzVW5SejIw?= =?utf-8?B?dGVUei9la2ZyYkFROWZmOXErbyt5aVZWOEpnSVFkbDlEd3hqM29rbEZuRDBr?= =?utf-8?B?bTd1Nk0xeENyVmZHa2g1VWROQlg4UjBtZkJNM25LUXdUdWJYeUNsbm9iaTlV?= =?utf-8?B?ekJHaEYzZjliNDYwZW9BZzJhYVhxdmM3RmdtbUxyYWFxMFFsOW1hL1hFaGxv?= =?utf-8?B?bkhGTFpBTm5scEN4b2cvZzJLY0s0bVNtUi9aQis5Y0xlcmJJNm9sdjJMRmZW?= =?utf-8?B?anptNEVRMkpFTS9aUEpITmZQT1VPajVuUWtXelJhOWQra2RMVXUra0R5Vk5V?= =?utf-8?B?ai9WelR3NlJhU2dkTHdJOUJ1NC9NV1o4QWZ5MkVaMVhCT01HL0lUVlFVUXhS?= =?utf-8?B?dDNaMVVjcGVRPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5e2bfadb-ecca-4db4-6782-08da3b309ba9 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2022 13:48:38.5823 (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: AS1PR01MB10271 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/pthread_frame: Don't update the first thread ctx before freeing 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: > Currently, ff_frame_thread_free() uses the last worker thread > to updates the first worker thread via update_context_from_thread() > immediately before freeing all these worker threads. This is > a remnant of the time in which the first worker was special. > (E.g. the first worker shared its AVCodecInternal with the public > AVCodecContext.) > > But these times are over (none of the uses of is_copy matter > for ff_frame_thread_free()); nowadays the only thing that > update_context_from_thread() does is referencing a few > buffers/frames and replacing them with other references instead. > These new references will then be freed immediately thereafter > when the first worker thread is freed. Ensuring that the code is > free of double-frees is achieved by using reference-counted structures > (or in case of AVChannelLayouts: by giving each worker its own copy). > > Some archaeology: > a) Updating the first worker thread from the last one used > has been done since frame-threading was added in > 37b00b47cbeecd66bb34c5c7c534d016d6e8da24. > b) The precursor to ff_mpv_common_end() checked for is_copy > before freeing pictures (i.e. it only freed them for the first > worker thread). > c) Commits c2dfb1e37cc72bf144545c4410a4621cbff5c4b1 and > e33811bd2686411233cb0eb4a4ee45eb99d7e736 modified the > update_thread_context function of the H.264 decoder > so that it could fail before calling ff_mpeg_update_thread_context(). > d) This led to a double free/an assert violation with an H.264 > sample for which ff_mpeg_update_thread_context() is not reached > for the final update_context_from_thread(). Commit > a6e4796fbf0aa9b13451a8ef917ecc4e80d1d272 added code to fix this > sample. > e) This issue was fixed (even with the last mentioned commit reverted) > when the H.264 decoder was deMpegEncContextized in commit > b7fe35c9e50e1701274364adf7280bf4a02b092b (merging commit > 2c541554076cc8a72e7145d4da30389ca763f32f). > f) mpegvideo.c stopped using is_copy when it was switched to refcounted > frames in 759001c534287a96dc96d1e274665feb7059145d. > g) 1f4cf92cfbd3accbae582ac63126ed5570ddfd37 removed the init_thread_copy > callbacks; now no FFCodec.close callback checks for is_copy at all > any more. > > Signed-off-by: Andreas Rheinhardt > --- > libavcodec/pthread_frame.c | 7 ------- > 1 file changed, 7 deletions(-) > > diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c > index c667706206..8faea75a49 100644 > --- a/libavcodec/pthread_frame.c > +++ b/libavcodec/pthread_frame.c > @@ -714,13 +714,6 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count) > } > } > > - if (fctx->prev_thread && fctx->prev_thread != fctx->threads) > - if (update_context_from_thread(fctx->threads->avctx, fctx->prev_thread->avctx, 0) < 0) { > - av_log(avctx, AV_LOG_ERROR, "Final thread update failed\n"); > - fctx->prev_thread->avctx->internal->is_copy = fctx->threads->avctx->internal->is_copy; > - fctx->threads->avctx->internal->is_copy = 1; > - } > - > for (i = 0; i < thread_count; i++) { > PerThreadContext *p = &fctx->threads[i]; > AVCodecContext *ctx = p->avctx; 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".