[Bug 742684] aggregator: Locking logic should be reviewed, cleaned up, and documented

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Feb 18 14:26:09 PST 2015


https://bugzilla.gnome.org/show_bug.cgi?id=742684

--- Comment #65 from Olivier Crête <olivier.crete at ocrete.ca> ---
Actually, the code is still wrong, doing this fails after a couple iterations:
GST_CHECKS=test_live_seeking GST_DEBUG=*agg*:6 CK_FORK=no
G_DEBUG=fatal-warnings,fatal-criticals make elements/audiomixer.forever

I think the reason is that in the gst_aggregator_wait_and_check() function, it
checks on a bunch of stuff before deciding to wait on the condition variable 
or the clock. But those things can change without the matching "src_lock" being
taken.. I think that the PAD_LOCK and the SRC_LOCK should be merged into one,
but they're not next to each other in the locking order, so it's not trivial.


I documented the locking order, and I also renamed both locks that had "stream"
in their name to something less confusing as they really were not what we
called "stream locks" in GStreamer.

commit c37e82587c57b28337972c2ea5bee26ce9f9e8e3
Author: Olivier Crête <olivier.crete at collabora.com>
Date:   Wed Feb 18 15:53:53 2015 -0500

    aggregator: Document locking order

    https://bugzilla.gnome.org/show_bug.cgi?id=742684

commit 17df37d8cbbf2593b477a6de6014bf64134a3311
Author: Olivier Crête <olivier.crete at collabora.com>
Date:   Wed Feb 18 15:11:14 2015 -0500

    aggregator: Rename confusinly named SRC_STREAM_LOCK macros to SRC_LOCK

    This will match the name of the lock itself. It is also not a stream
    lock as it not recursive and not held while pushing.

    https://bugzilla.gnome.org/show_bug.cgi?id=742684

commit 3a3f2b534377c906a6a5d0fc5e5c4a2f14fac845
Author: Olivier Crête <olivier.crete at collabora.com>
Date:   Wed Feb 18 15:06:01 2015 -0500

    aggregator: Rename confusingly named stream lock to flush lock

    This lock is not what is commonly known as a "stream lock" in GStremer,
    it's not recursive and it's taken from the non-serialized FLUSH_START
event.

    https://bugzilla.gnome.org/show_bug.cgi?id=742684

commit 36ef8f0bd48586111d9db0ca409f009eda3fa675
Author: Olivier Crête <olivier.crete at collabora.com>
Date:   Wed Feb 18 15:04:04 2015 -0500

    aggregator: Fix macro indendation

    Changes no code

    https://bugzilla.gnome.org/show_bug.cgi?id=742684

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