Bug 214051 - Audio CDs are crashing banshee, maybe inside liboil or gstreamer plugins
Summary: Audio CDs are crashing banshee, maybe inside liboil or gstreamer plugins
Status: RESOLVED FIXED
Alias: None
Product: openSUSE 10.2
Classification: openSUSE
Component: GNOME (show other bugs)
Version: Final
Hardware: x86 Linux
: P5 - None : Critical (vote)
Target Milestone: ---
Assignee: Aaron Bockover
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-10-20 17:07 UTC by Andreas Hanke
Modified: 2007-01-04 09:37 UTC (History)
1 user (show)

See Also:
Found By: Other
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
Backtrace (2.22 KB, text/plain)
2006-10-20 17:20 UTC, Andreas Hanke
Details
/proc/cpuinfo (432 bytes, text/plain)
2006-11-24 04:14 UTC, Andreas Hanke
Details
lshal output (98.70 KB, text/plain)
2006-11-24 04:16 UTC, Andreas Hanke
Details
hwinfo --all output (42.96 KB, text/plain)
2006-11-24 04:17 UTC, Andreas Hanke
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Hanke 2006-10-20 17:07:29 UTC
banshee-0.10.12-9 is crashing under the following conditions:

- Insert an Audio CD while banshee is not running. By default, banshee is started for Audio CDs, but it crashes directly on startup.

- Insert an Audio CD while banshee is running. In this case, it crashes as soon as I try to play an audio track from the inserted CD.

In both cases, it writes to the console resp. ~/.xsession-errors:



org.gnome.HelixDbusPlayer was already started
Debug: [20.10.2006 18:57:29] (Standard Wiedergabe-Engine) - Helix Remote
Debug: [20.10.2006 18:57:30] (Audio-CD Kern initialisiert) - 
Building initial DAAP database from local library...
Starting DAAP Server
Scanning library for tracks to update
Done scanning library
Processing track queue for pending queries
Setting MusicBrainz proxy to www.musicbrainz.org:80
Done processing track queue
Setting MusicBrainz proxy to www.musicbrainz.org:80
Switching engine to: Banshee.MediaEngine.Gstreamer.GstreamerPlayerEngine

ERROR: Caught a segmentation fault while loading plugin file:
/opt/gnome/lib/gstreamer-0.10/libgstaudioresample.so

Please either:
- remove it and restart.
- run with --gst-disable-segtrap and debug.



But the problem with removing this plugin is: After removing it, all I get is: "Missing element 'audioresample' - check your GStreamer installation" and neither CDDA nor Ogg Vorbis playback works - see bug 206626
Comment 1 Andreas Hanke 2006-10-20 17:20:15 UTC
Created attachment 102155 [details]
Backtrace

According to instructions at http://banshee-project.org/Debugging
Comment 2 Aaron Bockover 2006-10-26 18:45:15 UTC
This is a bug in liboil. I cannot reproduce it SUSE 10.2 Beta1, although you must install the -base-oil package from GStreamer as that's where audioresample is. We'll fix the dependency in Banshee.

However, you at least have the plugin installed - it's just crashing inside liboil.
Comment 3 Aaron Bockover 2006-10-26 19:03:08 UTC
Andreas: Please let us know if this is any better in Beta 1. Also Banshee was upgraded from 0.10.12 to 0.11.2 from Alpha 5 to Beta 1.

When you upgrade to Beta 1, just make sure you install gstreamer010-plugins-base-oil.

Thanks!
Comment 4 Andreas Hanke 2006-11-01 07:28:35 UTC
This is unfortunately still happening for me.

All required libraries and gstreamer plugins are installed, both MP3 and Ogg Vorbis are working nicely, but Audio CDs (all the ones I tested) are crashing Banshee.
Comment 5 Aaron Bockover 2006-11-02 15:36:14 UTC
Alright, try taking this out of the Banshee context. Please send results for the following commands:

$ GST_DEBUG=3 gst-inspect-0.10 audioresample &> gst-inspect-results

Attach the 'gst-inspect-results' file to this bug.

Try playing the CD from the command line using both variations:

$ gst-launch-0.10 cdparanoiasrc ! gconfaudiosink 

The above should work, it's not using audioresample.

$ gst-launch-0.10 cdparanoiasrc ! audioresample ! gconfaudiosink

This one should probably crash, as it uses audioresample. If it does crash, please run it in gdb:

$ gdb gst-launch-0.10
(gdb) run cdparanoiasrc ! audioresample ! gconfaudiosink
<press enter until crash or playback>
(gdb) thread apply all bt

And attach the GDB trace.
Comment 6 Andreas Hanke 2006-11-03 07:51:20 UTC
Sorry, no backtrace because I can't trigger a crash this way.

The following commands are both(!) playing the CD without a crash:

gst-launch-0.10 cdparanoiasrc ! gconfaudiosink
gst-launch-0.10 cdparanoiasrc ! audioresample ! gconfaudiosink

Just Banshee is still crashing.

But I found out the following, which might be helpful:

