Opened 6 months ago

Last modified 6 months ago

#6151 open defect

ffserver crashes after requesting /status

Reported by: jazzl0ver Owned by:
Priority: important Component: ffserver
Version: git-master Keywords: crash fpe
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Hi.

ffmpeg@ubuntu:~/ffserver$ uname -a
Linux ubuntu 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

ffmpeg@ubuntu:~/ffserver$ cat ffserver.conf
RTSPPort 8554
RTSPBindAddress 0.0.0.0
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxBandwidth 10000
MaxClients 20
MaxHTTPConnections 20
NoDefaults

<Feed feed-kpp.ffm>
  File feed-kpp.ffm
  FileMaxSize 3M
  Launch ffmpeg -re -rtsp_transport tcp -i rtsp://192.168.99.100:554 -override_ffserver -flags:v +global_header -flags:a +global_header -vcodec copy
</Feed>

<Feed feed-pirit.ffm>
  File feed-pirit.ffm
  FileMaxSize 3M
  Launch ffmpeg -re -rtsp_transport tcp -i rtsp://192.168.99.101:554 -override_ffserver -flags:v +global_header -flags:a +global_header -vcodec copy
</Feed>

<Stream live-kpp>
Feed feed-kpp.ffm
Format rtp
VideoSize 800x480
AudioSampleRate 8000
</Stream>

<Stream live-pirit>
Feed feed-pirit.ffm
Format rtp
VideoSize 800x480
AudioSampleRate 8000
</Stream>

<Stream status>
Format status
</Stream>

ffmpeg@ubuntu:~/ffserver$ ffserver -v 9 -loglevel 99 -f ffserver.conf
ffserver version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Probing ffm score:101 size:2048
[ffm @ 0x1cc8960] Format ffm probed with size=2048 and score=101
[NULL @ 0x1cd70c0] Setting entry with key 'ar' to value '8000'
[NULL @ 0x1cd79e0] Setting entry with key 'video_size' to value '800x480'
[AVIOContext @ 0x1cccc00] Statistics: 4096 bytes read, 0 seeks
Probing ffm score:101 size:2048
[ffm @ 0x1cc8960] Format ffm probed with size=2048 and score=101
[NULL @ 0x1cd70c0] Setting entry with key 'ar' to value '8000'
[NULL @ 0x1cd79e0] Setting entry with key 'video_size' to value '800x480'
[AVIOContext @ 0x1cccc00] Statistics: 32768 bytes read, 0 seeks
feed-kpp.ffm: Pid 1396 exited with status 256 after 2 seconds
[NULL @ 0x1cd9aa0] Setting entry with key 'b' to value '0'
[NULL @ 0x1cd9aa0] Setting entry with key 'flags' to value '0x00400000'
[NULL @ 0x1cd9aa0] Setting entry with key 'chroma_sample_location' to value '1'
[NULL @ 0x1cd9aa0] Setting entry with key 'time_base' to value '1/25'
[NULL @ 0x1cd9aa0] Setting entry with key 'bits_per_raw_sample' to value '8'
[NULL @ 0x1cd9aa0] Setting entry with key 'pkt_timebase' to value '1/1000000'
[NULL @ 0x1cd9aa0] Setting entry with key 'pixel_format' to value 'yuvj420p'
[NULL @ 0x1cd9aa0] Setting entry with key 'video_size' to value '800x480'
[NULL @ 0x1cd9f40] Setting entry with key 'b' to value '160000'
[NULL @ 0x1cd9f40] Setting entry with key 'ab' to value '160000'
[NULL @ 0x1cd9f40] Setting entry with key 'flags' to value '0x00400000'
[NULL @ 0x1cd9f40] Setting entry with key 'ar' to value '16000'
[NULL @ 0x1cd9f40] Setting entry with key 'ac' to value '1'
[NULL @ 0x1cd9f40] Setting entry with key 'frame_size' to value '1152'
[NULL @ 0x1cd9f40] Setting entry with key 'channel_layout' to value '4'
[NULL @ 0x1cd9f40] Setting entry with key 'side_data_only_packets' to value '1'
[NULL @ 0x1cd9f40] Setting entry with key 'time_base' to value '1/16000'
[NULL @ 0x1cd9f40] Setting entry with key 'delay' to value '481'
[NULL @ 0x1cd9f40] Setting entry with key 'pkt_timebase' to value '1/1000000'
Probing ffm score:101 size:2048
[ffm @ 0x1ce0940] Format ffm probed with size=2048 and score=101
[NULL @ 0x1ce23e0] Setting entry with key 'ar' to value '8000'
[NULL @ 0x1ce2c80] Setting entry with key 'video_size' to value '800x480'
Probing ffm score:101 size:2048
[ffm @ 0x1ce5a20] Format ffm probed with size=2048 and score=101
[NULL @ 0x1cea5a0] Setting entry with key 'ar' to value '8000'
[NULL @ 0x1ceb120] Setting entry with key 'video_size' to value '800x480'
Failed to parse interval end specification ''
    Last message repeated 1 times
[rtp @ 0x1ce41a0] 0: write len=5087
[rtp @ 0x1ce41a0] RTCP: 60 d219fa5d1eae8 93ab2618
[rtp @ 0x1ce41a0] Sending NAL 1 of len 5083 M=1
[rtp @ 0x1ce41a0] NAL size 5083 > 1460
[rtp @ 0x1ce41a0] rtp_send_data size=1460
    Last message repeated 2 times
