[FFmpeg-trac] #6887(avformat:open): segfault copying MPEGTS to MPEG with subtitles

FFmpeg trac at avcodec.org
Sun Dec 3 01:02:37 EET 2017


#6887: segfault copying MPEGTS to MPEG with subtitles
-------------------------------------+-------------------------------------
             Reporter:  mennucc      |                    Owner:
                 Type:  defect       |                   Status:  open
             Priority:  important    |                Component:  avformat
              Version:  git-master   |               Resolution:
             Keywords:  mpegps       |               Blocked By:
  crash SIGSEGV regression           |  Reproduced by developer:  1
             Blocking:               |
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Changes (by cehoyos):

 * keywords:   => mpegps crash SIGSEGV regression
 * priority:  normal => important
 * status:  new => open
 * component:  ffmpeg => avformat
 * reproduced:  0 => 1


Comment:

 For future tickets: Please remember to post all necessary information here
 in the ticket, do not use external resources (except for large input
 files).

 Regression since a7bb12a307568c0db72e6eb8d496a5651a8228df
 {{{
 (gdb) r -i HOLE_orig_cut.ts -vcodec copy -acodec copy -scodec copy out.mpg
 Starting program: ffmpeg_g -i HOLE_orig_cut.ts -vcodec copy -acodec copy
 -scodec copy out.mpg
 [Thread debugging using libthread_db enabled]
 Using host libthread_db library "/lib64/libthread_db.so.1".
 ffmpeg version N-89361-g225341b Copyright (c) 2000-2017 the FFmpeg
 developers
   built with gcc 6.3.0 (GCC)
   configuration: --enable-gpl
   libavutil      56.  4.100 / 56.  4.100
   libavcodec     58.  6.102 / 58.  6.102
   libavformat    58.  2.103 / 58.  2.103
   libavdevice    58.  0.100 / 58.  0.100
   libavfilter     7.  6.100 /  7.  6.100
   libswscale      5.  0.101 /  5.  0.101
   libswresample   3.  0.101 /  3.  0.101
   libpostproc    55.  0.100 / 55.  0.100
 [mpegts @ 0x206b3e0] PES packet size mismatch
     Last message repeated 3 times
 [mpegts @ 0x206b3e0] Could not find codec parameters for stream 4
 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 [mpegts @ 0x206b3e0] Could not find codec parameters for stream 5
 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 [mpegts @ 0x206b3e0] Could not find codec parameters for stream 6
 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 [mpegts @ 0x206b3e0] Could not find codec parameters for stream 7
 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 [mpegts @ 0x206b3e0] Could not find codec parameters for stream 8
 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 [mpegts @ 0x206b3e0] Could not find codec parameters for stream 9
 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 [mpegts @ 0x206b3e0] Could not find codec parameters for stream 10
 (Unknown: none ([11][0][0][0] / 0x000B)): unknown codec
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 [mpegts @ 0x206b3e0] Could not find codec parameters for stream 11
 (Unknown: none ([12][0][0][0] / 0x000C)): unknown codec
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 Input #0, mpegts, from 'HOLE_orig_cut.ts':
   Duration: 09:42:39.40, start: 93192.547378, bitrate: 0 kb/s
   Program 4006
     Stream #0:0[0x654]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
 yuv420p(tv, top first), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k
 tbn, 50 tbc
     Stream #0:1[0x655](ita): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz,
 stereo, s16p, 192 kb/s
     Stream #0:2[0x656](eng): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz,
 stereo, s16p, 128 kb/s
     Stream #0:3[0x653](ita,ita): Subtitle: dvb_teletext ([6][0][0][0] /
 0x0006)
     Stream #0:4[0x1ea0]: Unknown: none ([5][0][0][0] / 0x0005)
     Stream #0:5[0x1ea1]: Unknown: none ([5][0][0][0] / 0x0005)
     Stream #0:6[0x1ea2]: Unknown: none ([5][0][0][0] / 0x0005)
     Stream #0:7[0x1eaa]: Unknown: none ([5][0][0][0] / 0x0005)
     Stream #0:8[0x1e78]: Unknown: none ([11][0][0][0] / 0x000B)
     Stream #0:9[0x1e79]: Unknown: none ([11][0][0][0] / 0x000B)
     Stream #0:10[0x1e83]: Unknown: none ([11][0][0][0] / 0x000B)
     Stream #0:11[0x1ed3]: Unknown: none ([12][0][0][0] / 0x000C)
 [mpeg @ 0x20fb240] VBV buffer size not set, using default size of 130KB
 If you want the mpeg file to be compliant to some specification
 Like DVD, VCD or others, make sure you set the correct buffer size
 Output #0, mpeg, to 'out.mpg':
   Metadata:
     encoder         : Lavf58.2.103
     Stream #0:0: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002),
 yuv420p(tv, top first), 720x576 [SAR 64:45 DAR 16:9], q=2-31, 25 fps, 25
 tbr, 90k tbn, 25 tbc
     Stream #0:1(ita): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz,
 stereo, s16p, 192 kb/s
     Stream #0:2(ita,ita): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:1 -> #0:1 (copy)
   Stream #0:3 -> #0:2 (copy)
 Press [q] to stop, [?] for help

 Program received signal SIGSEGV, Segmentation fault.
 get_nb_frames (ctx=0x20fb240, stream=0x20efe40, len=39) at
 libavformat/mpegenc.c:586
 586             if (pkt_desc->size == pkt_desc->unwritten_size)
 (gdb) bt
 #0  get_nb_frames (ctx=0x20fb240, stream=0x20efe40, len=39) at
 libavformat/mpegenc.c:586
 #1  flush_packet (ctx=ctx at entry=0x20fb240,
 stream_index=stream_index at entry=2, pts=165054, dts=165054, scr=<optimized
 out>,
     scr at entry=143743, trailer_size=trailer_size at entry=257) at
 libavformat/mpegenc.c:796
 #2  0x00000000006b08cc in output_packet (flush=0, ctx=0x20fb240) at
 libavformat/mpegenc.c:1066
 #3  mpeg_mux_write_packet (ctx=0x20fb240, pkt=<optimized out>) at
 libavformat/mpegenc.c:1176
 #4  0x00000000006c14ed in write_packet (pkt=0x7fffffffcfd0, s=0x20fb240)
 at libavformat/mux.c:754
 #5  av_interleaved_write_frame (s=s at entry=0x20fb240, pkt=0x0,
 pkt at entry=0x7fffffffd3f0) at libavformat/mux.c:1245
 #6  0x000000000049d81c in write_packet (pkt=pkt at entry=0x7fffffffd3f0,
 ost=ost at entry=0x20adb80, unqueue=unqueue at entry=0,
     of=<optimized out>, of=<optimized out>) at fftools/ffmpeg.c:807
 #7  0x000000000049ec05 in output_packet (of=of at entry=0x206f840,
 pkt=pkt at entry=0x7fffffffd3f0, ost=ost at entry=0x20adb80, eof=0)
     at fftools/ffmpeg.c:878
 #8  0x00000000004a3922 in do_streamcopy (pkt=<optimized out>,
 ost=<optimized out>, ist=<optimized out>) at fftools/ffmpeg.c:2075
 #9  process_input_packet (ist=0x2099d60, pkt=0x7fffffffd7c0,
 no_eof=<optimized out>) at fftools/ffmpeg.c:2744
 #10 0x0000000000481428 in process_input (file_index=<optimized out>) at
 fftools/ffmpeg.c:4463
 #11 transcode_step () at fftools/ffmpeg.c:4583
 #12 transcode () at fftools/ffmpeg.c:4637
 #13 main (argc=<optimized out>, argv=<optimized out>) at
 fftools/ffmpeg.c:4843
 (gdb) disass $pc-32,$pc+32
 Dump of assembler code from 0x6afa50 to 0x6afa90:
    0x00000000006afa50 <flush_packet+1104>:      in     (%dx),%eax
    0x00000000006afa51 <flush_packet+1105>:      mov    %r13d,0x20(%rsp)
    0x00000000006afa56 <flush_packet+1110>:      mov    0x20(%rax),%rax
    0x00000000006afa5a <flush_packet+1114>:      jle    0x6b019d
 <flush_packet+2973>
    0x00000000006afa60 <flush_packet+1120>:      mov    %r13d,%edx
    0x00000000006afa63 <flush_packet+1123>:      xor    %r13d,%r13d
    0x00000000006afa66 <flush_packet+1126>:      nopw
 %cs:0x0(%rax,%rax,1)
 => 0x00000000006afa70 <flush_packet+1136>:      mov    0x14(%rax),%ecx
    0x00000000006afa73 <flush_packet+1139>:      xor    %esi,%esi
    0x00000000006afa75 <flush_packet+1141>:      cmp    %ecx,0x10(%rax)
    0x00000000006afa78 <flush_packet+1144>:      mov    0x18(%rax),%rax
    0x00000000006afa7c <flush_packet+1148>:      sete   %sil
    0x00000000006afa80 <flush_packet+1152>:      sub    %ecx,%edx
    0x00000000006afa82 <flush_packet+1154>:      add    %esi,%r13d
    0x00000000006afa85 <flush_packet+1157>:      test   %edx,%edx
    0x00000000006afa87 <flush_packet+1159>:      jg     0x6afa70
 <flush_packet+1136>
    0x00000000006afa89 <flush_packet+1161>:      mov    0x20(%rbx),%rdi
    0x00000000006afa8d <flush_packet+1165>:      mov    0x3c(%rsp),%esi
 End of assembler dump.
 (gdb) info register
 rax            0x0      0
 rbx            0x20fb240        34583104
 rcx            0x240    576
 rdx            0x27     39
 rsi            0x1      1
 rdi            0x20738c0        34027712
 rbp            0x208ef20        0x208ef20
 rsp            0x7fffffffcd80   0x7fffffffcd80
 r8             0xdd10   56592
 r9             0x101    257
 r10            0x36a8   13992
 r11            0x7ffff54cad60   140737308831072
 r12            0x0      0
 r13            0x3      3
 r14            0x0      0
 r15            0x1      1
 rip            0x6afa70 0x6afa70 <flush_packet+1136>
 eflags         0x10206  [ PF IF RF ]
 cs             0x33     51
 ss             0x2b     43
 ds             0x0      0
 es             0x0      0
 fs             0x0      0
 gs             0x0      0
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/6887#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list