Hi, FFmpeg compiled with GCC 4.5 (20090827) crashes when I try to convert mpg file to avi (divx).
"FFmpeg_020fpu -i test.mpg test.avi" 1. I get crash only with "-m68020 -m68881" options, not with -m68040 or -m68060. 2. I get crash only with -O1, -O2 or -O3 options, not with -O0. 3. GCC 4.4.2 (20090825) don't have this problem. The problematic file is "libavcodec/ratecontrol.c" - this file generates crash. I include preprocessed file from GCC 4.4.2 and GCC 4.5.0. $ make_68k_v45 /usr/local/amiga/bin/m68k-amigaos-gcc-4.5.0.exe -V 4.5.0 -DHAVE_AV_CONFIG_H -I. -I"/bin/ffmpeg9" -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=6 4 -D_LARGEFILE_SOURCE -m68020 -m68881 -mnobitfield -std=c99 -fno-common -fomit-f rame-pointer -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimiza tion -Wpointer-arith -Wredundant-decls -Wcast-qual -Wwrite-strings -Wundef -O2 - finline-functions -fno-math-errno -MMD -MF libavcodec/ratecontrol.d -MT li bavcodec/ratecontrol.o -c -o libavcodec/ratecontrol.o libavcodec/ratecontrol.c libavcodec/ratecontrol.c: In function 'ff_rate_control_init': libavcodec/ratecontrol.c:109:5: warning: passing argument 3 of 'ff_parse' discar ds qualifiers from pointer target type libavcodec/eval.h:64:14: note: expected 'double (**)(void *, double)' but argume nt is of type 'double (* const*)(void *, double)' libavcodec/ratecontrol.c:109:5: warning: passing argument 4 of 'ff_parse' discar ds qualifiers from pointer target type libavcodec/eval.h:64:14: note: expected 'const char **' but argument is of type 'const char * const*' libavcodec/ratecontrol.c:168:13: warning: passing argument 2 of 'av_log' makes i nteger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:168:13: warning: too many arguments for format libavcodec/ratecontrol.c:169:13: warning: passing argument 2 of 'av_log' makes i nteger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:169:13: warning: too many arguments for format libavcodec/ratecontrol.c: In function 'get_qminmax': libavcodec/ratecontrol.c:413:5: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:413:5: warning: too many arguments for format libavcodec/ratecontrol.c: In function 'ff_rate_estimate_qscale': libavcodec/ratecontrol.c:692:9: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:692:9: warning: too many arguments for format libavcodec/ratecontrol.c:693:9: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:693:9: warning: too many arguments for format libavcodec/ratecontrol.c:725:13: warning: passing argument 2 of 'av_log' makes i nteger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:725:13: warning: too many arguments for format libavcodec/ratecontrol.c:764:9: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:764:9: warning: too many arguments for format libavcodec/ratecontrol.c:768:9: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:768:9: warning: too many arguments for format libavcodec/ratecontrol.c:780:9: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:780:9: warning: too many arguments for format libavcodec/ratecontrol.c:786:9: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:786:9: warning: too many arguments for format libavcodec/ratecontrol.c: In function 'init_pass2': libavcodec/ratecontrol.c:874:9: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:874:9: warning: too many arguments for format libavcodec/ratecontrol.c:936:5: warning: passing argument 2 of 'av_log' makes in teger from pointer without a cast ./libavutil/log.h:104:6: note: expected 'int' but argument is of type 'const cha r *' libavcodec/ratecontrol.c:936:5: warning: too many arguments for format -- Summary: [4.5 regression] FFmpeg crashes when converting mpg to avi Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: critical Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ami_stuff at o2 dot pl GCC host triplet: i686-cygwin GCC target triplet: m68k-amigaos http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41311