Ticket #1541 (closed defect: needs_more_info)

Opened 10 months ago

Last modified 3 days ago

flv hangs on ff_vp3_idct_add_neon on ARM Cortex-A8 with gstreamer

Reported by: kaijun61 Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: flv arm vp6
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

a flv file hangs on ff_vp3_idct_add_neon on beagleboard when tested on latest ffmpeg master branch

Attachments

20051210-w50s.flv Download (653.4 KB) - added by kaijun61 10 months ago.
56.png Download (29.9 KB) - added by kaijun61 10 months ago.

Change History

Changed 10 months ago by kaijun61

comment:1 Changed 10 months ago by cehoyos

  • Priority changed from normal to important

Please add backtrace together with command line and console output.

Changed 10 months ago by kaijun61

comment:2 Changed 10 months ago by kaijun61

I use my gstreamer-based application

root@beagleboard:~# gdbserver localhost:10000 gplayer -a 20051210-w50s.flv
Process gplayer created; pid = 662
Listening on port 10000
Remote debugging from host 192.168.2.7

20051210-w50s.flv

Input #1, flv, from '20051210-w50s.flv':

Duration: 00:00:16.92, start: 0.000000, bitrate: 316 kb/s

Stream #1:0: Video: vp6f, yuv420p, 360x288, 266 kb/s, 25 tbr, 1k tbn, 1k tbc
Stream #1:1: Audio: mp3, 22050 Hz, stereo, s16, 40 kb/s

skipped media type: 1

Setting pipeline to PLAYING...

Version 0, edited 10 months ago by kaijun61 (next)

comment:3 Changed 10 months ago by cehoyos

Is the problem also reproducible with ffmpeg?

comment:4 Changed 10 months ago by kaijun61

I tried ffplay on linux PC. It works

ffplay ~/Videos/20051210-w50s.flv 
ffplay version 0.8.12, Copyright (c) 2003-2011 the FFmpeg developers
  built on Jun 13 2012 09:57:38 with gcc 4.6.3 20120306 (Red Hat 4.6.3-2)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --enable-libcelt --enable-libdc1394 --enable-libdirac --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  8. 0 / 53.  8. 0
  libavformat  53.  5. 0 / 53.  5. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
[flv @ 0x7fc5140023e0] Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from '/home/tang/Videos/20051210-w50s.flv':
  Metadata:
    duration        : 17
    width           : 360
    height          : 288
    videodatarate   : 260
    framerate       : 25
    videocodecid    : 4
    audiodatarate   : 40
    audiodelay      : 0
    audiocodecid    : 2
    canSeekToEnd    : 1
    creationdate    : Fri Feb 03 11:52:46 2006

  Duration: 00:00:16.92, start: 0.000000, bitrate: 306 kb/s
    Stream #0.0: Video: vp6f, yuv420p, 360x288, 266 kb/s, 25 tbr, 1k tbn, 1k tbc
    Stream #0.1: Audio: mp3, 22050 Hz, stereo, s16, 40 kb/s
Last edited 10 months ago by cehoyos (previous) (diff)

comment:5 Changed 10 months ago by cehoyos

Please test ffmpeg on your neon device.

comment:6 Changed 10 months ago by kaijun61

ffmpeg -i 20051210-w50s.flv
ffmpeg version git-2012-07-16-9b2c0e5 Copyright (c) 2000-2012 the FFmpeg developers

