Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 102843 - amarok requires xine-lib to be built with USE=mad (for mp3 support) or else it crashes
Summary: amarok requires xine-lib to be built with USE=mad (for mp3 support) or else i...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Gentoo Sound Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-08-17 07:47 UTC by b.eggleston
Modified: 2005-08-18 05:41 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description b.eggleston 2005-08-17 07:47:29 UTC
After switching on debugging on amarok to find the cause of continuous crashes I found the problem  
stemmed from the mad decode code in xine-lib (which had not been built with USE=mad).  
After recompiling xine-lib with USE=mad and recompiling amarok, the crashes went away 
 
A line should be added to tha amarok ebuild requiring xine-lib be built with USE=mad if mp3 support is 
required 

Reproducible: Always
Steps to Reproduce:
1. emerge xine-lib without the mad useflag set 
2. emerge amarok with xine useflag set 
3. attempt to play an mp3 file using amarok (through the xine engine) 
 
Actual Results:  
Crash 

Expected Results:  
mp3 played
Comment 1 Diego Elio Pettenò (RETIRED) gentoo-dev 2005-08-17 09:31:11 UTC
Hmm I'll try to find a better solution, seems like internal mad still has 
problem, but it should be related to broken mp3s... 
 
Comment 2 Carsten Lohrke (RETIRED) gentoo-dev 2005-08-17 09:55:54 UTC
(In reply to comment #1)
> Hmm I'll try to find a better solution, seems like internal mad still has 
> problem, but it should be related to broken mp3s... 
>  

Diego, please don't use internal libs. Rather hard disable them if possible.
Apart from the additional used memory having two versions of the same library in
the system, in case of vulnerabilites in those included libs the whole process
to from fixing, to arch testing, to GLSA release gets more complicated and takes
more time and work for the security team, arch testers an package maintainers.
Also there's always the chance to miss one of these "hidden" libraries and ship
vulnerable ebuilds. 

For now we have to live with the inability of portage to deal with second level
dependencies, but using internal libs is fugly and not a solution.
Comment 3 Diego Elio Pettenò (RETIRED) gentoo-dev 2005-08-17 10:10:46 UTC
mad useflag enables the use of EXTERNAL mad that is supposed NOT to be the 
right way to do. 
For 1.0 series this is a patch, for 1.1 the patch is on upstream but the 
default is still to use the internal libraries. 
 
I was already thinking of removing the mad useflag and default to the external 
library, but this is not easily feasible as you can't disable it at all. 
 
So, also if I know how to deal with them, for now the default will be this. 
 
BTW, xine-lib (with vlc) is the one that uses the more external libraries 
possible. It also had external ffmpeg support before 1.1 that changes the 
required version that we don't have on portage. So no need to state that as 
xine-lib is non-optimal, as mplayer and gstreamer uses internal copies of many 
libraries. 
Comment 4 Carsten Lohrke (RETIRED) gentoo-dev 2005-08-17 10:56:02 UTC
> mad useflag enables the use of EXTERNAL mad that is supposed NOT to be the 
right way to do. 

Just because upstream ships so? External/shared libs should _always_ be used,
unless it's not possible for a reason. Flagging the usage of internal vs
external  libs is inappropriate imho, and a hard dependency on the external lib
the way to go.
Comment 5 Diego Elio Pettenò (RETIRED) gentoo-dev 2005-08-18 02:52:24 UTC
Now mad useflag enable the use of mad decoder AND defaults to use the external 
library. (Internal) FFMPEG is used for decoding mp3 audio track from videos, 
so it doesn't lose too much functionality without mad useflag. 
 
The same goes for a52 and dts flags (enable/disable, with external libraries). 
 
I was *already* planning to do this before, but as upstream wasn't so sure 
about this, I preferred wait a bit. 
Consider that our xine-lib is heavily patched to enable/disable optional 
dependencies and modules, and this makes me the only responsible in case of 
bugs. So please don't bitch about internal libraries *to me*, as I'm already 
doing this since I come here! 
 
By the way, xine-lib still uses internal libdvdnav... while I was the one 
pushing to use the external one, the internal is/was *way more* reliable, and 
I'm *NOT* going to change this.