[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