| Summary: | Gstreamer on the BeagleBone black gets a Segmentation fault | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Build System, Metadata & Runtime] OE-Core | Reporter: | Sven Vos <sven.j.vos> | ||||
| Component: | multimedia | Assignee: | Denys Dmytriyenko <denis> | ||||
| Status: | RESOLVED FIXED | QA Contact: | Apoorv <apoorv.sangal> | ||||
| Severity: | normal | ||||||
| Priority: | Medium | CC: | jose.perez.carranza, meta.mr.watcher, meta.watcher, richard.purdie, sangeeta.jain | ||||
| Version: | 1.6.2 | ||||||
| Target Milestone: | Future | ||||||
| Hardware: | BeagleBone | ||||||
| OS: | arm | ||||||
| Whiteboard: | |||||||
| OS type for building Yocto: | --- | Type of Regression: | --- | ||||
| Verified: | Documentation change: | No (bug/feature does not impact docs) | |||||
| Attachments: |
|
||||||
(In reply to comment #0) > Created attachment 2044 [details] > Video file > > I was testing the Gstreamer on the Beaglebone black, but i got an > Segmentation fault while executing a sample video of TI (see attached .m2v > file). I did the following build steps: > > 1. Get poky > 2. Edit local conf, so it builds for the Beaglebone black. > 3. Edit Core-image-minimal (or sato, same problem with both) and add the > following lines: CORE_IMAGE_EXTRA_INSTALL += "liboil gdb gstreamer gst-ffmpeg gst-plugins-gl gst-plugins-bad-videoparsersbad gst-plugins-bad-fbdevsink gst-plugins-bad-colorspace gst-plugins-base-ffmpegcolorspace gst-plugins-good gst-plugins-ugly strace" > > 4. Copy the image and .m2v file to the device > 5. cd to the m2v file directory > 6. start the program: > - root@beaglebone:/# gst-launch-0.10 filesrc location=HistoryOfTI-480p.m2v ! > mpegvideoparse ! ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink > > Setting pipeline to PAUSED ... > Pipeline is PREROLLING ... > Caught SIGSEGV accessing address (nil) > #0 0xb6c57990 in ?? () > #1 0xb6c57984 in ?? () > #2 0xb6c57984 in ?? () > Spinning. Please run 'gdb gst-launch 1673' to continue debugging, Ctrl-C to > quit, or Ctrl-\ to dump core. > > -------- with verbose > > root@beaglebone:/# gst-launch-0.10 -v filesrc location=HistoryOfTI-480p.m2v > ! mpegvideoparse ! ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink > > Setting pipeline to PAUSED ... > Pipeline is PREROLLING ... > /GstPipeline:pipeline0/GstMpegvParse:mpegvparse0.GstPad:src: caps = > video/mpeg, mpegversion=(int)2, systemstream=(boolean)false, > parsed=(boolean)true, width=(int)720, height=(int)405, > framerate=(fraction)48/1, pixel-aspect-ratio=(fraction)1/1, > codec_data=(buffer)2d019512ffffe1e8000001b5148a00010000000001b8, > profile=(string)main, level=(string)low, interlaced=(boolean)false > /GstPipeline:pipeline0/ffdec_mpeg2video:ffdec_mpeg2video0.GstPad:sink: caps > = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false, > parsed=(boolean)true, width=(int)720, height=(int)405, > framerate=(fraction)48/1, pixel-aspect-ratio=(fraction)1/1, > codec_data=(buffer)2d019512ffffe1e8000001b5148a00010000000001b8, > profile=(string)main, level=(string)low, interlaced=(boolean)false > Caught SIGSEGV accessing address (nil) > #0 0xb6c52990 in ?? () > #1 0xb6c52984 in ?? () > #2 0xb6c52984 in ?? () > Spinning. Please run 'gdb gst-launch 1680' to continue debugging, Ctrl-C to > quit, or Ctrl-\ to dump core. > > 7. used strace for debuging: > - root@beaglebone:/# strace gst-launch-0.10 filesrc > location=HistoryOfTI-480p.m2v ! mpegvideoparse ! ffdec_mpeg2video ! > ffmpegcolorspace ! fbdevsink > > ..... > ..... > read(4, "\1\0\0\0\0\0\0\0", 16) = 8 > write(4, "\1\0\0\0\0\0\0\0", 8) = 8 > clock_gettime(CLOCK_MONOTONIC, {6386, 328881927}) = 0 > poll([{fd=4, events=POLLIN}], 1, 0) = 1 ([{fd=4, revents=POLLIN}]) > read(4, "\1\0\0\0\0\0\0\0", 16) = 8 > write(4, "\1\0\0\0\0\0\0\0", 8) = 8 > clock_gettime(CLOCK_MONOTONIC, {6386, 332441427}) = 0 > poll([{fd=4, events=POLLIN}], 1, 208) = 1 ([{fd=4, revents=POLLIN}]) > read(4, "\1\0\0\0\0\0\0\0", 16) = 8 > clock_gettime(CLOCK_MONOTONIC, {6386, 334713052}) = 0 > clock_gettime(CLOCK_MONOTONIC, {6386, 335047760}) = 0 > poll([{fd=4, events=POLLIN}], 1, 206Spinning. Please run 'gdb gst-launch > 1728' > to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core. > ) = 0 (Timeout) > read(4, 0xbeb64850, 16) = -1 EAGAIN (Resource temporarily > unavai > lable) > clock_gettime(CLOCK_MONOTONIC, {6386, 543048552}) = 0 > clock_gettime(CLOCK_MONOTONIC, {6386, 543509927}) = 0 > poll([{fd=4, events=POLLIN}], 1, 250) = 0 (Timeout) > clock_gettime(CLOCK_MONOTONIC, {6386, 794639385}) = 0 > clock_gettime(CLOCK_MONOTONIC, {6386, 794880260}) = 0 > poll([{fd=4, events=POLLIN}], 1, 250) = 0 (Timeout) > clock_gettime(CLOCK_MONOTONIC, {6387, 46005052}) = 0 > clock_gettime(CLOCK_MONOTONIC, {6387, 46409927}) = 0 > poll([{fd=4, events=POLLIN}], 1, 250) = 0 (Timeout) > clock_gettime(CLOCK_MONOTONIC, {6387, 297759843}) = 0 > clock_gettime(CLOCK_MONOTONIC, {6387, 298150593}) = 0 > ..... > ..... > > 8. used GDB for debugging > - root@beaglebone:/# gdb gst-launch-0.10 > (gdb) set args filesrc location=HistoryOfTI-480p.m2v ! mpegvideoparse ! > ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink > (gdb) run > Starting program: /usr/bin/gst-launch-0.10 filesrc > location=HistoryOfTI-480p.m2v > ! mpegvideoparse ! ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink > warning: File "/lib/libthread_db-1.0.so" auto-loading has been declined by > your > `auto-load safe-path' set to "$debugdir:$datadir/auto-load". > To enable execution of this file add > add-auto-load-safe-path /lib/libthread_db-1.0.so > line to your configuration file "/home/root/.gdbinit". > To completely disable this security protection add > set auto-load safe-path / > line to your configuration file "/home/root/.gdbinit". > For more information about this security protection see the > "Auto-loading safe path" section in the GDB manual. E.g., run from the > shell: > info "(gdb)Auto-loading safe path" > warning: Unable to find libthread_db matching inferior's thread library, > thread > debugging will not be available. > Setting pipeline to PAUSED ... > Pipeline is PREROLLING ... > [New LWP 1672] > > Program received signal SIGSEGV, Segmentation fault. > [Switching to LWP 1672] > 0xb60330a8 in ?? () from /usr/lib/libavcodec.so.53 > > (gdb) info threads > Id Target Id Frame > * 2 LWP 1672 "mpegvparse0:sin" 0xb60330a8 in ?? () > from /usr/lib/libavcodec.so.53 > 1 LWP 1669 "gst-launch-0.10" 0xb6d11994 in poll () from /lib/libc.so.6 > > (gdb) bt > #0 0xb60330a8 in ?? () from /usr/lib/libavcodec.so.53 > #1 0x00000008 in ?? () > #2 0x00000008 in ?? () > Backtrace stopped: previous frame identical to this frame (corrupt stack?) > > (gdb) thread 1 > [Switching to thread 1 (LWP 1669)] > #0 0xb6d11994 in poll () from /lib/libc.so.6 > > (gdb) bt > #0 0xb6d11994 in poll () from /lib/libc.so.6 > #1 0xb6decf00 in ?? () from /usr/lib/libglib-2.0.so.0 > #2 0xb6decf00 in ?? () from /usr/lib/libglib-2.0.so.0 > Backtrace stopped: previous frame identical to this frame (corrupt stack? Added the lines for core-image-minimal: CORE_IMAGE_EXTRA_INSTALL += "liboil gdb gstreamer gst-ffmpeg gst-plugins-gl gst-plugins-bad-videoparsersbad gst-plugins-bad-fbdevsink gst-plugins-bad-colorspace gst-plugins-base-ffmpegcolorspace gst-plugins-good gst-plugins-ugly strace" After some testing, i found out that it's working with X11. When i am using ximagesink it works, but it still doenst work with the framebuffer, so it looks like the problem is in the fbdevsink. No issue reported in Gstreamer on Beaglebone in recent QA cycles for 2.7 onwards. |
Created attachment 2044 [details] Video file I was testing the Gstreamer on the Beaglebone black, but i got an Segmentation fault while executing a sample video of TI (see attached .m2v file). I did the following build steps: 1. Get poky 2. Edit local conf, so it builds for the Beaglebone black. 3. Edit Core-image-minimal (or sato, same problem with both) and add the following lines: 4. Copy the image and .m2v file to the device 5. cd to the m2v file directory 6. start the program: - root@beaglebone:/# gst-launch-0.10 filesrc location=HistoryOfTI-480p.m2v ! mpegvideoparse ! ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Caught SIGSEGV accessing address (nil) #0 0xb6c57990 in ?? () #1 0xb6c57984 in ?? () #2 0xb6c57984 in ?? () Spinning. Please run 'gdb gst-launch 1673' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core. -------- with verbose root@beaglebone:/# gst-launch-0.10 -v filesrc location=HistoryOfTI-480p.m2v ! mpegvideoparse ! ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... /GstPipeline:pipeline0/GstMpegvParse:mpegvparse0.GstPad:src: caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false, parsed=(boolean)true, width=(int)720, height=(int)405, framerate=(fraction)48/1, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)2d019512ffffe1e8000001b5148a00010000000001b8, profile=(string)main, level=(string)low, interlaced=(boolean)false /GstPipeline:pipeline0/ffdec_mpeg2video:ffdec_mpeg2video0.GstPad:sink: caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false, parsed=(boolean)true, width=(int)720, height=(int)405, framerate=(fraction)48/1, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)2d019512ffffe1e8000001b5148a00010000000001b8, profile=(string)main, level=(string)low, interlaced=(boolean)false Caught SIGSEGV accessing address (nil) #0 0xb6c52990 in ?? () #1 0xb6c52984 in ?? () #2 0xb6c52984 in ?? () Spinning. Please run 'gdb gst-launch 1680' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core. 7. used strace for debuging: - root@beaglebone:/# strace gst-launch-0.10 filesrc location=HistoryOfTI-480p.m2v ! mpegvideoparse ! ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink ..... ..... read(4, "\1\0\0\0\0\0\0\0", 16) = 8 write(4, "\1\0\0\0\0\0\0\0", 8) = 8 clock_gettime(CLOCK_MONOTONIC, {6386, 328881927}) = 0 poll([{fd=4, events=POLLIN}], 1, 0) = 1 ([{fd=4, revents=POLLIN}]) read(4, "\1\0\0\0\0\0\0\0", 16) = 8 write(4, "\1\0\0\0\0\0\0\0", 8) = 8 clock_gettime(CLOCK_MONOTONIC, {6386, 332441427}) = 0 poll([{fd=4, events=POLLIN}], 1, 208) = 1 ([{fd=4, revents=POLLIN}]) read(4, "\1\0\0\0\0\0\0\0", 16) = 8 clock_gettime(CLOCK_MONOTONIC, {6386, 334713052}) = 0 clock_gettime(CLOCK_MONOTONIC, {6386, 335047760}) = 0 poll([{fd=4, events=POLLIN}], 1, 206Spinning. Please run 'gdb gst-launch 1728' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core. ) = 0 (Timeout) read(4, 0xbeb64850, 16) = -1 EAGAIN (Resource temporarily unavai lable) clock_gettime(CLOCK_MONOTONIC, {6386, 543048552}) = 0 clock_gettime(CLOCK_MONOTONIC, {6386, 543509927}) = 0 poll([{fd=4, events=POLLIN}], 1, 250) = 0 (Timeout) clock_gettime(CLOCK_MONOTONIC, {6386, 794639385}) = 0 clock_gettime(CLOCK_MONOTONIC, {6386, 794880260}) = 0 poll([{fd=4, events=POLLIN}], 1, 250) = 0 (Timeout) clock_gettime(CLOCK_MONOTONIC, {6387, 46005052}) = 0 clock_gettime(CLOCK_MONOTONIC, {6387, 46409927}) = 0 poll([{fd=4, events=POLLIN}], 1, 250) = 0 (Timeout) clock_gettime(CLOCK_MONOTONIC, {6387, 297759843}) = 0 clock_gettime(CLOCK_MONOTONIC, {6387, 298150593}) = 0 ..... ..... 8. used GDB for debugging - root@beaglebone:/# gdb gst-launch-0.10 (gdb) set args filesrc location=HistoryOfTI-480p.m2v ! mpegvideoparse ! ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink (gdb) run Starting program: /usr/bin/gst-launch-0.10 filesrc location=HistoryOfTI-480p.m2v ! mpegvideoparse ! ffdec_mpeg2video ! ffmpegcolorspace ! fbdevsink warning: File "/lib/libthread_db-1.0.so" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load". To enable execution of this file add add-auto-load-safe-path /lib/libthread_db-1.0.so line to your configuration file "/home/root/.gdbinit". To completely disable this security protection add set auto-load safe-path / line to your configuration file "/home/root/.gdbinit". For more information about this security protection see the "Auto-loading safe path" section in the GDB manual. E.g., run from the shell: info "(gdb)Auto-loading safe path" warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available. Setting pipeline to PAUSED ... Pipeline is PREROLLING ... [New LWP 1672] Program received signal SIGSEGV, Segmentation fault. [Switching to LWP 1672] 0xb60330a8 in ?? () from /usr/lib/libavcodec.so.53 (gdb) info threads Id Target Id Frame * 2 LWP 1672 "mpegvparse0:sin" 0xb60330a8 in ?? () from /usr/lib/libavcodec.so.53 1 LWP 1669 "gst-launch-0.10" 0xb6d11994 in poll () from /lib/libc.so.6 (gdb) bt #0 0xb60330a8 in ?? () from /usr/lib/libavcodec.so.53 #1 0x00000008 in ?? () #2 0x00000008 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) thread 1 [Switching to thread 1 (LWP 1669)] #0 0xb6d11994 in poll () from /lib/libc.so.6 (gdb) bt #0 0xb6d11994 in poll () from /lib/libc.so.6 #1 0xb6decf00 in ?? () from /usr/lib/libglib-2.0.so.0 #2 0xb6decf00 in ?? () from /usr/lib/libglib-2.0.so.0 Backtrace stopped: previous frame identical to this frame (corrupt stack?