From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 8470B4BF72 for ; Mon, 28 Jul 2025 00:04:48 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 70D7B68D44D; Mon, 28 Jul 2025 03:04:44 +0300 (EEST) Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 9369068C551 for ; Mon, 28 Jul 2025 03:04:37 +0300 (EEST) Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-748d982e97cso3478563b3a.1 for ; Sun, 27 Jul 2025 17:04:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753661076; x=1754265876; darn=ffmpeg.org; h=content-transfer-encoding:autocrypt:content-language:to:subject :from:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=6xTXdAiGw594NWR7GGJec8hXOqvt6bSbzFBCUL4ZRA8=; b=K6rhIpRW97pzgr0LoDzcpUZ+MvGlyG9h3dkrrExSY4aTj7ODdSDt3DQuY9+/VxRUMI /im/xwSY2Gxhq8MeWAMlEwrn/akSn0/3ZdR3+EbmHZ8JXEUkEnHigYrUkX8tlc0Qhx/K dkRcptqg0/xWreEuLEHN8c6NI4cowdzv0OvAdQPXyfChXU+VVDpwQPQ3VYkHZQOcGNeW cdbTSsxtHQvM2A3XTlMLqhlAVLO+c3oR3LwLM9oq6EQ7hMrZu2yvG9DwLaGecdNa4/c2 Z0Lp7nprflzEVFZxG6+1t9HuxSt8QNkIG83YzZpOaReZdtOhvHqESEu8LMa/UmYLhxdT pQew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753661076; x=1754265876; h=content-transfer-encoding:autocrypt:content-language:to:subject :from:user-agent:mime-version:date:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=6xTXdAiGw594NWR7GGJec8hXOqvt6bSbzFBCUL4ZRA8=; b=tJ/+vr7njJREosnOhxnoS8ANjp6zLpscYI9BNi2mBMgpHl9sUIdPgPn1LL5m/UF/Og czr+HMe+IWfsQodHW+gqFQp8CR0tYDg9c9U0OGus3hq28KjIdgWT48SEH5w7BqGQMDqW 7H214LvcMhOc/ppnc5Iwh9MIxHvWRM8qLowflFMv5oPw7eOS5nsCVd6/NsGtXoxQm7C3 8H0bGF8iIIMY2qLtP/2wXljfb7Srt5fNGJpfkLyfc8l75zmg+L23QRvx1kEOmYvNZ1vW s/RrFEz5g7H7usMbH1ARIIQavsgWg98xz1MrsmAwPcYNdh2ralStj31w8LnvtQR+UGa8 kBVQ== X-Gm-Message-State: AOJu0YyED0/0CquhQDBIAf8fy1N10uQD2qIVnH69TdjXRFiKwr7s0poX /z0kB6neO8dNWPQBw9cKuVE5wAKT2HDWw9RgiBkxNAu6aYaBgbkrNK5lGuAYWg== X-Gm-Gg: ASbGncuVccblBhkwaZPMhVGzSE5XtMO9AAb2S3bG2xMTz24JgVMtS2D/AMYThQhHD93 kcg5Sd0OZkoPtluJ46BA2kUlWIGgP/mJj+x6kKbmCzpxbTygD9Z6bgx7xlnFBpoJiNr3txRFyEw eP3roaXV9ZL/L6qHvt7CgLBEltQFlUnyQnjbhiyhiL5q5tQG3rbUFK/VEOyqDo7Pr8wlEZWN8GE mxVkk3neDAfGz/27T+36vTqGwzXbUwZfNeMpGaq43w0Ez7R106Xvu1JqZNoreum2KfQeIUd65o7 5olcUlyRXVjJely3hT1oJJJkRdUik2MVx7X8PgCL/opP0LFQmjJgEfMuI/BOQ5yMbPaOLZa9Xtf gvnno78Ru2ZhAdoSdMDazjlL1PokfUQ== X-Google-Smtp-Source: AGHT+IEdgip2zXTHHAR4gxcqBtiUhB/T/5Q6yPH/xY8Go/e0oHUfw5EddOfRUcmnc3PaHrmZ8USdAw== X-Received: by 2002:a05:6a20:3946:b0:231:7dcc:f449 with SMTP id adf61e73a8af0-23d700815f9mr16322956637.18.1753661075578; Sun, 27 Jul 2025 17:04:35 -0700 (PDT) Received: from [192.168.1.72] ([187.36.165.21]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-76408cf7460sm4181435b3a.54.2025.07.27.17.04.34 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 27 Jul 2025 17:04:35 -0700 (PDT) Message-ID: <19ac6efe-69be-438e-a87b-ca9c91ab9290@gmail.com> Date: Sun, 27 Jul 2025 21:04:32 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Daniel Bermond To: ffmpeg-devel@ffmpeg.org Content-Language: en-US Autocrypt: addr=danielbermond@gmail.com; keydata= xsBNBFdxiMkBCADLGEJIsXwGZtwUtXQ4EfgnbcYSL048OIkLHZa9fEKkiIE7FuliD0SgRphq oHbw4Q8C5TtbttxKAglg3elkLsoEmE1qa4d8rRGU2Foys35BJHEe2LoqV8jjtkNP2bvsnNYk yksi0iLUebCJ8C3QNw7jNa8BsFtXCFQ1H1eixcduxk6rXAa0igK6FlES+cz3/8xjp4W2x+iG KnHXJnQDdxMUKQ+E6ms/64I7ZpqT5OTpC7b0SMkr2yhe5DmmbySqLX+deDxivybyIIrvd6Y5 Kp00X4K5PWx17Pg6ETeET4i3bzVVejrv8heotpJyvK853b7riATkb9wzYPIJKFsWe2dHABEB AAHNKERhbmllbCBCZXJtb25kIDxkYW5pZWxiZXJtb25kQGdtYWlsLmNvbT7CwJEEEwEIADsC GwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQQ/+mq3tpqubMomPd4BmnR0KX2FdwUCW8IS +gIZAQAKCRABmnR0KX2Fd7wrB/wNS9qxPI8IMCMu17w8icAx9XV6JUkWF9mVupi5X0JV0ufG LO8Z3Xa2WW38v/MIrSWZclXQV9o6M2qmoT4zx71LvIFJVMeLnV6fY3OJdHYviHjepEo/MwrN peMoatmKYNCTkinbqBD/S2VPiqMK6O9KWNyL3D6jbCRUZ+EjVmPvBXrDm1CnMWGf/iiefF8g uNkqBP4VJCqyMWmpzK10DS6Ft+RB3pVOd/clqMJUf+fNvvxxepufL8KZWFZp5SSHFNJja9uS o0PohM4DLnXtkxCBJT4K0L7fu8lRR1N/tlVZzr8ZA76+sviZzUgvczuldHemCN8TDpc9sk1m +SH2VtoVzsBNBFdxiMkBCADm1CeVghAo7cY1bkbOUit76xtMUm+9eY6J1vKZYauMQ65cGWeT CcE8u6jWDK/DfzlzwvNNgPACLmQ1wpVhyV9H5kMUjE4p+j8Z/jo3h7w359wRIzFUut0ZKV1u sue6fjnp7q5nleRxGAxE+D48GCDNy+8/5b0CCjVEIgYPeWV7yJJ6aH5z/SSMo8RP5mmHkqvo bCp2Cy31fa0VulXYkhavuQ3usb+BQ/8vysQuYtxoMA/w+O8Nlu5l7UyVF0wrIjvhvOxagY5H 0Rrg6DIu+ND60Y4WJ1AlMo0CDMSBJU2Cop3ECeX4ihEZpPLocsxQGlJ9lRCSXpOCDPYrD+Jr xWDdABEBAAHCwF8EGAEIAAkFAldxiMkCGwwACgkQAZp0dCl9hXc3OAgAp9qqe+JJIjiomTFy TfvmXgl/11HfvEGkpfZxyxUU5JGMRkuTAlk2+EDRyCV+X7HPep2w7+xkzSR8SEjky4qMWL+4 i3oCjP6bO5AG7udY78kqhWK9dUNlObtjIeiPa5SpGK3OV6faBl2StIF+i16w/nuPxy+BOWKP Xn9fh3rAbFPVYFbkJxo5FcJXcFkzziaEG+09YdG+Zb6kSNB1fh/xQtgDvDXCNACgOnybLurT 3Eyj3OaIOqG9B3vwr29JrH9jjQ//t0E0taw8Ah7ly29Rn7xgSf7RUmLHz+NOQCQvoEdqBFgm 4d6uopmCBYXajWlcvz4Bqr5va43BSYe1PtUHDg== Subject: [FFmpeg-devel] [PATCH v3] avformat/avisynth: fix segfault when also compiled with libvmaf 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: When FFmpeg is compiled with support for both avisynth and libvmaf, a segmentation fault occurs when using avisynth (.avs) input. This happens because both avisynthplus and vmaf have the exactly same C++ symbol 'Cache::~Cache()'[1][2], which is a C++ destructor. When using avisynth input, this destructor is also called in the vmaf side, although no vmaf object was created, thus causing a segmentation fault. Without changing this conflicting symbol in avisynthplus and/or vmaf upstream code, a solution is to switch the 'RTLD_LOCAL'[3] flag for 'RTLD_DEEPBIND'[4] when calling 'dlopen()' on the avisynthplus library. This will make the avisynthplus symbols loaded by 'dlopen()' to be ahead of the symbols loaded in the global scope, and consequently avoid the segmentation fault by preventing the conflicting vmaf C++ destructor to be called. More details can be seen in the discussion of the Arch Linux bug report[5] about this issue. [1] https://github.com/AviSynth/AviSynthPlus/blob/v3.7.5/avs_core/core/cache.h#L62 [2] https://github.com/Netflix/vmaf/blob/v3.0.0/libvmaf/src/svm.cpp#L75 [3] https://man.archlinux.org/man/dlopen.3#RTLD_LOCAL [4] https://man.archlinux.org/man/dlopen.3#RTLD_DEEPBIND [5] https://gitlab.archlinux.org/archlinux/packaging/packages/ffmpeg/-/issues/19 Signed-off-by: Daniel Bermond --- libavformat/avisynth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index cb2be10925..bef61b4a60 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -120,7 +120,7 @@ typedef struct AviSynthContext { static av_cold int avisynth_load_library(AviSynthContext *avs) { - avs->avs_library.library = dlopen(AVISYNTH_LIB, RTLD_NOW | RTLD_LOCAL); + avs->avs_library.library = dlopen(AVISYNTH_LIB, RTLD_NOW | RTLD_DEEPBIND); if (!avs->avs_library.library) return AVERROR_UNKNOWN; -- 2.50.1 _______________________________________________ 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".