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 331701 - [0.10] mozilla plugin freezes for quicktime trailers
[0.10] mozilla plugin freezes for quicktime trailers
Status: RESOLVED FIXED
Product: totem
Classification: Core
Component: GStreamer backend
1.3.x
Other Linux
: Normal normal
: ---
Assigned To: Maintainer alias for GStreamer component of Totem
Maintainer alias for GStreamer component of Totem
Depends on:
Blocks:
 
 
Reported: 2006-02-18 19:21 UTC by Luca Ferretti
Modified: 2006-02-27 20:03 UTC
See Also:
GNOME target: ---
GNOME version: 2.13/2.14


Attachments
A screenshot of freezed totem-mozilla (76.84 KB, image/png)
2006-02-18 19:22 UTC, Luca Ferretti
Details

Description Luca Ferretti 2006-02-18 19:21:49 UTC
Two days ago I was able to play movie trailers from http://www.apple.com/trailers/ (maybe not all, but most).

Now, after an update of my test GNOME HEAD build under /opt with jhbuild, the Totem mozilla plugin freeze trying to view any trailer.

I don't know if it's a Totem issue or qtdemux issue (I updated gst* stuff too), but downloading the trailer for iPod (this[1] for example) I'm able to play it in Totem.


[1] http://movies.apple.com/movies/weinstein/doogal/doogal_p320.m4v.zip  ~ 8MB
Comment 1 Luca Ferretti 2006-02-18 19:22:31 UTC
Created attachment 59664 [details]
A screenshot of freezed totem-mozilla
Comment 2 Bastien Nocera 2006-02-26 12:49:06 UTC
GStreamer or xine-lib backend?
Could you get a backtrace of the hang?
Comment 3 Luca Ferretti 2006-02-26 15:47:06 UTC
(In reply to comment #2)
> GStreamer or xine-lib backend?

GStreamer, of course ;-)

> Could you get a backtrace of the hang?

How can I backtrace a browser plugin?


Comment 4 Bastien Nocera 2006-02-26 17:10:19 UTC
If everything else works fine, then just attach your debugger to the running totem-mozilla-viewer, and get the trace from there.
Comment 5 Luca Ferretti 2006-02-26 18:17:55 UTC
I hope I perfomed the proper task
 1. Open epiphany and go to http://www.apple.com/trailers/weinstein/doogal/trailer1r/
 2. Open a terminal and see totem-mozilla-viewer plugin PID with 'ps aux`
 3. Run 'gdb /opt/gnome2/libexec/totem-mozilla-viewer PID`
 4. Run in gdb `thread apply all bt`

The result is the following

Thread 1 (Thread -1228671296 (LWP 22868)):#0  0xffffe410 in __kernel_vsyscall ()
  • #1 poll
    from /lib/tls/i686/cmov/libc.so.6
  • #2 snd_pcm_direct_shm_create_or_connect
    from /usr/lib/libasound.so.2
  • #3 snd_pcm_direct_server_create
    from /usr/lib/libasound.so.2
  • #4 snd_pcm_dmix_open
    from /usr/lib/libasound.so.2
  • #5 _snd_pcm_dmix_open
    from /usr/lib/libasound.so.2
  • #6 snd_pcm_free
    from /usr/lib/libasound.so.2
  • #7 snd_pcm_free
    from /usr/lib/libasound.so.2
  • #8 snd_pcm_open_slave
    from /usr/lib/libasound.so.2
  • #9 _snd_pcm_plug_open
    from /usr/lib/libasound.so.2
  • #10 snd_pcm_free
    from /usr/lib/libasound.so.2
  • #11 snd_pcm_open_slave
    from /usr/lib/libasound.so.2
  • #12 _snd_pcm_asym_open
    from /usr/lib/libasound.so.2
  • #13 snd_pcm_free
    from /usr/lib/libasound.so.2
  • #14 snd_pcm_free
    from /usr/lib/libasound.so.2
  • #15 gst_alsasink_open
    at gstalsasink.c line 707
  • #16 gst_audioringbuffer_open_device
    at gstaudiosink.c line 259
  • #17 gst_ring_buffer_open_device
    at gstringbuffer.c line 407
  • #18 gst_base_audio_sink_change_state
    at gstbaseaudiosink.c line 702
  • #19 gst_element_change_state
    at gstelement.c line 2173
  • #20 gst_element_set_state_func
    at gstelement.c line 2135
  • #21 gst_element_set_state
    at gstelement.c line 2045
  • #22 gst_bin_change_state_func
    at gstbin.c line 1710
  • #23 gst_element_change_state
    at gstelement.c line 2173
  • #24 gst_element_set_state_func
    at gstelement.c line 2135
  • #25 gst_element_set_state
    at gstelement.c line 2045
  • #26 gst_bin_change_state_func
    at gstbin.c line 1710
  • #27 gst_gconf_audio_sink_change_state
    at gstgconfaudiosink.c line 323
  • #28 gst_element_change_state
    at gstelement.c line 2173
  • #29 gst_element_set_state_func
    at gstelement.c line 2135
  • #30 gst_element_set_state
  • #31 bacon_video_widget_new
    at bacon-video-widget-gst-0.10.c line 4252
  • #32 main
    at totem-mozilla-viewer.c line 484
  • #0 __kernel_vsyscall

Comment 6 Tim-Philipp Müller 2006-02-26 18:48:53 UTC
That's the trace from the wrong PID (dmix does a fork() to create a sound server for the first process to use a sound device if no others are using it; your trace is from the dmix sound server process) :)

I can reproduce the problem though, might be related to the one in bug #331690 (that would explain the immediate EOS event; it still shouldn't freeze of course).


Comment 7 Tim-Philipp Müller 2006-02-26 19:35:47 UTC
The hang is fixed in GStreamer core CVS now.

Movie still doesn't work though, because typefinding fails. Typefinding fails because in streaming mode the typefindelement only tries to do typefinding once it has at least x kB of data, but the quicktime file originally played is just 244 bytes and only contains a redirection URI.

Setting TYPE_FIND_MIN_SIZE to 0 in gstreamer/plugins/elements/gsttypefindelement.c makes it work, but I'm not sure this is the right thing to do in general. Probably we should keep the min. limit, but just try to typefind whatever data we've got if we get an EOS before having found a type. Gotta sleep over this first though.
Comment 8 Tim-Philipp Müller 2006-02-27 20:03:22 UTC
Fixed in GStreamer core now. Apologies for the temporary regression - will add a test case for this.

2006-02-27  Tim-Philipp Müller  <tim at centricular dot net>

        * plugins/elements/gsttypefindelement.c:
        (gst_type_find_element_handle_event):
          When we get an EOS event and have not found a type yet
          (most likely because we had not yet accumulated
          TYPE_FIND_MIN_SIZE of data yet), try to determine the
          type given the data we have so far. Fixes typefinding
          for very short streams again, most notably quicktime
          redirections as used on Apple's trailer site (#331701).