[rtp @ 0x1ce41a0] rtp_send_data size=710
[rtp @ 0x1ce4aa0] 0: write len=1440
[rtp @ 0x1ce4aa0] RTCP: 0e d219fa5d27b70 68f261d0
[rtp @ 0x1ce41a0] 0: write len=5102
[rtp @ 0x1ce41a0] Sending NAL 1 of len 5098 M=1
[rtp @ 0x1ce41a0] NAL size 5098 > 1460
[rtp @ 0x1ce41a0] rtp_send_data size=1460
    Last message repeated 2 times
[rtp @ 0x1ce41a0] rtp_send_data size=725
[rtp @ 0x1ce4aa0] 0: write len=1440
[rtp @ 0x1ce4aa0] rtp_send_data size=1444
[rtp @ 0x1ce41a0] 0: write len=5089
...
Floating point exception (core dumped)

The floating point exception happened after running the following command in another console:

ffmpeg@ubuntu:~$ curl -s http://localhost:8090/status
ffmpeg@ubuntu:~$
ffmpeg@ubuntu:~/ffserver$ gdb /usr/bin/ffserver core
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
Copyright (C) 2016 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".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/ffserver...Reading symbols from /usr/lib/debug/.build-id/9b/8aad9657cb1a33f0f9ed10c6069d8e44ca1960.debug...done.
done.
[New LWP 1402]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `ffserver -v 9 -loglevel 99 -f ffserver.conf'.
Program terminated with signal SIGFPE, Arithmetic exception.
#0  0x0000000000416bfb in snprintf (__fmt=0x41cfc8 "%dx%d, q=%d-%d, fps=%d", __n=64, __s=0x7ffd4a7a4cd0 "")
    at /usr/include/x86_64-linux-gnu/bits/stdio2.h:64
64      /usr/include/x86_64-linux-gnu/bits/stdio2.h: No such file or directory.
(gdb) bt
#0  0x0000000000416bfb in snprintf (__fmt=0x41cfc8 "%dx%d, q=%d-%d, fps=%d", __n=64, __s=0x7ffd4a7a4cd0 "")
    at /usr/include/x86_64-linux-gnu/bits/stdio2.h:64
#1  print_stream_params (stream=0xda03e0, pb=0xda3da0) at ffserver.c:1781
#2  compute_status (c=0xdc5ec0) at ffserver.c:1969
#3  http_parse_request (c=c@entry=0xdc5ec0) at ffserver.c:1735
#4  0x0000000000408e64 in handle_connection (c=0xdc5ec0) at ffserver.c:900
#5  http_server () at ffserver.c:678
#6  main (argc=<optimized out>, argv=<optimized out>) at ffserver.c:3870
(gdb)
#0  0x0000000000416bfb in snprintf (__fmt=0x41cfc8 "%dx%d, q=%d-%d, fps=%d", __n=64, __s=0x7ffd4a7a4cd0 "")
    at /usr/include/x86_64-linux-gnu/bits/stdio2.h:64
#1  print_stream_params (stream=0xda03e0, pb=0xda3da0) at ffserver.c:1781
#2  compute_status (c=0xdc5ec0) at ffserver.c:1969
#3  http_parse_request (c=c@entry=0xdc5ec0) at ffserver.c:1735
#4  0x0000000000408e64 in handle_connection (c=0xdc5ec0) at ffserver.c:900
#5  http_server () at ffserver.c:678
#6  main (argc=<optimized out>, argv=<optimized out>) at ffserver.c:3870

This happens when the first feed (feed-kpp.ffm) can't be started due to inaccessibility of 192.168.99.100:

ffmpeg@ubuntu:~/ffserver$ telnet 192.168.99.100 554
Trying 192.168.99.100...
telnet: Unable to connect to remote host: Connection refused

Change History (3)

comment:1 Changed 6 months ago by cehoyos

Please test current FFmpeg git head.

comment:2 Changed 6 months ago by jazzl0ver

I've just tried 3.1.3 from http://ubuntuhandbook.org/index.php/2016/09/install-ffmpeg-3-1-ubuntu-16-04-ppa/ and it's broken my transcoding

comment:3 Changed 6 months ago by cehoyos

  • Component changed from undetermined to ffserver
  • Keywords crash fpe added
  • Reproduced by developer set
  • Status changed from new to open
  • Version changed from unspecified to git-master

Not really a regression, reproducible since 6c2ed67c
(Needs NoDefaults afaict)

Starting program: ffserver_g -f ffserver.conf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
ffserver version N-83522-g6a37abc Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      55. 47.100 / 55. 47.100
  libavcodec     57. 80.100 / 57. 80.100
  libavformat    57. 66.102 / 57. 66.102
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 73.100 /  6. 73.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
[ffm @ 0x1e24820] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
[ffm @ 0x1e24820] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
[ffm @ 0x1e24820] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
[ffm @ 0x1e24820] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Detaching after fork from child process 16063.
Detaching after fork from child process 16064.
feed-kpp.ffm: Pid 16063 exited with status 256 after 0 seconds
feed-pirit.ffm: Pid 16064 exited with status 256 after 0 seconds

Program received signal SIGFPE, Arithmetic exception.
0x0000000000481ed7 in print_stream_params (stream=0x1e212c0, pb=0x1e23360) at ffserver.c:1908
1908                snprintf(parameters, sizeof(parameters),
bt
#0  0x0000000000481ed7 in print_stream_params (stream=0x1e212c0, pb=0x1e23360) at ffserver.c:1908
#1  compute_status (c=0x1e2db40) at ffserver.c:2126
#2  http_parse_request (c=c@entry=0x1e2db40) at ffserver.c:1862
#3  0x00000000004748c9 in handle_connection (c=0x1e2db40) at ffserver.c:1014
#4  http_server () at ffserver.c:784
#5  main (argc=<optimized out>, argv=<optimized out>) at ffserver.c:4015
Note: See TracTickets for help on using tickets.