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 329394 - [0.10] problems running totem on Linux/PPC
[0.10] problems running totem on Linux/PPC
Status: RESOLVED FIXED
Product: totem
Classification: Core
Component: GStreamer backend
1.3.x
Other Linux
: Normal critical
: ---
Assigned To: Maintainer alias for GStreamer component of Totem
Maintainer alias for GStreamer component of Totem
Depends on:
Blocks:
 
 
Reported: 2006-01-31 21:10 UTC by Joseph Sacco
Modified: 2006-02-28 11:41 UTC
See Also:
GNOME target: ---
GNOME version: 2.13/2.14



Description Joseph Sacco 2006-01-31 21:10:00 UTC
totem-1.3.90 does not run on a LinuxPPC when totem is built using the gstreamer 0.10.2 back end.

totem does run when totem is built using the:
* gstreamer-0.8.11 back end
* xine-lib-1.1.1 back end

Running totem from within gdb shows the failure to be associated with the raising of signal SIG33, Real-time event 33. Handling SIG33 from within gdb causes totem to "hang".  Back traces included below.

-Joseph

=================================================================================
(gdb) run /tmp/EwaSonnet-iRNB.avi
Starting program: /usr/local/src/GNOME/2.13/garnome-2.13.x/bin/totem /tmp/EwaSonnet-iRNB.avi
[Thread debugging using libthread_db enabled]
[New Thread 807088416 (LWP 6771)]

(totem:6771): Gtk-WARNING **: Theme directory 16x16/status16x16/stock/chart of theme gnome has no size field

[New Thread 809448672 (LWP 6774)]
[New Thread 818230496 (LWP 6775)]
[New Thread 826619104 (LWP 6776)]
** Message: totem_playlist_add_one_mrl (): EwaSonnet-iRNB.avi file:///tmp/EwaSonnet-iRNB.avi (null)


Program received signal SIG33, Real-time event 33.

(gdb) thread apply all bt

Thread 1 (Thread 807088416 (LWP 6771))

  • #0 __nptl_setxid
    from /lib/tls/libpthread.so.0
  • #1 seteuid
    from /lib/tls/libc.so.6
  • #2 gnome_vfs_add_module_to_hash_table
    at gnome-vfs-method.c line 348
  • #3 gnome_vfs_transform_get
    at gnome-vfs-method.c line 427
  • #4 gnome_vfs_uri_new_private
    at gnome-vfs-uri.c line 576
  • #5 gnome_vfs_uri_new
    at gnome-vfs-uri.c line 537
  • #6 gst_gnomevfs_get_supported_uris
    at gstgnomevfsuri.c line 52
  • #7 gst_gnome_vfs_src_uri_get_protocols
    at gstgnomevfssrc.c line 341
  • #8 gst_element_register
    at gstelementfactory.c line 301
  • #9 plugin_init
    at gstgnomevfs.c line 83
  • #10 gst_plugin_register_func
    at gstplugin.c line 260
  • #11 gst_plugin_load_file
    at gstplugin.c line 446
  • #12 gst_plugin_load_by_name
    at gstplugin.c line 870
  • #13 gst_plugin_feature_load
    at gstpluginfeature.c line 113
  • #14 gst_element_factory_create
    at gstelementfactory.c line 348
  • #15 gst_element_make_from_uri
    at gsturi.c line 507
  • #16 gst_play_base_bin_change_state
    at gstplaybasebin.c line 1088
  • #17 gst_play_bin_change_state
    at gstplaybin.c line 1034
  • #18 gst_element_change_state
    at gstelement.c line 2151
  • #19 gst_element_change_state
    at gstelement.c line 2184
  • #20 gst_element_set_state_func
    at gstelement.c line 2113
  • #21 gst_element_set_state
    at gstelement.c line 2030
  • #22 bacon_video_widget_open_with_subtitle
    at bacon-video-widget-gst-0.10.c line 2166
  • #23 totem_action_set_mrl_with_warning
    at totem.c line 768
  • #24 totem_action_set_mrl_and_play
    at totem.c line 380
  • #25 totem_action_play_pause
    at totem.c line 511
  • #26 main
    at totem.c line 3535
  • #0 pthread_cond_wait
    from /lib/tls/libpthread.so.0

