[Ffmpeg-devel] RE: FFV1 codec crashes on files written with 0.4.9pre1 (original) (raw)

Andreas Matthies a.matthies
Thu Feb 9 18:38:23 CET 2006


> If you'd read my mail exactly you would have noticed that my bug report is > about "latest ffmpeg (and newer FFDSHOW filter and VLC) crashes on these > files" which means current CVS segfaults on avi files with FFV1 stream > written with an earlier version. I know that FFV1 is still (and probably > will stay) experimental with no guaranty that later versions will play older > files. But segfaulting isn't the best option IMHO.

gdb/debugger output then please! (or a ffv1 file which causes this, i suspect ~1k of it will be enough, if so just attach it)

Test file is in Michael's private mailbox. Here's the backtrace:

(gdb) r -i ../ffv1test.avi Starting program: c:\devel\ffmpeg\ffmpeg/ffmpeg_g.exe -i ../ffv1test.avi

Program received signal SIGSEGV, Segmentation fault. decode_line (s=0xe41d70, w=384, sample=0x22fa50, plane_index=0, bits=8) at rangecoder.h:96 96 int range1= (c->range * (*state)) >> 8; (gdb) bt #0 decode_line (s=0xe41d70, w=384, sample=0x22fa50, plane_index=0, bits=8) at rangecoder.h:96 #1 0x005ad3a8 in decode_frame (avctx=0x3dd230, data=0x22fae0, data_size=0x22fadc, buf=0x3dd990 "?????v?\206gl(f\006u??? ?", buf_size=3199) at ffv1.c:792 #2 0x0046068a in avcodec_decode_video (avctx=0x3dd230, picture=0x22fae0, got_picture_ptr=0x22fadc, buf=0x3dd990 "?????v?\206gl(f\006u??? ?", buf_size=3199) at utils.c:940 #3 0x004161ef in try_decode_frame (st=0x3d28f0, data=0x3dd990 "?????v?\206`gl(f\006u??? ?", size=3199) at utils.c:1818 #4 0x0041327b in av_find_stream_info (ic=0x3dc290) at utils.c:2007 #5 0x00408384 in opt_input_file (filename=0x3d2412 "../ffv1test.avi") at ffmpeg.c:2912 #6 0x0040ea5c in parse_options (argc=3, argv=0x3d24a0, options=0x402e70) at cmdutils.c:99 #7 0x00403c9f in main (argc=3, argv=0x3d24a0) at ffmpeg.c:4263 (gdb) print state $2 = (uint8_t *) 0x0

This is probably a consequence of read_header failing before allocating f->plane[i]->state. What about testing if read_header(f); fails in decode_frame and then immediately abort.

Of course a much better solution would be to make the read_header() not fail on old files... Maybe it's not that hard, but I can't.



More information about the ffmpeg-devel mailing list