sön 2020-07-05 klockan 12:54 +0200 skrev Jan Engelhardt: > On Sunday 2020-07-05 12:06, Tomas Härdin wrote: > > > Or, summarized: A program may have been built with 4.3 but is > > > combined > > > with 4.2.3 at runtime, then this can happen: > > > > > > a = avcodec_dct_alloc(); // allocates 896 > > > #ifdef HAVE_STRUCT_AVDCT_GET_PIXELS_UNALIGNED > > > a->get_pixels_unaligned = ffunc; // boom accessing byte ~952 > > > #endif > > > > "Doctor it hurts when I do this!" > > The application of this saying is short-sighted. It confounds basic > exercise of features with overuse of said features. For lack of a > better analogy, moving a leg normally _ought_ not to hurt in healthy > humans. What is seen as "normal" is indeed situation-dependent, but > the only other way to look at it is that ffmpeg is a disabled entity > with special needs.
We can certainly change the API to make this sort of break harder, with a major bump. But given what the documentation says about the current API it is not a break. It might not be the most user-friendly API, but it is right there in the headers. There's quite a bit of inertia involved too. This makes me wonder if there's a way to prevent AVCodecContext from being allocated anywhere but the heap, without having it and similar structs just be opaque pointers on the user side. > > Downgrading to a .so file with a lower minor version number than > > the > > program is built against can never be expected to work. Else we > > couldn't add new functions without a major bump. > > Then you are doing it wrong. If one tries to run a contemporary > program on an older distribution, which certainly has an older glibc, > it refuses to run - which is much preferable to a crash at an > arbitrary point down the line. > > It requires the use ELF symbol versions -- which ffmpeg fails to > do properly. Between 4.2.3 and 4.3, > > avpriv_mpeg4audio_get_config2@@LIBAVCODEC_58 > > which is wrong. It should have been > > avpriv_mpeg4audio_get_config2@@LIBAVCODEC_58.91 > > Then the runtime linker ld-linux.so would have caught the problem > at startup, because then, a program built with 4.3 would have a > minimum requirement on elfsymver "58.91", and *not just* "58". This is a fair point. I didn't actually know the loader can do stuff like this, sounds super handy. How hard would it be to get that going? /Tomas _______________________________________________ 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".