- Banshee crashes if the first song I'm trying to play is from a CD.
- Banshee crashes if I play an MP3 and afterwards a CD.
- Banshee does _not_ crash if I play an Ogg Vorbis file and afterwards a CD.
Comment 7 Aaron Bockover 2006-11-22 17:11:15 UTC
Andreas: is this any better with RC1/GStreamer 0.10.10?
Comment 8 Aaron Bockover 2006-11-22 17:14:25 UTC
Andreas: also, what kind of hardware are you running this on? Would you happen to be using a 32 bit build of openSUSE on 64 bit hardware?
Comment 9 Andreas Hanke 2006-11-24 04:13:33 UTC
This is still happening even with RC1. :-(

The machine is i686 (Celeron, to be more exact) and runs openSUSE 10.2 RC1 (i586) now.

Is liboil maybe using some instructions that it shouldn't use on this CPU?
Comment 10 Andreas Hanke 2006-11-24 04:14:36 UTC
Created attachment 106784 [details]
/proc/cpuinfo
Comment 11 Andreas Hanke 2006-11-24 04:16:03 UTC
Created attachment 106785 [details]
lshal output
Comment 12 Andreas Hanke 2006-11-24 04:17:38 UTC
Created attachment 106786 [details]
hwinfo --all output
Comment 13 Andreas Hanke 2006-11-24 13:46:44 UTC
Rebuilding liboil without SSE2 support (CPPFLAGS=-mno-sse2) "fixes" this, I can now play Audio CDs with Banshee on this CPU.

This is of course not a proper fix, but maybe it helps you investigating further for a proper fix.
Comment 14 Andreas Hanke 2006-11-24 14:20:33 UTC
Tested -mno-sse3 as well and that doesn't suffice. Tested -mno-sse afterwards and that worked, but is more than enough because -mno-sse2 works, too.

=> It crashes with SSE2 and higher.

Either the CPU is broken and claims to support SSE2 without actually supporting it, or liboil does something wrong (like e.g. using SSE3 in a code path that was supposed to use SSE2 only).

I don't really understand this stuff, but it's maybe a starting point.
Comment 15 Craig Duquette 2006-11-29 20:39:08 UTC
I am getting a similar error message when trying to play MP3s using either MAD or Fluendo. This is in fact a bug with liboil-0.3.7 and Pentium4/PentiumM computers. Ubuntu had this bug and for a workaround they disabled SSE support. Here's a link to their bug report: https://launchpad.net/distros/ubuntu/+bug/33077
Comment 16 Andreas Hanke 2006-11-29 20:53:20 UTC
Actually I'm not 100% sure that this is the same bug because in the Ubuntu report it seemed to have crashed in a different place, but maybe for the same reason.

And yes, I can confirm that this happens even with MP3s when using the non-Helix build + Fluendo MP3 codec. I reverted to helix-banshee therefore, where at least MP3 works (because it doesn't use any gstreamer -> liboil code paths then).

Disabling SSE2 does definitely "resolve" this problem, banshee is working perfectly fine with a liboil that has SSE2 disabled.
Comment 17 James Willcox 2006-12-01 20:43:14 UTC
I'm getting this bug when trying to play anything in banshee using the fluendo mp3 plugins.  I'm on a Pentium M.
Comment 18 James Willcox 2006-12-01 21:24:15 UTC
Here's a stack trace from the crash:

#0  0xb2eb388b in composite_in_argb_sse () from /opt/gnome/lib/liboil-0.3.so.0
#1  0xb2ea5a25 in _oil_test_marshal_function ()
   from /opt/gnome/lib/liboil-0.3.so.0
#2  0xb2ea772f in oil_test_check_function ()
   from /opt/gnome/lib/liboil-0.3.so.0
#3  0xb2ea471e in oil_cpu_fault_check_try ()
   from /opt/gnome/lib/liboil-0.3.so.0
#4  0xb2ea7943 in oil_test_check_impl () from /opt/gnome/lib/liboil-0.3.so.0
#5  0xb2ea548f in oil_class_optimize () from /opt/gnome/lib/liboil-0.3.so.0
#6  0xb2ea56f7 in oil_optimize_all () from /opt/gnome/lib/liboil-0.3.so.0
#7  0xb2ea57c5 in oil_init () from /opt/gnome/lib/liboil-0.3.so.0
#8  0xb31f19d1 in resample_init ()
   from /opt/gnome/lib/gstreamer-0.10/libgstaudioresample.so
#9  0xb31ef897 in gst_audioresample_get_type ()
   from /opt/gnome/lib/gstreamer-0.10/libgstaudioresample.so
#10 0xb6bec7e3 in gst_plugin_get_name ()
   from /opt/gnome/lib/libgstreamer-0.10.so.0
#11 0xb6bece7c in gst_plugin_load_file ()
   from /opt/gnome/lib/libgstreamer-0.10.so.0
#12 0xb6bed44b in gst_plugin_load_by_name ()
   from /opt/gnome/lib/libgstreamer-0.10.so.0
#13 0xb6bee110 in gst_plugin_feature_load ()
   from /opt/gnome/lib/libgstreamer-0.10.so.0
Comment 19 Aaron Bockover 2006-12-05 21:52:41 UTC
These packages disable SSE and fix the issues for me:
http://abock.org/~aaron/liboil
Comment 20 Aaron Bockover 2006-12-07 16:11:37 UTC
AJ, online update is needed for this bug. My fix was submitted.
Comment 21 Adrian Schröter 2006-12-08 09:42:09 UTC
Our current policy does allow only to ship fixes for critical bugs (we have already too many complains that too much updates are needed).

This bug is currently classified as a major, but not as a critical bug. But I do agree that this one is a critical one.

-> changed classification