On Sat, Feb 10, 2018 at 7:51 AM, Michael Niedermayer <mich...@niedermayer.cc> wrote: > On Fri, Feb 09, 2018 at 10:21:04PM +0700, Muhammad Faiz wrote: >> On Fri, Feb 9, 2018 at 6:53 PM, James Almer <jamr...@gmail.com> wrote: >> > On 2/9/2018 7:56 AM, Muhammad Faiz wrote: >> >> On Thu, Feb 8, 2018 at 7:04 AM, Michael Niedermayer >> >> <mich...@niedermayer.cc> wrote: >> >>> On Wed, Feb 07, 2018 at 01:52:33PM +0100, Nicolas George wrote: >> >>>> Josh de Kock (2018-02-06): >> >>>>> ffmpeg | branch: master | Josh de Kock <j...@itanimul.li> | Fri Dec 22 >> >>>>> 22:17:00 2017 +0000| [7e8eba2d8755962d9dca5eade57bf8f591a73c0c] | >> >>>>> committer: Josh de Kock >> >>>>> >> >>>>> lavc: add new API for iterating codecs and codec parsers >> >>>>> >> >>>>> Based on an unfinished patch by atomnuker. >> >>> >> >>> This commit also breaks >> >>> >> >>> ./configure --enable-libsoxr && make -j12 fate-checkasm >> >>> make -j12 fate-checkasm >> >>> ... >> >>> LD tests/checkasm/checkasm >> >>> libswresample/libswresample.a(soxr_resample.o): In function >> >>> `get_out_samples': >> >>> ffmpeg/libswresample/soxr_resample.c:118: undefined reference to >> >>> `soxr_delay' >> >>> libswresample/libswresample.a(soxr_resample.o): In function `get_delay': >> >>> ffmpeg/libswresample/soxr_resample.c:100: undefined reference to >> >>> `soxr_delay' >> >>> libswresample/libswresample.a(soxr_resample.o): In function `flush': >> >>> ffmpeg/libswresample/soxr_resample.c:70: undefined reference to >> >>> `soxr_delay' >> >>> ffmpeg/libswresample/soxr_resample.c:72: undefined reference to >> >>> `soxr_process' >> >>> ffmpeg/libswresample/soxr_resample.c:77: undefined reference to >> >>> `soxr_process' >> >>> ffmpeg/libswresample/soxr_resample.c:78: undefined reference to >> >>> `soxr_delay' >> >>> libswresample/libswresample.a(soxr_resample.o): In function `process': >> >>> ffmpeg/libswresample/soxr_resample.c:88: undefined reference to >> >>> `soxr_set_num_channels' >> >>> ffmpeg/libswresample/soxr_resample.c:88: undefined reference to >> >>> `soxr_set_error' >> >>> ffmpeg/libswresample/soxr_resample.c:90: undefined reference to >> >>> `soxr_process' >> >>> libswresample/libswresample.a(soxr_resample.o): In function `destroy': >> >>> ffmpeg/libswresample/soxr_resample.c:65: undefined reference to >> >>> `soxr_delete' >> >>> libswresample/libswresample.a(soxr_resample.o): In function `create': >> >>> ffmpeg/libswresample/soxr_resample.c:46: undefined reference to >> >>> `soxr_io_spec' >> >>> ffmpeg/libswresample/soxr_resample.c:48: undefined reference to >> >>> `soxr_quality_spec' >> >>> ffmpeg/libswresample/soxr_resample.c:56: undefined reference to >> >>> `soxr_delete' >> >>> ffmpeg/libswresample/soxr_resample.c:57: undefined reference to >> >>> `soxr_create' >> >>> collect2: error: ld returned 1 exit status >> >>> make: *** [tests/checkasm/checkasm] Error 1 >> >> >> >> Fixed in 81d6501be77b273053a66eeced94d78e2021f1d1 >> >> >> >> Thank's. >> > >> > This is not a proper solution. swr is pulled by avcodec only if Opus >> > decoder is enabled. There's no reason to hardcode it for checkasm >> > otherwise. >> > The problem here is that the Makefile should pull all the dependencies >> > of its hardcoded dependencies. This is what FFLIBS and FFEXTRALIBS do in >> > common.mak to link the actual libraries. >> >> Probably, this is not a proper solution, but it is trivial enough. >> (I'm sorry that I pushed it without posting). >> So, please fix it with the proper solution. Probably, by adding >> swresample-extralibs to avcodec-extralibs when avcodec has dependency >> to swresample. I don't know how to do it. >> > >> > >> > That said, was this really a regression generated by this commit? It >> > looks unrelated. >> >> Actually, it was a bug even before this commit. Just, previously it >> was hidden because linker was smart enough to discard unneeded >> dependency. But now when the list is changed to array, the linker is >> unable to do it. > > iam not sure i understand correctly. But does this mean that > tools/target_dec_"codec"_fuzzer will now include everything and not just > the "codec" ? > If so this will possibly prevent FFmpeg from being tested in googles ossfuzz > framework. As their diskspace was already rather tight. > > i do see on my disk that the more recently build fuzzers have gottem MUCH > larger: > -rwxr-x--- 1 michael michael 17588987 Feb 3 18:53 > tools/target_dec_scpr_fuzzer* > -rwxr-x--- 1 michael michael 17476326 Feb 4 02:16 > tools/target_dec_paf_video_fuzzer* > -rwxr-x--- 1 michael michael 143210465 Feb 9 13:53 > tools/target_dec_h264_fuzzer* > -rwxr-x--- 1 michael michael 143210465 Feb 9 13:56 > tools/target_dec_vp3_fuzzer* >
Does the attached patch fix the problem? Thank's.
From 46d5a15dba7578d312aae59048ad608c9afdacbf Mon Sep 17 00:00:00 2001 From: Muhammad Faiz <mfc...@gmail.com> Date: Sat, 10 Feb 2018 17:08:04 +0700 Subject: [PATCH] tools/target_dec_fuzzer: don't use avcodec_register() Signed-off-by: Muhammad Faiz <mfc...@gmail.com> --- tools/target_dec_fuzzer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/target_dec_fuzzer.c b/tools/target_dec_fuzzer.c index 62d62a9de3..6c575f8845 100644 --- a/tools/target_dec_fuzzer.c +++ b/tools/target_dec_fuzzer.c @@ -144,7 +144,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { #define DECODER_SYMBOL0(CODEC) ff_##CODEC##_decoder #define DECODER_SYMBOL(CODEC) DECODER_SYMBOL0(CODEC) extern AVCodec DECODER_SYMBOL(FFMPEG_DECODER); - avcodec_register(&DECODER_SYMBOL(FFMPEG_DECODER)); + if (DECODER_SYMBOL(FFMPEG_DECODER).init_static_data) + DECODER_SYMBOL(FFMPEG_DECODER).init_static_data(&DECODER_SYMBOL(FFMPEG_DECODER)); c = &DECODER_SYMBOL(FFMPEG_DECODER); #else -- 2.13.2
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel