After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 403122 - mmssrc: blocking read() causes totem to lock up when switching streams or n shutdown
mmssrc: blocking read() causes totem to lock up when switching streams or n ...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other All
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 568478 588486 642388 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2007-02-01 08:22 UTC by Sitsofe Wheeler
Modified: 2018-11-03 13:03 UTC
See Also:
GNOME target: ---
GNOME version: 2.31/2.32



Description Sitsofe Wheeler 2007-02-01 08:22:40 UTC
Please describe the problem:
Opening a particular mms stream seems to make totem unresponsive. In the first case, opening the stream then quitting totem fails to return control to the console. In the second case opening the stream twice causes totem to stop updating it's UI.

Steps to reproduce:
1. Run the following:
totem mms://mrcstr1.swan.ac.uk/vc_address
2. Go to Movie -> Open Location and type
mms://mrcstr1.swan.ac.uk/vc_address
and click the open button.

Actual results:
User interface freezes.

Expected results:
Video to play? Interface to remain responsive.

Does this happen every time?
Yes this happens every time.

Other information:
gstreamer0.10-alsa 0.10.10-1ubuntu1
gstreamer0.10-esd 0.10.4-0ubuntu3
gstreamer0.10-ffmpeg 0.10.1-2ubuntu1
gstreamer0.10-gnomevfs 0.10.10-1ubuntu1
gstreamer0.10-plugins-bad 0.10.3+cvs20060918-0ubuntu1
gstreamer0.10-plugins-bad-multiverse 0.10.3+cvs20060918-1
gstreamer0.10-plugins-base 0.10.10-1ubuntu1
gstreamer0.10-plugins-base-apps 0.10.10-1ubuntu1
gstreamer0.10-plugins-good 0.10.4-0ubuntu3
gstreamer0.10-plugins-ugly 0.10.4-0ubuntu3
gstreamer0.10-plugins-ugly-multiverse 0.10.4-2
gstreamer0.10-tools 0.10.10-1ubuntu2
gstreamer0.10-x 0.10.10-1ubuntu1
libgstreamer-plugins-base0.10-0 0.10.10-1ubuntu1
libgstreamer0.10-0 0.10.10-1ubuntu2
libgstreamer0.10-0-dbgsym 0.10.10-1ubuntu2
totem-gstreamer 2.16.2-0ubuntu3

Using
gst-launch-0.10 playbin uri="mms://mrcstr1.swan.ac.uk/vc_address"
outputs:
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...

Might be a dup of bug #353116
Comment 1 Tim-Philipp Müller 2007-02-01 11:26:48 UTC
This isn't a duplicate of 353116.

What's happening here is two things:

 a) the server seems to be slightly broken: it sends only a few
    bytes of data (not even a complete ASF header) and then just
    stops sending data, but also doesn't send an error or close
    the connection. No idea what's up with that. I get the same
    behaviour with mplayer, xine and VLC.

 b) GStreamer's base source class, which the MMS source plugin is
    based on, currently works in a way that will wait for the
    streaming thread to return before it can shut down. In this
    case the streaming thread is blocked in a read() call waiting
    for either more data to arrive or for the connection to be
    closed (or time out). This is what causes the display freeze.
    Not very good, but also not quickly fixable with the way
    libmms/mmssrc currently work.

Not sure what to do about this without rewriting mmssrc so that all blocking calls are done in yet another thread. Moving to GStreamer.

It's possible to get the same problem without a broken server, namely when the connect() blocks for a long time.

Comment 2 Wim Taymans 2007-02-02 09:36:22 UTC
The _unlock function is supposed to unlock the blocking read. It's just pretty impossible to implement this if libmms does not support it. Also starting another thread is not a good idea since it will just sit and hang there forever.
Comment 3 Hans de Goede 2007-12-16 21:52:37 UTC
Hi,

I've been working on mms support in gstreamer lately, see: bug 469930

libmms has the capability to provide your own io functions, these could use select or the likes to implement shorther then default tcp timeouts. Also these could be used to provide a non-blocking unlock function by using a messaging fd and adding that to the select like the base file (or was it tcp) source does.

Does this sound like a plan?
Comment 4 Bastien Nocera 2009-01-27 16:44:02 UTC
*** Bug 568478 has been marked as a duplicate of this bug. ***
Comment 5 Jonathan Matthew 2009-07-14 13:11:32 UTC
*** Bug 588486 has been marked as a duplicate of this bug. ***
Comment 6 Edward Hervey 2010-03-03 18:25:44 UTC
That stream returns a 404. Can you provide a new stream ?

Also, it's tempting to close this bug considering the amount of changes that went in over the past years.
Comment 7 Tim-Philipp Müller 2010-03-03 18:50:45 UTC
> That stream returns a 404. Can you provide a new stream ?
> 
> Also, it's tempting to close this bug considering the amount of changes that
> went in over the past years.

This problem is not related to any specific MMS stream. The bug should stay open until we have a completely async mmssrc (which I've been meaning to do for ever).
Comment 8 Jonathan Matthew 2011-02-15 21:40:14 UTC
*** Bug 642388 has been marked as a duplicate of this bug. ***
Comment 9 Edward Hervey 2013-08-13 18:38:20 UTC
Anyone knowledgeable about libmms and mmssrc knows if this bug is still valid ?
Comment 10 Tim-Philipp Müller 2013-08-14 11:02:48 UTC
It's still valid.
Comment 11 Edward Hervey 2018-05-04 09:51:52 UTC
Still valid :)
Comment 12 GStreamer system administrator 2018-11-03 13:03:03 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/2.