[FFmpeg-trac] #8251(undetermined:new): Segmentation fault in sws_scale at libswscale/swscale.c:850

FFmpeg trac at avcodec.org
Fri Oct 11 08:13:55 EEST 2019


#8251: Segmentation fault in sws_scale at libswscale/swscale.c:850
-------------------------------------+-------------------------------------
             Reporter:  Suhwan       |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 There is a Segmentation fault in sws_scale at libswscale/swscale.c:850

 {{{
 Thread 1 "ffmpeg_g" received signal SIGSEGV, Segmentation fault.
 0x00000000013030bd in sws_scale (c=0x22d09c0, srcSlice=0x7fffffffc5e0,
 srcStride=0x7fffffffc5b0,
     srcSliceY=0, srcSliceH=<optimized out>, dst=0x7fffffffc5c0,
 dstStride=0x7fffffffc5a0)
     at libswscale/swscale.c:850
 850                     uint32_t p = ((const uint32_t *)(srcSlice[1]))[i];
 (gdb) bt
 #0  0x00000000013030bd in sws_scale (c=0x22d09c0, srcSlice=0x7fffffffc5e0,
 srcStride=0x7fffffffc5b0,
     srcSliceY=0, srcSliceH=<optimized out>, dst=0x7fffffffc5c0,
 dstStride=0x7fffffffc5a0)
     at libswscale/swscale.c:850
 #1  0x000000000052e350 in scale_slice (link=<optimized out>,
 out_buf=<optimized out>,
     cur_pic=<optimized out>, sws=<optimized out>, y=<optimized out>,
 h=<optimized out>,
     mul=<optimized out>, field=<optimized out>) at
 libavfilter/vf_scale.c:411
 #2  scale_frame (link=<optimized out>, in=<optimized out>,
 frame_out=<optimized out>)
     at libavfilter/vf_scale.c:535
 #3  filter_frame (link=0x22cca40, in=<optimized out>) at
 libavfilter/vf_scale.c:549
 #4  0x00000000004520a5 in ff_filter_frame_framed (link=<optimized out>,
 frame=<optimized out>)
     at libavfilter/avfilter.c:1071
 #5  ff_filter_frame_to_filter (link=<optimized out>) at
 libavfilter/avfilter.c:1219
 #6  ff_filter_activate_default (filter=<optimized out>) at
 libavfilter/avfilter.c:1268
 #7  ff_filter_activate (filter=<optimized out>) at
 libavfilter/avfilter.c:1430
 #8  0x00000000004576ca in push_frame (graph=0x22b3700) at
 libavfilter/buffersrc.c:187
 #9  av_buffersrc_add_frame_internal (ctx=0x22cae00, frame=<optimized out>,
 flags=4)
     at libavfilter/buffersrc.c:261
 #10 0x00000000004571e8 in av_buffersrc_add_frame_flags (ctx=0x22cae00,
 frame=0x22c5440, flags=4)
     at libavfilter/buffersrc.c:170
 #11 0x0000000000425fd8 in ifilter_send_frame (ifilter=<optimized out>,
 frame=<optimized out>)
     at fftools/ffmpeg.c:2196
 #12 send_frame_to_filters (ist=<optimized out>, decoded_frame=<optimized
 out>) at fftools/ffmpeg.c:2270
 #13 0x0000000000420f69 in decode_video (ist=<optimized out>,
 pkt=<optimized out>,
     got_output=<optimized out>, duration_pts=<optimized out>,
 eof=<optimized out>,
     decode_failed=<optimized out>) at fftools/ffmpeg.c:2469
 #14 process_input_packet (ist=<optimized out>, pkt=<optimized out>,
 no_eof=<optimized out>)
     at fftools/ffmpeg.c:2623
 #15 0x000000000041d40f in process_input (file_index=<optimized out>) at
 fftools/ffmpeg.c:4518
 #16 transcode_step () at fftools/ffmpeg.c:4638
 #17 transcode () at fftools/ffmpeg.c:4692
 #18 0x0000000000419377 in main (argc=<optimized out>, argv=<optimized
 out>) at fftools/ffmpeg.c:4894
 (gdb) list
 845
 846         if (usePal(c->srcFormat)) {
 847             for (i = 0; i < 256; i++) {
 848                 int r, g, b, y, u, v, a = 0xff;
 849                 if (c->srcFormat == AV_PIX_FMT_PAL8) {
 850                     uint32_t p = ((const uint32_t *)(srcSlice[1]))[i];
 851                     a = (p >> 24) & 0xFF;
 852                     r = (p >> 16) & 0xFF;
 853                     g = (p >>  8) & 0xFF;
 854                     b =  p        & 0xFF;
 (gdb) print srcSlice[1]
 $1 = (const uint8_t * const) 0x0
 (gdb) disass $pc-32,$pc+32
 Dump of assembler code from 0x130309d to 0x13030dd:
    0x000000000130309d <sws_scale+925>:  jmpq   *0x17908f0(,%r9,8)
    0x00000000013030a5 <sws_scale+933>:  mov    $0xff,%r10d
    0x00000000013030ab <sws_scale+939>:  mov    %r11d,%esi
    0x00000000013030ae <sws_scale+942>:  mov    %r11d,%ebp
    0x00000000013030b1 <sws_scale+945>:  mov    %r11d,%ebx
    0x00000000013030b4 <sws_scale+948>:  jmpq   0x1303175 <sws_scale+1141>
    0x00000000013030b9 <sws_scale+953>:  mov    0x8(%r14),%rax
 => 0x00000000013030bd <sws_scale+957>:  mov    (%rax,%r11,4),%eax
    0x00000000013030c1 <sws_scale+961>:  mov    %eax,%ecx
    0x00000000013030c3 <sws_scale+963>:  movzbl %ah,%ebp
    0x00000000013030c6 <sws_scale+966>:  movzbl %al,%esi
    0x00000000013030c9 <sws_scale+969>:  mov    %eax,%r10d
    0x00000000013030cc <sws_scale+972>:  shr    $0x18,%r10d
    0x00000000013030d0 <sws_scale+976>:  shr    $0x10,%ecx
    0x00000000013030d3 <sws_scale+979>:  movzbl %cl,%ebx
    0x00000000013030d6 <sws_scale+982>:  jmpq   0x1303175 <sws_scale+1141>
    0x00000000013030db <sws_scale+987>:  mov    %r11d,%eax
 End of assembler dump.

 }}}

 How to reproduce:
 {{{
 % ffmpeg_g -y -i $PoC -filter_complex shuffleplanes -target dvd -loglevel
 99  tmp.mpegts

 ffmpeg version N-95314-g1331e00179 Copyright (c) 2000-2019 the FFmpeg
 developers
   built with clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
   configuration: --cc=clang --cxx=clang++ --ld=clang --enable-debug
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/8251>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list