Incompatibility with libdirac_encoder 1.0.2-3

After updating to Ubuntu 10.10 beta cannot run mocp server:

$ mocp -S
Running the server...
Trying JACK...
Trying ALSA...
Build signature doesn't match environment
mocp: symbol lookup error: /usr/lib/libdirac_encoder.so.0: undefined symbol: _ZdaPv, version GLIBCXX_3.4

It's for 2.5.0-alpha4; mocp, built from sources, falls with the same error.

PLD linux, moc 2.4.4, dirac 1.0.2
It seems there's something wrong with ffmpeg plugin.
So you can simply ./configure --without-ffmpeg. Disabling ffmpeg plugin fixed it for me.

This problem appears after upgrading libstdc++ (version 3.4.15
is implicated). It also affects other applications (e.g., xfce
and smartmontools). So I don't know whether it's a library
bug or if the new library is triggering a bug in MOC.

I have a simple patch to MOC which claims to fix the problem,
but it's unclear to me whether it is this patch which actually
fixes it or merely the rebuilding of MOC against the updated
library.

So if you experience this problem and are prepared to help me
investigate further (and are able to build MOC from source),
post a message here and I'll talk you through what's required.

Although I cannot test this, I believe that the 'undefined symbol' problem is the result of an ABI upgrade in the GNU C++ compiler between versions 3.3 and 3.4. The problem arises when MOC and all its libraries are not compiled with the same ABI version.

You can test for this using 'objdump -p $(which mocp) | grep CXXABI_' and repeating for each library listed in the 'ldd $(which mocp)' output. If the version following 'CXXABI_' differs in the first two numbers (e.g., CXXABI_1.2 versus CXXABI_1.3) then you have the problem.

You can resolve it by either rebuilding the libraries to match the ABI being used by 'mocp' or upgrading your libraries from your distribution's repositories. If you still have a mismatch, then you need to report the problem through your distribution's bug reporting channels.