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 3462C4B497 for ; Sun, 7 Jul 2024 13:50:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 00F7868DB02; Sun, 7 Jul 2024 16:50:47 +0300 (EEST) Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03olkn2010.outbound.protection.outlook.com [40.92.57.10]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7408768D9C1 for ; Sun, 7 Jul 2024 16:50:40 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tne0Zn/RlPsH3J9YL66UG/44TeH5r+TqvYcWvCuO6sPdoZY3KxcfoFNbLWdq5sEzXV7VjQePmAwvNiZyckEyCk/cKdd9iOtCOAqYkyAgaXkkpj75E9pbfXwejtOAakbRb04AloCjUrX/+sP77TUvTr8WhELOFSJwcLjo5LGlol8hD05sbX8DOyhQ6KmSoVtsIuaGTg2O2deRCbhvINx27DlF6kDpwnDevGP2dszmEHFAo24l92/V2gw+6wye2WrxlxBSTlID3B2aT8QAJ8GVE7BTOoNqoF0BtHu34FiR62obc/vvkZetbXFE1Fyqp7PVZiG6E6eTyoelnG/phh7xVw== 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=NSFZ8iaBniOlU068jHaTtqI7XQif7KbpTjx4Cb7ue/Y=; b=ZwrdgVh4OglNP3h4/cvSw/ynbsiTQiqMxbZprEQGP3C77zrANuY7gYSPd5xifwZ06DJ5laXqiNLpOoKjGs1AgkhWNZ592Q86TlnCRx/77o2aPpkHPcgJZR8AVdW7GODKiFPjnFsZNjuxJMslnBTOqJw+Pv3SeeIFy0amJe2/sPwj1LEQLkmweSKCJH33EJ9GQ1X12FjEf3Q5iue5m2HCbrXLFDrfLD+UmPmLWhuPIesNhRkdo/RqiLQvbdeRo4u3uomtgfIw7PRCeH0dmVs+jWL84lNs9Q5ZyXMtizEmQ1pZONaaad5f1zcZLBDSEp/AHKAd8XB6J4/xzh1QcabK2g== 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=NSFZ8iaBniOlU068jHaTtqI7XQif7KbpTjx4Cb7ue/Y=; b=BVViy+KEoDBzx0gdiw1vlPvwW1j3Qf/FDSWxg3KzV319nAiHKQOkvGqQ7RneMZGzKdhM7Dd/xKBPmOAz8a0QpgJw9zZT3faUxMgRrnrqgS48nUGR5YwpvKfd7+Jm/yH5xDKY8TYYFg+hdvV58dgkhV0Pyt7wyPPcDBjG0r9vghVw1VGpNkipVc/WJP9apeyrTl5PEXsPYSR4LhtqTV648+bepL8gSq1DyvCOmSXdj72E7LETq83Hv4GS9Tbv6Zv7mQoEvMrme0kwmgqFy5JnNRFb9+e2Y9Ds3LG4c6qxviI39xaqkK2hoZ8NNq8I34qEawm2pexpk02eKuqMtPDOIA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0018.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:3d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.35; Sun, 7 Jul 2024 13:50:38 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%4]) with mapi id 15.20.7741.017; Sun, 7 Jul 2024 13:50:38 +0000 Message-ID: Date: Sun, 7 Jul 2024 15:50:37 +0200 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240707032511.2714-1-qyot27@gmail.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20240707032511.2714-1-qyot27@gmail.com> X-TMN: [BLz0fmLkm3FB1hu+P5o+GRVjEunSn1uqa4iAehKz3cQ=] X-ClientProxiedBy: FR3P281CA0034.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::20) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0018:EE_ X-MS-Office365-Filtering-Correlation-Id: 58230ce5-d01e-433a-8ffd-08dc9e8bc883 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199028|8060799006|19110799003|3412199025|440099028; X-Microsoft-Antispam-Message-Info: Fgar3Va+69fgBxnrJIfWHncGpz3CEll6/VCTp7T96iCj7vCyP/AnI4phMoVNMTTgRCqrw23AcnSkTGyiBGi/NrNKeOIk9B3kNq9UUWd+UZ2TJL69iovjmCzUnkTz2WUAozvijimkZgwPukBk6O1hVzLfo8DuLjVUINVLgxbrv+2xEeiJGrIvXnxvgBRRFU10Nvj5qMpSfPaR/ivFE0wVpmXkVuvff0tCDhFVnwF+K2yfoFhLy76qmkXw23XRHkemUNPc9bvJV5vPvyfPlzD2w6TaWXr4E2UQxneE1tDImJMTEzU2e7FfuuWiebesnCY8Ho0YD+ChTwJrKohW5gj4M450yQ1tczBdJAnX/7SSOV4jxHCJ0RLfhdD2XiGCREdPUsYprVsuZLo2bzWlSQvv5pEkIyZu7wqBBMQ9ma6BWCSgI09HSHGmUu9gKACSJx6AxrHBzBMzYSFST+TkaGeEQwVGwdfE0Bhoagp6HNdLEA4mbWJsCBYx2jZzTvYQ4D729LCZHDSFZS9qywElMyq4yKTxxpzkXScSPOHDH5VI3529pu8B9eckm65SrNxZfvJWGMC0KsRofKDUvIPn3evvr6YCuuGEJtemDMAT8CuQSSstt+1eO+Ru67OuN3gltJjj7QMKtTsiXODlBRyC/odgxQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TVhnQkpQU2NZSE94ZzNqU1cwcWFwOW1sMmkyV2pDc1dBZ0hQUUZIcFAyZVla?= =?utf-8?B?ZkNlaWJtTXd2YVdlTUVwcW9ZTFBJbzVaYnBveWFpdHJpMVp0WVdsWThTcnA3?= =?utf-8?B?SHJSNFJRZm5Ebkg4WGVqWTMrcUVRdnNIek5qQ1U3ajJDZnQzRlptZE1vdUlO?= =?utf-8?B?TzQzL09pc2NBTHErWXVlQ09hMklEd1Nvc1UyS21ubnVBdTVTWkF5RnZEazg0?= =?utf-8?B?bDV5NU9peXI2UTYzZ09MQUUvU2xvdnJlMDdvajFTTHZFT3h1Ym9sMExZcEN5?= =?utf-8?B?dndzYWVhaXlqTzJuK1VXN0hlSS9JbEJIZU5FSDhTV2lNSmhqTVhXQjdQUU9G?= =?utf-8?B?Z0Z0cG9Od0Z4ZjBNZVZMYzRBM2w3YTZHajJHc0JRQkFOeXlTNnpldUdJSWh3?= =?utf-8?B?OEFyTHNzTlZmUjI2VDRxeUJRZWhJUG8rZWplVjdXdExzVmlFVlh3TjlvV1BL?= =?utf-8?B?bTB5U2NVdDZHcVNKdW9BZWozcTYrR3ZDS2VEeURLSHZwRmFic1M0OVFob0No?= =?utf-8?B?OUcyZTJPSGEvOUdJUkxMbDJYb1dnSlJKVWhBRnJFdkZZMno2MWMrMDZZd2hX?= =?utf-8?B?QkJJc3JNVDhpbCtSL0RwM2JzbFdFcUxiOTdoeVNCSmE2SnNIVHZ5d1MvdEFB?= =?utf-8?B?TTZRUFZCb3cyc3hnbi9tSzJsUTUybmdGODFsS2ZiZ05lYzNyQXN2NVNaaUE3?= =?utf-8?B?SjFXMDB6eFhhNTY3S3hVUnIrNzhIMFcvYk14UTljdDhjVWZZSWwweFF3Nm4z?= =?utf-8?B?Z2J1RnR2UmhWSlMwMEF5OEpxaVJCUVZRQ2tXdUVmWTQxa3VHL0FUV1ROa2dI?= =?utf-8?B?QTdkMTdBTVRGNXo0K3VWZ09GREE4WDhBM1RsYndqSTJ0bUp4eHQ0SWZMNm1i?= =?utf-8?B?N2JrNzI0ZlQ3TGM2UHIvemdSbDF5SE45M3dmZU94cVBLZWkyZ1paTUN3dTI1?= =?utf-8?B?RkFvN2IrbytPcVlmUWIwYVRHY3R6UEJndk13djhvQXpjYU5lY2R0NERQcEVj?= =?utf-8?B?Q1dEREN4U0M2VGZsZUN4UnpLa1Z2dVlEMmhnYVVtY3NlYm5ySE12eWN5bU11?= =?utf-8?B?QlNobVk4ek9DYTNUOHF2UWc1dlBCbkJzZFc5eTFpaG04aTkreE5DTDhvZExk?= =?utf-8?B?RHNIZ3crUVllYm1tL0FUWWJXZ2VqZ3ltQVRRYUJJeDQ4S0RERWJwcVpXWnp5?= =?utf-8?B?NUVQTmRaTkozeERlSzd2djhDcnNoaDdKTDY5ODVhNllZNE0wNVFhdVBQMEdD?= =?utf-8?B?T1lmZ2tES0RsQUZqVjhQN0FUQjFMKyt4UlVTaWFJRkF4emlMaE1abzZMNDky?= =?utf-8?B?L3d3M2dlUGFUMGd5bXFaN3JWY29ZMmk1WGZrZVQ4eUc1b2RzSTY5WjBtRURi?= =?utf-8?B?cW5IN2pTSEc5YndBa1Nmbjd1VS9TY1ovWUpQanJuZkxObEtIUTdHaDdRVkx4?= =?utf-8?B?dXQ2WGxSMVRIVUk3elp3UFBDVWltRWtqN0xZZ20zRU5IZTU4ZGhjaDMwNzlv?= =?utf-8?B?ODk0QmY0dzNVQXBTcjE0VWZUUW1JMG93Vld6ZndNK1pkRnFGWm9EOS9rYXBt?= =?utf-8?B?c21kTmU2R1NvNVFYZXdacy9jTUtMM2FpRnNwdE04QUwzL3ZWTmRLaGNsS0Fp?= =?utf-8?B?djRUTXh0dk5waFBRUkpMemQ4SGZXY2tKN2psQjNuTlJtTXVUT0hPaVZpbWxB?= =?utf-8?B?RFgrcjhwMVpKZzZ5K0FRQWJpRXREVU50cTAzUzJLbEsvM0MxbForMm9BPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58230ce5-d01e-433a-8ffd-08dc9e8bc883 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2024 13:50:38.3613 (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: AM8P250MB0018 Subject: Re: [FFmpeg-devel] [PATCH] avformat/avisynth: remove atexit() handler 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: Stephen Hutchinson: > The atexit() handler in the avisynth demuxer was added because > there was a conflict in AvxSynth that arose due to their use > of C++ global objects, particularly in relation to having > added a logging function relying on log4cpp. > > This conflict was responsible for causing a segfault on exit. > It did not affect Windows with the (at the time) upstream > AviSynth 2.5 and 2.6, nor does it affect AviSynth+. > > Unfortunately, none of this was actually shielded by ifdefs > indicating the fact it was only needed for AvxSynth, so four > years ago when AviSynth+ replaced AvxSynth as the handler > for AviSynth scripts on Unix-like OSes, the fact that the > atexit handler was no longer necessary was overlooked. > > Signed-off-by: Stephen Hutchinson > --- > libavformat/avisynth.c | 45 ------------------------------------------ > 1 file changed, 45 deletions(-) > > diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c > index 625bdf7e3a..5d1ecc0bf6 100644 > --- a/libavformat/avisynth.c > +++ b/libavformat/avisynth.c > @@ -115,9 +115,6 @@ typedef struct AviSynthContext { > int error; > > uint32_t flags; > - > - /* Linked list pointers. */ > - struct AviSynthContext *next; > } AviSynthContext; > > static const int avs_planes_packed[1] = { 0 }; > @@ -133,15 +130,7 @@ static const int avs_planes_rgba[4] = { AVS_PLANAR_G, AVS_PLANAR_B, > > static AVMutex avisynth_mutex = AV_MUTEX_INITIALIZER; > > -/* A conflict between C++ global objects, atexit, and dynamic loading requires > - * us to register our own atexit handler to prevent double freeing. */ > static AviSynthLibrary avs_library; > -static int avs_atexit_called = 0; > - > -/* Linked list of AviSynthContexts. An atexit handler destroys this list. */ > -static AviSynthContext *avs_ctx_list = NULL; > - > -static av_cold void avisynth_atexit_handler(void); > > static av_cold int avisynth_load_library(void) > { > @@ -185,7 +174,6 @@ static av_cold int avisynth_load_library(void) > LOAD_AVS_FUNC(avs_get_env_property, 1); > #undef LOAD_AVS_FUNC > > - atexit(avisynth_atexit_handler); > return 0; > > fail: > @@ -214,30 +202,11 @@ static av_cold int avisynth_context_create(AVFormatContext *s) > } > } > > - if (!avs_ctx_list) { > - avs_ctx_list = avs; > - } else { > - avs->next = avs_ctx_list; > - avs_ctx_list = avs; > - } > - > return 0; > } > > static av_cold void avisynth_context_destroy(AviSynthContext *avs) > { > - if (avs_atexit_called) > - return; > - > - if (avs == avs_ctx_list) { > - avs_ctx_list = avs->next; > - } else { > - AviSynthContext *prev = avs_ctx_list; > - while (prev->next != avs) > - prev = prev->next; > - prev->next = avs->next; > - } > - > if (avs->clip) { > avs_library.avs_release_clip(avs->clip); > avs->clip = NULL; > @@ -248,20 +217,6 @@ static av_cold void avisynth_context_destroy(AviSynthContext *avs) > } > } > > -static av_cold void avisynth_atexit_handler(void) > -{ > - AviSynthContext *avs = avs_ctx_list; > - > - while (avs) { > - AviSynthContext *next = avs->next; > - avisynth_context_destroy(avs); > - avs = next; > - } > - dlclose(avs_library.library); > - > - avs_atexit_called = 1; > -} > - > /* Create AVStream from audio and video data. */ > static int avisynth_create_stream_video(AVFormatContext *s, AVStream *st) > { avisynth_context_destroy() is currently always called while holding the lock (i.e. avisynth_mutex). Is this even necessary? It is clear that avisynth_load_library() (and the check for whether it should be called) need the lock, but does anything else (like avs_create_script_environment) really need it? - 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".