built on Jul 18 2012 14:57:11 with gcc 4.5.3 20110311 (prerelease)
configuration: --enable-shared --enable-pthreads --disable-gpl --enable-postproc --enable-avfilter --enable-swscale --enable-neon --enable-pic --enable-debug=3 --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --cross-prefix=arm-angstrom-linux-gnueabi- --prefix=/usr --disable-x11grab --disable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --disable-libvpx --disable-optimizations --disable-stripping --arch=arm --target-os=linux --enable-cross-compile --extra-cflags=' -O0 -fno-omit-frame-pointer -ggdb3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi' --extra-ldflags='-Wl,-O1 -Wl,--hash-style=gnu' --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi --enable-hardcoded-tables --cpu=cortex-a8
WARNING: library configuration mismatch
avutil configuration: --enable-shared --enable-pthreads --disable-gpl --disable-postproc --disable-avfilter --disable-swscale --enable-neon --enable-pic --enable-debug=3 --enable-ffmpeg --enable-ffplay --disable-ffprobe --disable-ffserver --cross-prefix=arm-angstrom-linux-gnueabi- --prefix=/usr --disable-x11grab --disable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --disable-libvpx --disable-optimizations --disable-stripping --arch=arm --target-os=linux --enable-cross-compile --extra-cflags=' -O0 -fno-omit-frame-pointer -ggdb3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi' --extra-ldflags='-Wl,-O1 -Wl,--hash-style=gnu' --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi --enable-hardcoded-tables --cpu=cortex-a8
avcodec configuration: --enable-shared --enable-pthreads --disable-gpl --disable-postproc --disable-avfilter --disable-swscale --enable-neon --enable-pic --enable-debug=3 --enable-ffmpeg --enable-ffplay --disable-ffprobe --disable-ffserver --cross-prefix=arm-angstrom-linux-gnueabi- --prefix=/usr --disable-x11grab --disable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --disable-libvpx --disable-optimizations --disable-stripping --arch=arm --target-os=linux --enable-cross-compile --extra-cflags=' -O0 -fno-omit-frame-pointer -ggdb3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi' --extra-ldflags='-Wl,-O1 -Wl,--hash-style=gnu' --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi --enable-hardcoded-tables --cpu=cortex-a8
avformat configuration: --enable-shared --enable-pthreads --disable-gpl --disable-postproc --disable-avfilter --disable-swscale --enable-neon --enable-pic --enable-debug=3 --enable-ffmpeg --enable-ffplay --disable-ffprobe --disable-ffserver --cross-prefix=arm-angstrom-linux-gnueabi- --prefix=/usr --disable-x11grab --disable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --disable-libvpx --disable-optimizations --disable-stripping --arch=arm --target-os=linux --enable-cross-compile --extra-cflags=' -O0 -fno-omit-frame-pointer -ggdb3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi' --extra-ldflags='-Wl,-O1 -Wl,--hash-style=gnu' --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi --enable-hardcoded-tables --cpu=cortex-a8
swresample configuration: --enable-shared --enable-pthreads --disable-gpl --enable-postproc --enable-avfilter --enable-swscale --enable-swresample --enable-neon --enable-pic --enable-debug=3 --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --cross-prefix=arm-angstrom-linux-gnueabi- --prefix=/usr --disable-x11grab --disable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --disable-libvpx --disable-optimizations --disable-stripping --arch=arm --target-os=linux --enable-cross-compile --extra-cflags=' -O0 -fno-omit-frame-pointer -ggdb3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi' --extra-ldflags='-Wl,-O1 -Wl,--hash-style=gnu' --sysroot=/home/tang/Projects/OE/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi --enable-hardcoded-tables --cpu=cortex-a8
libavutil 51. 65.100 / 51. 65.100
libavcodec 54. 40.100 / 54. 40.100
libavformat 54. 16.104 / 54. 16.104
libavdevice 54. 1.100 / 54. 1.100
libavfilter 3. 2.100 / 3. 2.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100

[flv @ 0x433d0] max_analyze_duration 5000000 reached at 25000000
Input #0, flv, from '20051210-w50s.flv':

Duration: 00:00:16.92, start: 0.000000, bitrate: 316 kb/s

Stream #0:0: Video: vp6f, yuv420p, 360x288, 266 kb/s, 0.04 fps, 0.04 tbr, 1k tbn, 1k tbc
Stream #0:1: Audio: mp3, 22050 Hz, stereo, s16, 40 kb/s

At least one output file must be specified

comment:7 Changed 10 months ago by cehoyos

