[Bug 701763] New: Race condition in gstreamer-editing-services integration tests, with a possible fix in gstpad.

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Jun 6 15:41:26 PDT 2013


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

           Summary: Race condition in gstreamer-editing-services
                    integration tests, with a possible fix in gstpad.
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: mathieu.duponchelle at epitech.eu
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=246199)
 View: https://bugzilla.gnome.org/attachment.cgi?id=246199
 Review: https://bugzilla.gnome.org/review?bug=701763&attachment=246199

Proposed patch to fix the issue

The problem pops when running:
GST_CHECKS=test_basic_playback make check-integration-forever on my integration
branch :
https://github.com/MathieuDuponchelle/PitiviGes/commits/integration

The end result is that "Gstreamer encountered a general stream error" gets
posted on the bus. The steps are :

1) the demuxer tries to push a buffer
2) gst_pad_push_data locks the pad and checks for flushing but it is not
flushing.
3) The demuxer gets a seek flush event, pushes a flush_start_event and waits
for the lock.
4) _push_data unlocks the pad and calls chain_data_unchecked, which checks for
flushing but the pad is not flushing yet.
5) in the meantime, the lock has been taken in push_event, the pad has been set
to flushing, and an element returns NOT_NEGOTIATED.
6) _push_data returns NOT_NEGOTIATED.
7) the demuxer freaks out.

The proposed patch checks if the pad has gone to flushing while it was
unlocked, and returns GST_FLOW_FLUSHING in that case.

 It breaks one test case though, in gstghostpad,
test_ghost_pads_remove_while_playing() , that test adds a robe, which
deactivates the ghostpad and removes it, the test waits a GST_FLOW_OK return,
but instead it gets GST_FLOW_FLUSHING, which seems reasonable as the pad was
actually deactivated, so the patch also changes that assertion.

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