Thread 1 (Thread 807088416 (LWP 6815))

  • #0 __nptl_setxid
    from /lib/tls/libpthread.so.0
  • #1 seteuid
    from /lib/tls/libc.so.6
  • #2 gnome_vfs_add_module_to_hash_table
    at gnome-vfs-method.c line 348
  • #3 gnome_vfs_transform_get
    at gnome-vfs-method.c line 427
  • #4 gnome_vfs_uri_new_private
    at gnome-vfs-uri.c line 576
  • #5 gnome_vfs_uri_new
    at gnome-vfs-uri.c line 537
  • #6 gst_gnomevfs_get_supported_uris
    at gstgnomevfsuri.c line 52
  • #7 gst_gnome_vfs_src_uri_get_protocols
    at gstgnomevfssrc.c line 341
  • #8 gst_element_register
    at gstelementfactory.c line 301
  • #9 plugin_init
    at gstgnomevfs.c line 83
  • #10 gst_plugin_register_func
    at gstplugin.c line 260
  • #11 gst_plugin_load_file
    at gstplugin.c line 446
  • #12 gst_plugin_load_by_name
    at gstplugin.c line 870
  • #13 gst_plugin_feature_load
    at gstpluginfeature.c line 113
  • #14 gst_element_factory_create
    at gstelementfactory.c line 348
  • #15 gst_element_make_from_uri
    at gsturi.c line 507
  • #16 gst_play_base_bin_change_state
    at gstplaybasebin.c line 1088
  • #17 gst_play_bin_change_state
    at gstplaybin.c line 1034
  • #18 gst_element_change_state
    at gstelement.c line 2151
  • #19 gst_element_change_state
    at gstelement.c line 2184
  • #20 gst_element_set_state_func
    at gstelement.c line 2113
  • #21 gst_element_set_state
    at gstelement.c line 2030
  • #22 bacon_video_widget_open_with_subtitle
    at bacon-video-widget-gst-0.10.c line 2166
  • #23 totem_action_set_mrl_with_warning
    at totem.c line 768
  • #24 totem_action_set_mrl_and_play
    at totem.c line 380
  • #25 totem_action_play_pause
    at totem.c line 511
  • #26 main
    at totem.c line 3535

Comment 1 Bastien Nocera 2006-02-01 08:58:28 UTC
Please add this to your ~/.gdbinit:
handle SIG33 nostop
handle SIG33 pass
Comment 2 Joseph Sacco 2006-02-01 14:40:44 UTC
Bastien,

The spew of output contains two runs. SIG33 was handled in the second run:

====================== handle SIG33 =======================================
 handle SIG33 nostop
Signal        Stop      Print   Pass to program Description
SIG33         No        Yes     Yes             Real-time event 33


I think the problem is a PPC/gstreamer-0.10 build problem arising from a mix of PIC and non-PIC code.  I will investigate further.

-Joseph
Comment 3 Joseph Sacco 2006-02-01 22:17:29 UTC
The problem appears to be PPC specific and related to gststreamer-0.10.x. 

One of the other maintainers of GARNOME has tested totem on a lintel box and it works fine when built within the GARNOME-2.14-beta1 framework using the gst-0.10.x back end.

