GNOME Bugzilla – Bug 329394
[0.10] problems running totem on Linux/PPC
Last modified: 2006-02-28 11:41:29 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
+ Trace 65801
Thread 1 (Thread 807088416 (LWP 6771))
Thread 1 (Thread 807088416 (LWP 6815))
Please add this to your ~/.gdbinit: handle SIG33 nostop handle SIG33 pass
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
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
I rebuilt 'Check' with -fPIC and all 34 tests for gstreamer-0.10.2 now pass. That moves the problem back to totem. -Joseph
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?
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
+ Trace 65889
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
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.
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
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
Does the visualization crash in goom_update() by any chance? Is it the same stack trace as in bug #329181?
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
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.
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
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.
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
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
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).
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
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.
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
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.
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
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).
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
Tim-Phillip, I cannot package libmad with GARNOME because of licensing issues. Got any other suggestions? -Joseph
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 :)
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).