[Bug 729099] New: rtmpsrc: Crash due to unsafe thread handling in librtmp when setting state from PLAYING->PAUSED

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Apr 28 04:16:49 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=729099
  GStreamer | gst-plugins-bad | 1.2.4

           Summary: rtmpsrc: Crash due to unsafe thread handling in
                    librtmp when setting state from PLAYING->PAUSED
    Classification: Platform
           Product: GStreamer
           Version: 1.2.4
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: cmaiku at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=275318)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=275318)
Log including relevant GST_DEBUG output and the backtrace

I've stumbled across a crash in rtmpsrc which happens due to RTMP_Close() being
called in gst_rtmp_src_unlock() while RTMP_Read() is being run in
gst_rtmp_src_create() in another thread. librtmp isn't thread safe so this case
is bad.

The only solution I've managed to come up with is to call RTMPSockBuf_Close()
in gst_rtmp_src_unlock() to close the socket and block until RTMP_Read()
returns in error. This is not ideal as RTMP_Close() sends some packets out
before closing the socket, which would be missed with the above solution.
Hopefully there's a better solution I'm not aware of.

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