[FFmpeg-trac] #675(FFmpeg:new): ffmpeg crash when streaming non-audio-containing file to ffserver
FFmpeg
trac at avcodec.org
Mon Nov 21 22:58:19 CET 2011
#675: ffmpeg crash when streaming non-audio-containing file to ffserver
--------------------------------------+---------------------------------
Reporter: teratorn | Owner: michael
Type: defect | Status: new
Priority: normal | Component: FFmpeg
Version: git-master | Keywords:
Blocked By: | Blocking:
Reproduced by developer: 0 | Analyzed by developer: 0
--------------------------------------+---------------------------------
Apparently there is a problem trying to stream a file that does not
contain an audio stream to ffserver. I'm using the default sample
ffserver.conf and running ffserver like so:
{{{
ffserver -f doc/ffserver.conf
}}}
Then I try to stream the source media to ffserver like so:
{{{
ffmpeg -i out.mpg http://localhost:8090/feed1.ffm
}}}
On git master this seems to segfault reliably:
{{{
Hickory ~/code-other/ffmpeg % gdb --args ffmpeg -i test.mpg
http://localhost:8090/feed1.ffm
GNU gdb (GDB) 7.0.1-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/teratorn/code-other/ffmpeg/ffmpeg...done.
(gdb) r
Starting program: /home/teratorn/code-other/ffmpeg/ffmpeg -i test.mpg
http://localhost:8090/feed1.ffm
[Thread debugging using libthread_db enabled]
ffmpeg version N-35061-g4931c8f, Copyright (c) 2000-2011 the FFmpeg
developers
built on Nov 21 2011 11:03:26 with gcc 4.4.5
configuration: --prefix=/home/teratorn/altsys --enable-shared --enable-
gpl --enable-libx264 --enable-debug --disable-stripping --disable-asm
--optflags=-O0
libavutil 51. 26. 0 / 51. 26. 0
libavcodec 53. 36. 0 / 53. 36. 0
libavformat 53. 21. 0 / 53. 21. 0
libavdevice 53. 4. 0 / 53. 4. 0
libavfilter 2. 49. 0 / 2. 49. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
[mpeg @ 0x627710] max_analyze_duration 5000000 reached at 5005000
Input #0, mpeg, from 'test.mpg':
Duration: 00:00:06.84, start: 1.000000, bitrate: 469 kb/s
Stream #0:0[0x1e0]: Video: mpeg1video, yuv420p, 320x240 [SAR 200:219
DAR 800:657], 104857 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 29.97 tbc
[buffer @ 0x62f960] w:320 h:240 pixfmt:yuv420p tb:1/1000000 sar:200/219
sws_param:
[scale @ 0x63e7a0] w:320 h:240 fmt:yuv420p -> w:160 h:128 fmt:yuv420p
flags:0x4
[buffer @ 0x62d470] w:320 h:240 pixfmt:yuv420p tb:1/1000000 sar:200/219
sws_param:
[scale @ 0x6548d0] w:320 h:240 fmt:yuv420p -> w:352 h:240 fmt:yuv420p
flags:0x4
[mp2 @ 0x63e950] codec type or id mismatches
Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
Stream #0:0: Audio: mp2, 44100 Hz, 1 channels, s16, 32 kb/s
Stream #0:1: Video: mpeg1video, yuv420p, 160x128 [SAR 640:657 DAR
800:657], q=2-31, 64 kb/s, 1000k tbn, 29.97 tbc
Stream #0:2: Audio: wmav2, 22050 Hz, 1 channels, s16, 64 kb/s
Stream #0:3: Video: msmpeg4, yuv420p, 352x240 [SAR 2000:2409 DAR
800:657], q=2-31, 256 kb/s, 1000k tbn, 29.97 tbc
Stream mapping:
Stream #0:0 -> #0:0
Program received signal SIGSEGV, Segmentation fault.
0x000000000040e039 in transcode_init (output_files=0x629c50,
nb_output_files=1, input_files=0x62fc50, nb_input_files=1) at
ffmpeg.c:2455
2455 ost->sync_ist->st->index);
(gdb) bt
#0 0x000000000040e039 in transcode_init (output_files=0x629c50,
nb_output_files=1, input_files=0x62fc50, nb_input_files=1) at
ffmpeg.c:2455
#1 0x000000000040e259 in transcode (output_files=0x629c50,
nb_output_files=1, input_files=0x62fc50, nb_input_files=1) at
ffmpeg.c:2495
#2 0x0000000000417619 in main (argc=4, argv=0x7fffffffe378) at
ffmpeg.c:4760
(gdb) print ost
$1 = (OutputStream *) 0x690e70
(gdb) print ost->sync_ist
$2 = (struct InputStream *) 0x0
(gdb)
}}}
But on the last release, 0.8.6, it produces a nice error message instead:
{{{
Hickory ~/code-other/ffmpeg % ffmpeg -i out.mpg
http://localhost:8090/feed1.ffm
ffmpeg version 93ade97, Copyright (c) 2000-2011 the Libav developers
built on Nov 21 2011 15:32:52 with gcc 4.4.5
configuration: --prefix=/home/teratorn/altsys --enable-shared --enable-
gpl --enable-libx264 --enable-debug --disable-asm --disable-optimizations
--disable-doc
libavutil 51. 8. 0 / 51. 8. 0
libavcodec 53. 5. 0 / 53. 5. 0
libavformat 53. 2. 0 / 53. 2. 0
libavdevice 53. 0. 0 / 53. 0. 0
libavfilter 2. 4. 0 / 2. 4. 0
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 52. 0. 0 / 52. 0. 0
[mpeg @ 0x11f9380] max_analyze_duration reached
Input #0, mpeg, from 'out.mpg':
Duration: 00:00:06.84, start: 1.000000, bitrate: 438 kb/s
Stream #0.0[0x1e0]: Video: mpeg1video, yuv420p, 320x240 [PAR 200:219
DAR 800:657], 104857 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 29.97 tbc
Incompatible sample format '(null)' for codec 'mp2', auto-selecting format
's16'
Mon Nov 21 15:50:00 2011 127.0.0.1 - - [GET] "/feed1.ffm HTTP/1.1" 200
4149
Last message repeated 1 times
Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
Stream #0.0: Audio: mp2, 44100 Hz, 1 channels, s16, 32 kb/s
Stream #0.1: Video: mpeg1video, yuv420p, 160x128, q=2-31, 64 kb/s,
1000k tbn, 3 tbc
Stream #0.2: Audio: mp2, 22050 Hz, 1 channels, s16, 64 kb/s
Stream #0.3: Video: msmpeg4, yuv420p, 352x240, q=2-31, 256 kb/s, 1000k
tbn, 15 tbc
Could not find input stream matching output stream #0.0
Mon Nov 21 15:50:00 2011 127.0.0.1 - - [POST] "/feed1.ffm HTTP/1.1" 200 0
}}}
So I wrote a bisect script (attached) and ran it with
{{{
git bisect start master n0.8.6
git bisect run ./do_bisect.sh
}}}
It seems to have found the commit which introduced the crash - but I
haven't examined this commit or tried to debug it further.
{{{
1cede1d0112b5b26e6d023846729662b7cf1853f is the first bad commit
commit 1cede1d0112b5b26e6d023846729662b7cf1853f
Author: Anton Khirnov <anton at khirnov.net>
Date: Sat Jun 25 07:43:49 2011 +0200
ffmpeg: factor common code from new_a/v/s/d_stream to
new_output_stream()
:100644 100644 fe8b3446b8b0221204ea8d1a1244692a9b145d33
91cfb80b148c778462af673cd9779e57fde44301 M ffmpeg.c
}}}
Is the problem obvious to anyone? Let me know if there is anything else I
can provide.
Thanks,
Eric Mangold
Senior Engineer - Cattura Video
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/675>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list