[Bug 747285] New: MEMORY-ERROR is printed and then application abort.
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Thu Apr 2 22:51:18 PDT 2015
https://bugzilla.gnome.org/show_bug.cgi?id=747285
Bug ID: 747285
Summary: MEMORY-ERROR is printed and then application abort.
Classification: Platform
Product: GStreamer
Version: 1.2.3
OS: Linux
Status: NEW
Severity: normal
Priority: Normal
Component: gstreamer (core)
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: qwertylhl at 163.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Env:
linux-kernel: 3.10
cpu: arm cortex-A15 core
gstreamer version: 1.2.3
gst-omx version: 1.0
pipeline structure:
filesrc ! typefind ! queue ! mpegvparse ! omxmpeg2dec ! (convert and scale) !
waylandsink
Operation:
1. Played a short mpeg-2 video, the length is about 6s.
2. Playback completed.
3. Play it a again without terminating the process.
After I repeated step 2 and 3 for about 5~10 time, the program was aborted and
print out this error message:
==========================================================================
***MEMORY-ERROR***: test_arm[468]: GSlice: assertion failed: sinfo->n_allocated
> 0
==========================================================================
Here is the gdb backtrace info:
==========================================================================
(gdb) bt
#0 0xb6b15908 in __GI_raise (sig=sig at entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0xb6b1966c in __GI_abort () at abort.c:89
#2 0xb6dbf398 in mem_error (format=0xb6e73a70 "assertion failed: %s")
at /usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gslice.c:1455
#3 0xb6e13214 in slab_allocator_free_chunk (chunk_size=8, mem=0xb57fb408)
at /usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gslice.c:1337
#4 0xb6e134b4 in magazine_cache_trim (allocator=0xb6ec4df0 <allocator>,
stamp=<optimized out>, ix=0)
at /usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gslice.c:685
#5 magazine_cache_push_magazine (ix=ix at entry=0, magazine_chunks=<optimized
out>, count=<optimized out>)
at /usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gslice.c:716
#6 0xb6dbf940 in thread_memory_magazine2_unload (ix=0, tmem=<optimized out>)
at /usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gslice.c:815
#7 0xb6e14504 in g_slice_free1 (mem_size=0, mem_block=0xf43a8)
at /usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gslice.c:1106
#8 0xb6e14f78 in g_slist_delete_link (list=<optimized out>,
list at entry=0xf43a8, link_=link_ at entry=0xf43a8)
at /usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gslist.c:557
#9 0xb606cc8c in gst_adapter_flush_unchecked (adapter=adapter at entry=0x40ed0,
flush=30696, flush at entry=42696)
at gstadapter.c:587
#10 0xb606d564 in gst_adapter_take_buffer (adapter=0x40ed0, nbytes=42696) at
gstadapter.c:878
#11 0xb607a9f0 in gst_base_parse_finish_frame (parse=parse at entry=0xb400e208,
frame=0xb402eb38, frame at entry=0xb4142728,
size=size at entry=42696) at gstbaseparse.c:2418
#12 0xb4136de0 in gst_mpegv_parse_handle_frame (parse=0xb400e208,
frame=0xb4142728, skipsize=<optimized out>)
at gstmpegvideoparse.c:701
#13 0xb6073bcc in gst_base_parse_handle_buffer (parse=parse at entry=0xb400e208,
buffer=<optimized out>, skip=0xb3e14be4,
skip at entry=0xb3e14bdc, flushed=0xb3e14be8, flushed at entry=0xb3e14be0) at
gstbaseparse.c:1959
#14 0xb607797c in gst_base_parse_chain (pad=<optimized out>, parent=0xb400e208,
buffer=<optimized out>)
at gstbaseparse.c:2880
#15 0xb6d152f0 in gst_pad_chain_data_unchecked (data=0xb40096e8,
type=<optimized out>, pad=0xb57e26b8) at gstpad.c:3760
#16 gst_pad_push_data (pad=0xb57e2800, type=<optimized out>, data=<optimized
out>) at gstpad.c:3990
#17 0xb60e0ef0 in gst_queue_push_one (queue=<optimized out>) at gstqueue.c:1115
#18 gst_queue_loop (pad=0xb6e73a70) at gstqueue.c:1244
#19 0xb6d4e0c4 in gst_task_func (task=0xb40064c0) at gsttask.c:316
#20 0xb6e1f6bc in g_thread_pool_thread_proxy (data=<optimized out>)
at /usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gthreadpool.c:309
#21 0xb6e1ea50 in g_thread_proxy (data=0xe1260) at
/usr/src/debug/glib-2.0/1_2.38.2-r0/glib-2.38.2/glib/gthread.c:798
#22 0xb6c3022c in start_thread (arg=0xb3e15460) at pthread_create.c:314
#23 0xb6bbe860 in ?? () at ../ports/sysdeps/unix/sysv/linux/arm/clone.S:92 from
/lib/libc.so.6
#24 0xb6bbe860 in ?? () at ../ports/sysdeps/unix/sysv/linux/arm/clone.S:92 from
/lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
==========================================================================
Then set the environment variable G_SLICE=always-malloc.
In this situation I could play the same video for about 50 times. No problem
happened this time.
I'm not quite sure is this a gstreamer bug or a glib bug.
This is my first bug. If the info is not enough, please notice me.
Thanks,
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list