On Wed, 27 Jul 2022 at 20:51, Emil Velikov <emil.l.veli...@gmail.com> wrote: > > On Thu, 21 Jul 2022 at 21:47, Mark Thompson <s...@jkqxz.net> wrote: > > > > On 20/07/2022 17:41, Emil Velikov wrote: > > > On Tue, 19 Jul 2022 at 19:16, Nicolas George <geo...@nsup.org> wrote: > > >> > > >> Emil Velikov (12022-07-19): > > >>> As you may know the libva* set of libraries share an internal ABI > > >>> between them. In a resent libva commit, the va_fool API was removed. > > >>> > > >>> Thus if one is to mix different versions of libva.so and libva-x11.so > > >>> they will get an error, leading to a crash of the whole stack. > > >>> > > >>> The simple solution is > > >> > > >> ... a configure check. > > >> > > >> If the person who installs replaces a library with another, it is their > > >> responsibility to check they are compatible. > > >> > > > > > > While I wholeheartedly agree, it's not so easy to enforce compile time > > > decisions at runtime. In the past, I have debugged and reported issues > > > where Linux distributions do not enforce the above. > > > > > > We do have the typical Linux distribution model (where we have dozens > > > upon distros) and other distribution models. IMHO checking each > > > instance and combination doesn't scale. We could bring awareness to > > > the issue in say distribution/workflow X, which sadly may come as > > > finger-pointing and thus alienating. > > > > > > Hope that makes sense and the team is willing to consider the extra 90 > > > lines worth of code. > > > > The argument "libfoo can be broken in some particular configuration, so > > lets use dlopen() to make errors happen later" seems like it applies to > > every library. Why is this case so special? Who are the users running > > into this specific problem and who are stuck with broken versions they > > can't update? > > > It's a long story, hope I don't bore you to death :-P > > Even though I've been itching to hack on ffmpeg for a while, the bug > that allowed me to do that is > https://github.com/ValveSoftware/steam-for-linux/issues/8673 > > As a background, steam as well as some of the programs/games shipped > use libraries provided by ffmpeg. In addition, steam ships with a > steam runtime, which is effectively a partial chroot of an old Ubuntu. > For various compatibility reasons, one cannot simply update it, so the > startup scripting will try and promote a set of the host libraries (if > newer) so that they're used instead of the bundled Ubuntu ones. > > What happens in the libva case is that distributions can provide only > libva.so and omit libva-x11.so. Which due to the internal ABI break > (removal of the va_fool API), means that steam and likely some games > will simply crash out. > > Now let me try and draw an analogy to another set of libraries which > also share internal ABI - libdrm.so, libdrm_nouveau.so, > libdrm_amdgpu.so libdrm_intel.so, etc. To the best of my knowledge > there was no breakage in there be that internal or public ABI. > > In addition, while distribution may allow you to install only some > (say libdrm.so without libdrm_intel.so), a pair of those is pulled by > the respective GL and Vulkan drivers. For example: the amdgpu GL > driver (amdgpu_dri.so) and radv Vulkand driver (libvulkan_radeon.so) > depend on libdrm_amdgpu.so and libdrm.so. Hence, in practical terms > users cannot hit a similar issue... unless they very very deliberately > try to do so. > > So while one solution is to go around telling users and distributions > that they're "doing it wrong", IMHO a more pragmatic solution is to > include this brief workaround in ffmpeg. At least in the short to mid > term. > As mentioned in the cover letter (sorry again for sending the series > multiple times), I have some plans for a proper long term, which would > reside in libva. Alas as you have experienced yourself, the libva > maintainers can be rather busy, so we're looking at least a couple of > months until a new libva release is out and further X months, until it > ripples down to end-users. >
Mark, humble ping? Can you kindly let me know if the above argument seems reasonable and more importantly if it even makes sense. I am more than happy to provide more details and elaborate, if anything is unclear. Thanks Emil _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".