Does it also hang with ffmpeg?
One possibility to test is:
$ ffmpeg -i 20051210-w50s.flv -f null -

If you cannot reproduce the hang, please recompile with --enable-cross-compile --cross-prefix=arm-angstrom-linux-gnueabi --target-os=linux (or whatever is the necessary minimum to compile an optimized neon binary).

comment:8 follow-up: ↓ 9 Changed 10 months ago by kaijun61

It doesn't hang with ffmpeg since ffmpeg may not decode frame. I found it hangs when the third packet of size of 1112 bytes enter the said function. When I step over the function, it hangs. Otherwise, if I step in and out, it doesn't.
Yes, the application is compiled with these options.

comment:9 in reply to: ↑ 8 Changed 10 months ago by cehoyos

Replying to kaijun61:

It doesn't hang with ffmpeg since ffmpeg may not decode frame.

In which situation does ffmpeg not decode a frame?

I found it hangs when the third packet of size of 1112 bytes enter the said function. When I step over the function, it hangs. Otherwise, if I step in and out, it doesn't.

Is this with ffmpeg_g ?

Yes, the application is compiled with these options.

comment:10 Changed 10 months ago by kaijun61

I use ffmpeg libavcodec, it hangs on the third video packet. You can try. no, I don't use ffmpeg_g. I work on console.

comment:11 Changed 9 months ago by michael

your output contains "WARNING: library configuration mismatch". Please retest with libs that match in their versions
Also full gdb output is needed, including registers and disassembly, if you can still reproduce it after fixing the libraries.
And if you say it hangs, try to find out not only one spot where execution happens but try to find out in which loop its trapped.

comment:12 Changed 9 months ago by kaijun61

I have pointed out where the problem is. Can you reproduce the issue?

comment:13 Changed 8 months ago by michael

tested on a panda board, no crash. If you can still reproduce this with latest ffmpeg then we need much more information (full disassembly and register contents of where it crashes), valgrind output may or may not be usefull too. Even better would be if you could look at the code yourself and see if you spot why it hangs.
thanks

comment:14 Changed 8 months ago by kaijun61

I tested again. It is same as before. It hangs at vp3_idct_start_neon in function ff_vp3_idct_add_neon when I debug it. In this ticket I have given details.

comment:15 follow-up: ↓ 16 Changed 8 months ago by cehoyos

Please provide a backtrace. Without a backtrace, it is impossible to fix the problem afaict.

comment:16 in reply to: ↑ 15 Changed 8 months ago by michael

Replying to cehoyos:

Please provide a backtrace. Without a backtrace, it is impossible to fix the problem afaict.

We need full disassembly and register contents of where it crashes. a backtrace is USELESS!
valgrind may be usefull

comment:17 Changed 8 months ago by kaijun61

As I said before, if I step into each assembly instruction, it doesn't crash, but if I step over assembly function, it crashes.

comment:18 Changed 8 months ago by michael

quoting http://ffmpeg.org/bugreports.html

When gdb encounters its problem, run the following commands and copy/paste the output into your bug report:

bt
disass $pc-32,$pc+32
info all-registers

you only provided the first, which is useless

comment:19 Changed 5 months ago by michael

  • Summary changed from flv hangs on ff_vp3_idct_add_neon on ARM Cortex-A8 to flv hangs on ff_vp3_idct_add_neon on ARM Cortex-A8 with gstreamer

not reproduceable with ffmpeg on a beaglebord

Also theres far too much information missing about this bug

Whats needed? register dump & disassembly in addition to a matching backtrace.
And as this seems gstreamer specific the SAME gstreamer+ffmpeg testcase which crashes on ARM should be tested on x86

comment:20 Changed 3 days ago by cehoyos

  • Keywords flv vp3 added; flv, cortext- A8 removed
  • Status changed from new to closed
  • Resolution set to needs_more_info

Please reopen this ticket if you can add the missing information.

comment:21 Changed 3 days ago by cehoyos

  • Keywords vp6 added; vp3 removed
Note: See TracTickets for help on using tickets.