[Bug 682239] New: Crash on GST_PAD_STREAM_UNLOCK (peer) in gst_pad_push()

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Aug 20 03:46:52 PDT 2012


https://bugzilla.gnome.org/show_bug.cgi?id=682239
  GStreamer | gstreamer (core) | 0.10.36

           Summary: Crash on GST_PAD_STREAM_UNLOCK (peer) in
                    gst_pad_push()
    Classification: Platform
           Product: GStreamer
           Version: 0.10.36
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: www at saepia.net
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=221813)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=221813)
Crash 1 - gdb info

I encounter random crashes on GST_PAD_STREAM_UNLOCK (peer) in gst_pad_push().

My environment is quite complex and was already described in #679950.

Problems started to appear when I added missing unrefs after releasing adder
pad.

I've caught problem a few times and backtrace always looks like that:

#0  g_static_rec_mutex_get_rec_mutex_impl (mutex=<optimized out>) at
/build/buildd/glib2.0-2.32.3/./glib/deprecated/gthread-deprecated.c:676
#1  0xb7379a11 in g_static_rec_mutex_unlock (mutex=0x0) at
/build/buildd/glib2.0-2.32.3/./glib/deprecated/gthread-deprecated.c:760
#2  0xb7655537 in gst_pad_push (pad=0x912fb80, buffer=0xb62701e0) at
gstpad.c:4717
#3  0xb763db44 in gst_proxy_pad_chain_default (pad=0xb58a3ae8,
buffer=0xb62701e0) at gstghostpad.c:261
#4  0xb765549e in gst_pad_push (pad=0x91810d0, buffer=0xb62701e0) at
gstpad.c:4710
#5  0xb572a890 in gst_queue2_push_one (queue=0x9120540) at gstqueue2.c:2444
#6  gst_queue2_loop (pad=0x91810d0) at gstqueue2.c:2547
#7  0xb767f158 in gst_task_func (task=0xb588d718) at gsttask.c:327
#8  0xb7680308 in default_func (tdata=0xb45b0620, pool=0x8db1008) at
gsttaskpool.c:70
#9  0xb73cd047 in g_thread_pool_thread_proxy (data=0x8da9840) at
/build/buildd/glib2.0-2.32.3/./glib/gthreadpool.c:309
#10 0xb73cc6b3 in g_thread_proxy (data=0x9189090) at
/build/buildd/glib2.0-2.32.3/./glib/gthread.c:801
#11 0xb7137d4c in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#12 0xb7076ace in clone () from /lib/i386-linux-gnu/libc.so.6


The context is that I am trying to dynamically unlink part of the pipeline
(encapsulated in bin with src ghost pad) that is attached to adder.

I do the following:

1. (app thread) Block bin's src ghost pad asynchronously
2. (streaming thread) In async pad block handler: 
 a) unlink bin's src ghost pad from adder's pad
 b) release adder's pad
 c) unref adder's pad
 d) call Idle.add
3. (app thread) In Idle.add handler:
 a) set bin's state to NULL
 b) remove bin from pipeline


Crash happens in 2b or 2c, I am not sure yet.

Unfortunately I was unable to catch such a crash with GST_DEBUG enabled (seems
that logging overhead prevents for such coincidence) but I am still trying.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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