severity 336437 grave
thanks

Hi,

After some investigation, I've discovered the real cause of the segfault 
occuring when using xine-engine to play mp3s (to be more precise, all audio 
files/streams subject to be decoded by mad plugin). Currently the problem is 
known to affect amd64, but naturally, it is not architecture specific. That's 
why I up'ed the severity.

As it was noted before, compiling xine with external libmad fixes the 
segfault. However, this is not a good solution, but a workaround introducing 
other problems/bugs: compiling with external libmad is not recommended by 
xine upstream and such configuration causes kaffeine to crash. Now when using 
internal libmad (current configuration in sid) we have a quite reverse 
situation: kaffeine, xine-ui etc. work, but amarok does not. Something must 
be different about amarok. And it really is.

Amarok links against libtunepimp2c2 that in turn depends on libmad0. So it 
drags (external) libmad dependency to amarok. External libmad exports symbols 
some of which (if not all) are named the same as the ones in xine's internal 
libmad (eg. xine-lib/src/libmad/synth.c:mad_synth_frame()). So ld resolves 
some mad symbols needed by libtunepimp2c2 from external libmad . When xine 
mad decoder plugin wants to access the symbol, that is named the same as the 
one already loaded from external libmad, it is given the already loaded one 
(from external libmad). So we end with the situation that some symbols are 
used from internal libmad and some from external one (in my case at least 
mad_synth_frame() is called from external libmad (checked with gdb)). This 
leads to segfaults because both mad libs are not identical and therefore not 
compatible.

I'm not an expert of how ld works and my description might not be accurate. 
Thus I went the simplest way to solve the problem - I recompiled amarok 
without libtunepimp2-dev and xine-engine started to work (play mp3s) fine 
with current xine in sid. However, disabling some amarok features may not be 
acceptable for everyone...

P.S. oggs play fine with xine-engine and libxine1 1.0.1-1.4 in sid

Attachment: pgpXpNnTr74hY.pgp
Description: PGP signature

Reply via email to