#2140: null ptr deref due to vf_mp not setting pseudo palette -------------------------------------+------------------------------------- Reporter: cehoyos | Owner: Type: defect | Status: reopened Priority: important | Component: avfilter Version: git-master | Resolution: Keywords: crash | Blocked By: SIGSEGV mp | Reproduced by developer: 0 Blocking: | Analyzed by developer: 1 | -------------------------------------+-------------------------------------
Comment (by cehoyos): The mp=il filter was ported and removed by Paul B Mahol, the crash is still reproducible with mp=fspp. $ ffmpeg -i tests/lena.pnm -pix_fmt gray gray.png {{{ (gdb) r -i gray.png -vf mp=fspp -f null - Starting program: ffmpeg_g -i gray.png -vf mp=fspp -f null - [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". ffmpeg version 1.1 Copyright (c) 2000-2013 the FFmpeg developers built on Feb 10 2013 11:46:21 with gcc 4.7 (SUSE Linux) configuration: --enable-gpl libavutil 52. 13.100 / 52. 13.100 libavcodec 54. 86.100 / 54. 86.100 libavformat 54. 59.106 / 54. 59.106 libavdevice 54. 3.102 / 54. 3.102 libavfilter 3. 32.100 / 3. 32.100 libswscale 2. 1.103 / 2. 1.103 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 Input #0, image2, from 'gray.png': Duration: 00:00:00.04, start: 0.000000, bitrate: N/A Stream #0:0: Video: png, gray, 256x256, 25 tbr, 25 tbn, 25 tbc [Parsed_mp_0 @ 0x15de480] 'fspp' is a wrapped MPlayer filter (libmpcodecs). This filter may be removed once it has been ported to a native libavfilter. Output #0, null, to 'pipe:': Metadata: encoder : Lavf54.59.106 Stream #0:0: Video: rawvideo (Y800 / 0x30303859), gray, 256x256, q=2-31, 200 kb/s, 90k tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (png -> rawvideo) Press [q] to stop, [?] for help Program received signal SIGSEGV, Segmentation fault. 0x0000000000bb8d60 in av_image_copy (dst_data=dst_data@entry=0x15dffc8, dst_linesizes=dst_linesizes@entry=0x15e0010, src_data=src_data@entry=0x15df708, src_linesizes=src_linesizes@entry=0x15df750, pix_fmt=AV_PIX_FMT_GRAY8, width=256, height=256) at libavutil/imgutils.c:272 272 memcpy(dst_data[1], src_data[1], 4*256); (gdb) bt #0 0x0000000000bb8d60 in av_image_copy (dst_data=dst_data@entry=0x15dffc8, dst_linesizes=dst_linesizes@entry=0x15e0010, src_data=src_data@entry=0x15df708, src_linesizes=src_linesizes@entry=0x15df750, pix_fmt=AV_PIX_FMT_GRAY8, width=256, height=256) at libavutil/imgutils.c:272 #1 0x00000000004713e6 in ff_filter_frame_framed (link=link@entry=0x15ded20, frame=frame@entry=0x15df700) at libavfilter/avfilter.c:693 #2 0x00000000004731ab in ff_filter_frame (link=link@entry=0x15ded20, frame=frame@entry=0x15df700) at libavfilter/avfilter.c:791 #3 0x000000000048bcac in ff_vf_next_put_image (vf=0x15de5a0, mpi=0x15df880, pts=0) at libavfilter/vf_mp.c:588 #4 0x000000000048b952 in filter_frame (inlink=0x15dfcc0, inpic=0x15dfac0) at libavfilter/vf_mp.c:824 #5 0x0000000000471555 in ff_filter_frame_framed (link=link@entry=0x15dfcc0, frame=frame@entry=0x15dfac0) at libavfilter/avfilter.c:719 #6 0x00000000004731ab in ff_filter_frame (link=link@entry=0x15dfcc0, frame=0x15dfac0) at libavfilter/avfilter.c:791 #7 0x0000000000475f02 in request_frame (link=0x15dfcc0) at libavfilter/buffersrc.c:372 #8 0x0000000000476334 in av_buffersrc_add_ref (s=0x15b9480, buf=0x0, flags=flags@entry=7) at libavfilter/buffersrc.c:150 #9 0x000000000045eafd in decode_video (ist=ist@entry=0x15d7540, pkt=pkt@entry=0x7fffffffdaf0, got_output=got_output@entry=0x7fffffffd88c) at ffmpeg.c:1672 #10 0x0000000000461b0f in output_packet (pkt=0x7fffffffda90, ist=0x15d7540) at ffmpeg.c:1792 #11 process_input (file_index=<optimized out>) at ffmpeg.c:2886 #12 0x00000000004521e0 in transcode_step () at ffmpeg.c:2982 #13 transcode () at ffmpeg.c:3034 #14 main (argc=<optimized out>, argv=<optimized out>) at ffmpeg.c:3209 (gdb) disass $pc-32,$pc+32 Dump of assembler code from 0xbb8d40 to 0xbb8d80: 0x0000000000bb8d40 <av_image_copy+848>: add %al,(%rax) 0x0000000000bb8d42 <av_image_copy+850>: add %al,-0xa(%rax) 0x0000000000bb8d45 <av_image_copy+853>: movl $0x10d850f,(%rdx) 0x0000000000bb8d4b <av_image_copy+859>: add %al,(%rax) 0x0000000000bb8d4d <av_image_copy+861>: test $0x4,%dil 0x0000000000bb8d51 <av_image_copy+865>: jne 0xbb8e46 <av_image_copy+1110> 0x0000000000bb8d57 <av_image_copy+871>: mov %eax,%ecx 0x0000000000bb8d59 <av_image_copy+873>: xor %edx,%edx 0x0000000000bb8d5b <av_image_copy+875>: shr $0x3,%ecx 0x0000000000bb8d5e <av_image_copy+878>: test $0x4,%al => 0x0000000000bb8d60 <av_image_copy+880>: rep movsq %ds:(%rsi),%es:(%rdi) 0x0000000000bb8d63 <av_image_copy+883>: je 0xbb8d6e <av_image_copy+894> 0x0000000000bb8d65 <av_image_copy+885>: mov (%rsi),%edx 0x0000000000bb8d67 <av_image_copy+887>: mov %edx,(%rdi) 0x0000000000bb8d69 <av_image_copy+889>: mov $0x4,%edx 0x0000000000bb8d6e <av_image_copy+894>: test $0x2,%al 0x0000000000bb8d70 <av_image_copy+896>: je 0xbb8d7e <av_image_copy+910> 0x0000000000bb8d72 <av_image_copy+898>: movzwl (%rsi,%rdx,1),%ecx 0x0000000000bb8d76 <av_image_copy+902>: mov %cx,(%rdi,%rdx,1) 0x0000000000bb8d7a <av_image_copy+906>: add $0x2,%rdx 0x0000000000bb8d7e <av_image_copy+910>: test $0x1,%al End of assembler dump. (gdb) info register rax 0x400 1024 rbx 0x100 256 rcx 0x80 128 rdx 0x0 0 rsi 0x0 0 rdi 0x1627080 23228544 rbp 0x100 0x100 rsp 0x7fffffffd2e0 0x7fffffffd2e0 r8 0x1626f80 23228288 r9 0xf0 240 r10 0x0 0 r11 0x7ffff668dd60 140737327455584 r12 0x1616e20 23162400 r13 0x1627080 23228544 r14 0x0 0 r15 0x100 256 rip 0xbb8d60 0xbb8d60 <av_image_copy+880> eflags 0x10246 [ PF ZF IF RF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 }}} -- Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2140#comment:4> FFmpeg <http://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://avcodec.org/mailman/listinfo/ffmpeg-trac