Opened 13 years ago
Closed 13 years ago
#675 closed defect (fixed)
ffmpeg crash when streaming non-audio-containing file to ffserver
Reported by: | Eric P. Mangold | Owned by: | Michael Niedermayer |
---|---|---|---|
Priority: | normal | Component: | ffmpeg |
Version: | git-master | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | yes | |
Analyzed by developer: | no |
Description
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@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
Attachments (1)
Change History (2)
by , 13 years ago
Attachment: | do_bisect.sh added |
---|
comment:1 by , 13 years ago
Reproduced by developer: | set |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Locally fixed, will be in master in a moment assuming tests pass