Since the problem appears related to gstreamer-0.10.x, I went back and ran 'make check' within the gstreamer-0.10.2 work directory.  All 34 tests failed, each with the same R_PPC_REL24 relocation error:
 /opt/garnome-2.13.x/src/desktop/gstreamer/work/main.d/gstreamer-0.10.2/tests/check/libs/.libs/lt-controller: error while loading shared libraries: /opt/garnome-2.13.x/src/desktop/gstreamer/work/main.d/gstreamer-0.10.2/libs/gst/check/.libs/libgstcheck-0.10.so.0: R_PPC_REL24 relocation at 0x0ff828dc for symbol `malloc' out of range

The R_PPC_REL24 relocation error arises when PIC and non-PIC code are indiscriminately thrown together into a shared library.

This is not to say that PIC and non-PIC code cannot be "properly" combined to form a shared library on a PPC. It's all a matter of using the right combination fo compiler and linker flags.

I will poke the gstreamer folks to see if they have any suggestions.


-Joseph
Comment 4 Joseph Sacco 2006-02-02 03:49:29 UTC
I rebuilt 'Check' with -fPIC and all 34 tests for gstreamer-0.10.2 now pass. That moves the problem back to totem.

-Joseph
Comment 5 Andy Wingo 2006-02-03 16:42:19 UTC
Joseph, I believe you are a bit confused.

1) check

There are some known issues with non-pic check; I'm not sure how it works on x86-32 but the compiler insists that you compile check -fPIC on x86-64. See e.g. https://launchpad.net/distros/ubuntu/+source/check/+bug/5840.

I am not aware of any issues specifically affecting totem, gstreamer 0.10, and ppc. (I use a powerbook at home.)

2) sig33

This is something totem-related that only affects running totem under gdb. Bastien told you the solution to that.

So in summary, what is the current problem, given that these two are known issues?
Comment 6 Joseph Sacco 2006-02-03 17:16:21 UTC
Andy,

On my system totem runs properly within a GNOME-2.14-beta1 framework [GARNOME-2.13.90] when built using either gst-0.8.11 or lib-xine-1.1.1.  It does not run on my system when built using the gst-0.10 back end. 

So what does it do when built using gstreamer-0.10.2? 

* launch the application
=> totem comes up
* select an avi file or an mp3 file
=> file name shows up in playlist
* totem hangs
=> no video, no audio... The application is "dead"

OK... So try it from within GDB to see what can be learned.

What happens:

(1) see the sig33 error

(2) trap the sig33 error per Bastien's instructions
=> application sits there doing nothing... no audio, no video, nothing

(3) issue a ^C from within gdb and collect the back trace.
The only element that looks even vaguely suspicious s

  • #22 bacon_video_widget_open_with_subtitle
    at bacon-video-widget-gst-0.10.c line 2166

What could the problem be?  

Maybe there is an issue with gstreamer-0.10.2? Other apps like Rhythmbox do work when built with gstreamer-0.10.2, but...

Let's try the gstreamer internal tests to see what can be learned.  Initially they fail because of a R_PPC_REL24 relocation problem that is traced back to how 'check' was built. Check is recompiled with '-fPIC'. All 34 gstreamer tests pass. So... I am back looking at totem.

It's encouraging news to hear that you have totem running on a powerbook.  Which variant of linux are you running?

What I am doing at the moment is a clean build of GARNOME-2.13.90 under a clean install of YDL-4.1 [an FC4 clone]. I would be very happy if the problem just goes away after a clean build.  I should have some results later today. 

-Joseph



Comment 7 Tim-Philipp Müller 2006-02-03 18:44:52 UTC
Joseph, does the GUI 'freeze' when that happens (ie. no redraws happen) or does it redraw fine but just not do anything? If the former, then it would be great if you could try totem CVS, I've just fixed something that might have caused this.
Comment 8 Joseph Sacco 2006-02-03 18:56:06 UTC
Tim-Phillip,

The GUI freezes completely. All buttons and controls are dead. If you grab the totem window and drag it across the screen it will streak like a paint brush.

I will try the latest CVS code and report back.

-Joseph
Comment 9 Joseph Sacco 2006-02-05 00:35:06 UTC
Tim-Pillipp,

I have some news.  I built totem-cvs as of

[from the changelog]
2006-02-03  Tim-Philipp Müller  <tim at centricular dot net>

        * src/backend/bacon-video-widget-gst-0.10.c:
        (bacon_video_widget_new):
          Add missing perdiod to error message string, which also
          makes it match the string used in the 0.8 backend.
                                      ...

within a clean GARNOME-2.13.90 environment on a PPC running YDL-4.1, an FC4 clone.

I am now able to load and play an avi stream with both video and audio.  The pause and play button works.  I can resize the window while playing.

I am also able to load and play an mp3 file.

What does not work at this point is visualization.  If I turn visualization on through the preference menu, totem segfaults when attempting to run an mp3 file.  If I start totem, shut off visualization, the mp3 file plays.

-Joseph
Comment 10 Tim-Philipp Müller 2006-02-05 00:42:56 UTC
Does the visualization crash in goom_update() by any chance? Is it the same stack trace as in bug #329181?
Comment 11 Joseph Sacco 2006-02-05 03:02:23 UTC
Tim-Phillip,

The short answer is "I can't tell".  

I am running gst-plugins-good-0.10.1. When I turn on goom visualization and attempt to start an mp3 file from within gdb, totem segfaults complaining about SIG33 [once again, grrr...].  When I handle SIG33 per Bastien's instructions, totem no longer crashes but instead hangs.

-Joseph
Comment 12 Bastien Nocera 2006-02-05 10:12:10 UTC
SIG33 is not a segfault. It's a real-time signal. Leave the .gdbinit with pass and nostop for SIG33, you don't want to be catching this signal.
Comment 13 Joseph Sacco 2006-02-05 13:56:18 UTC
Bastien,

What I see:

* when run outside of gdb
- totem-cvs segfaults when starting to play an MP3 file if goom visualization is enabled.
- if goom visualization is off, totem-cvs plays an MP3 file without incident.

* When run within gdb
- totem-cvs stops because of a SIG33
  the (gdb) prompt is displayed.
- if handle SIG33 is set with 'pass' and 'nostop' and the application is run from the beginning:
    o three SIG33 messages are printed
    o totem-cvs hangs / freezes / goes off to lala land
      a ^C is required to get back to the (gdb) prompt
    
Let me know if there is anything else I can test for you.

-Joseph
Comment 14 Tim-Philipp Müller 2006-02-06 21:36:46 UTC
There have been a whole bunch of goom plugin fixes in gst-plugins-good CVS yesterday. If you could see if those fix things for you, that would be most excellent.
Comment 15 Joseph Sacco 2006-02-07 16:47:09 UTC
Tim-Philip,

I have news:
* .avi file plays correctly [video & audio]
* mp3 file + goom works.
* current CVS version of gst-ffmpeg is hosed

Discussion
------------
I uninstalled:
* gstreamer
* gst-plugins-base
* gst-plugins-good
* gst-ffmpeg

I built and installed:
* gstreamer-CVS
2006-02-07  Andy Wingo  <wingo@pobox.com>

        * libs/gst/base/gstbasesink.c (gst_base_sink_chain_unlocked): Only
        warn if sync=true.

* gst-plugins-base-CVS
2006-02-07  Tim-Philipp Müller  <tim at centricular dot net>

        * gst/playback/gstplaybasebin.c: (prepare_output):
          Don't print the URI as part of the error message, it
          makes error dialogs look rather ugly, especially if
          the URI is very long or has characters in it that
          need escaping.

* gst-plugins-good-CVS
2006-02-07  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

        * ext/shout2/gstshout2.c: (gst_shout2send_render),
        (gst_shout2send_setcaps), (gst_shout2send_change_state):
        Make shout2 work for non ogg streams

* gst-ffmpeg-CVS
2006-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>

        * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
        (gst_ffmpeg_smpfmt_to_caps):
        * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_setcaps),
        (gst_ffmpegdec_negotiate), (gst_ffmpegdec_frame),
        (gst_ffmpegdec_chain):
          debug recurring events at LOG level
          do some timestamp setting heuristics on the pcache, with the
          net result of having more buffers have approximately correct
          timestamps.
          This allows playback of h263/3gp files taking fps from the demuxer,
          which before always set GST_CLOCK_TIME_NONE as timestamp.

With this configuation audio was hosed.  totem refused to identify an mp3 file as an mp3 file.

I uninstalled gst-ffmpeg-CVS, built and installed gst-ffmeg-0.10.0 and things worked, more or less...

Switching back and forth between playing an avi file and an mp3 file I saw one error that is not reproducible:

ERROR (0x35808f48 - 0:03:11.009242000)               ffmpeg( 3555) (0):: insufficient thread locking around avcodec_open/close()

I have also seen an "internal data overflow" message. 

Exit and restart totem and the problem vanishes.

-Joseph

Comment 16 Joseph Sacco 2006-02-18 23:58:18 UTC
Progress report:

I have totem running under garnome-2.13.91 using:
* totem-2.13.91
* gstreamer-0.10.3
* gst-plugins-base-0.10.3
* gst-plugins-good-0.10.2
* latest gst-fluendo-mp3 from SVN [contains a fix for PPC's]

gst-ffmpeg-0.10.0 & the latest gst-ffmpeg from CVS are both hosed, meaning totem, rhythmbox, muine, and like apps die when attempting to play an MP3 stream.


-Joseph
Comment 17 Tim-Philipp Müller 2006-02-27 12:42:28 UTC
Any updates here?

Do you have the same problems with mp3 playback using the mad plugin from gst-plugins-ugly?

(please also update gst-ffmpeg, as ffdec_mp3 decoder has been disabled for autoplugging a while ago).

Comment 18 Joseph Sacco 2006-02-27 15:46:50 UTC
Tim-Phillip,

I have not done much with gstreamer and friends since the last report.

Let's see...
(1) uninstall gst-fluedno-mp3
(2) install gst-plugins-bad-0.10.1
(3) install gst-plugins-ugly-0.10.2
(4) uninstall, rebuild, install rhythmbox
(5) try an mp3 file:
** Message: don't know how to handle audio/mpeg, mpegversion=(int)1, layer=(int)3

2.14RC is scheduled to be released in a couple of days.  If there is anything else you would like me test, now would be a good time.

-Joseph



Comment 19 Tim-Philipp Müller 2006-02-27 15:59:08 UTC
Looks like the 'mad' plugin isn't built when you're building gst-plugins-ugly.

Please install libmad and libid3tag and the respective development packages and then re-build gst-plugins-ugly.

Comment 20 Joseph Sacco 2006-02-27 16:32:42 UTC
Tim-Phillip,

That worked:
(1) uninstall gst-fluendo-mp3-svn
(2) download, build, and install libmad-0.15.1b, libid3tag-0.15.1b
(3) uninstall gst-plugins-ugly-0.10.2
(4) build and install gst-plugins-0.10.2

(5) test mp3 stream with rhythmbox
     ==> OK

Now I understand why this plugin set is labelled 'ugly'. MP3 support depends upon two packages that have not been actively maintained since February, 2004.

-Joseph
Comment 21 Tim-Philipp Müller 2006-02-27 16:54:40 UTC
Excellent, can this bug be closed then?


FWIW, libmad is used fairly widely and does a really good job too. The reason the libmad mp3 decoder plugin is in the -ugly plugin set has more to do with potential patent issues involved in this case.
Comment 22 Joseph Sacco 2006-02-27 17:39:16 UTC
Tim-Phillip,

The libmad mp3 decoder plugin is certainly a solution to the problem, even if it does depend upon code that is no longer maintained but is still widely used.

In the process of updating pacakges on a daily basis as we approach 2.14RC,  I have somehow managed to affect the video portion of totem. When I now load a test .avi file into totem I get only the mp3 audio part + gloom:

** Message: don't know how to handle video/x-divx, divxversion=(int)5,    framerate=(fraction)25/1, width=(int)352, height=(int)288

To insure that the problem was not caused by leftover cruft,  I first removed, rebuilt, and reinstalled all of the gstreamer pieces and then removed, rebuilt and reinstalled totem.

-Joseph
Comment 23 Tim-Philipp Müller 2006-02-27 17:48:04 UTC
That means most likely that you don't have gst-ffmpeg installed, which you need in this case (I strongly recommend CVS of gst-ffmpeg).
Comment 24 Joseph Sacco 2006-02-27 18:00:05 UTC
Tim-Phillip,

Right again... [:-)]. 

Looks like we need
* gst-ffmeg
* gst-plugins-ugly 
   * libmad
   * libid3tag

In order for totem-1.3.91 to work.

Will there be a new release for gst-ffmpeg [and totem] for 2.14.RC?

-Joseph
Comment 25 Joseph Sacco 2006-02-28 04:27:03 UTC
Tim-Phillip,

I cannot package libmad with GARNOME because of licensing issues.  Got any other suggestions?

-Joseph
Comment 26 Paul Drain 2006-02-28 07:23:22 UTC
Joseph,

   Originally, libmad & libid3tag were listed on the GARNOME website and README's as required dependencies -- is this not the case any longer?

If not, it probably should be :)
Comment 27 Tim-Philipp Müller 2006-02-28 11:41:29 UTC
You don't need any of those "for totem to work", you just need them to be able to play back certain types of files.

libmad and libid3tag are both GPL licensed, I find it hard to believe that that license poses a problem for you ;) There may be other legal issues of course which would prevent you from distributing these things (that goes for any media player/backend though). ffmpeg and gst-ffmpeg are LGPL licensed, so again the license itself should not be an issue, but there may be other legal issues.

There isn't really anything you can do about this other than use and promote free media formats.

Glad to hear things work for you on PPC now, so closing this bug (the packaging/distribution issues sound more like something for the garnome mailing list).