[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