[Bug 690014] New: Lockup: wrong STREAM_LOCK count 0

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Dec 10 15:21:56 PST 2012


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

           Summary: Lockup: wrong STREAM_LOCK count 0
    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: self at brendanlong.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


More specific OS: Ubuntu 12.04 32 or 64-bit

I'm making some changes to QtWebKit, which uses GStreamer. I switch the video
track using:

    g_object_set(m_playBin, "current-video", trackIndex, NULL);

For some reason, the video gets messed up if I don't do a seek immediately
afterwards, so I see to the current position. Similar code works for audio
tracks.

This works perfectly as long as the video is playing, but if it I try to switch
the current-video (or current-audio) before starting playback, I get this
error:

> TestBrowser:48324): GStreamer-WARNING **: wrong STREAM_LOCK count 0

I thought it was bug #670846, but the fixed version of the package is already
installed (I downloaded the source, checked it, and built it myself just to
make sure).

The backtrace from where I get the warning looks like this:

Breakpoint 1, g_logv (log_domain=0x7fffec607260 "GStreamer", 
    log_level=G_LOG_LEVEL_WARNING, 
    format=0x7fffec61efaf "wrong STREAM_LOCK count %d", args1=0x7fffd94cdd08)
    at /build/buildd/glib2.0-2.32.3/./glib/gmessages.c:661
661    /build/buildd/glib2.0-2.32.3/./glib/gmessages.c: No such file or
directory.
(gdb) backtrace 
#0  g_logv (log_domain=0x7fffec607260 "GStreamer", 
    log_level=G_LOG_LEVEL_WARNING, 
    format=0x7fffec61efaf "wrong STREAM_LOCK count %d", args1=0x7fffd94cdd08)
    at /build/buildd/glib2.0-2.32.3/./glib/gmessages.c:661
#1  0x00007fffeea941b2 in g_log (log_domain=<optimized out>, 
    log_level=<optimized out>, format=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gmessages.c:792
#2  0x00007fffec5e7fcf in gst_task_func (task=0x5264b0) at gsttask.c:309
#3  0x00007fffeeaaf248 in g_thread_pool_thread_proxy (data=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gthreadpool.c:309
#4  0x00007fffeeaae9e5 in g_thread_proxy (data=0x5390a0)
    at /build/buildd/glib2.0-2.32.3/./glib/gthread.c:801
#5  0x00007fffef9b2e9a in start_thread (arg=0x7fffd94ce700)
    at pthread_create.c:308
#6  0x00007ffff5deccbd in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

This happens *almost* every time, so I there's some sort of race condition
going on.

I created an example that sets up a basic playbin2 pipeline, then switches
tracks every couple seconds, and performs a seek to the current position, and
it worked fine, even if I did the track switching and seeking in a different
thread. Since WebKit is gigantic, and I don't really understand a lot of what's
going on, I haven't been able to narrow down what exactly makes WebKit's
pipeline different than my basic version.

Is there any information that would narrow this down a bit?

-- 
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