On Tue, Feb 15, 2011 at 08:10:52AM -0800, Dave Beckett wrote:

Hi!

Finally solved it:

> The desc should never be NULL since it's running through a list from raptor,
> and the final one is to get the default parser.  The only way this can
> happen is if raptor wasn't initialised properly, which is my guess here.  I
> suspect ardour is linking to raptor1 and raptor2, and thus crashing.

Absolutely. For the sake of documentation, I'm going to elaborate on
this here, so it's saved in the bug for future reference.

The situation is as follows:

   - ardour depends on liblrdf (mind the l after lib)
        - liblrdf depends on libraptor1

   - ardour depends on libslv2
        - libslv2 depends on librdf0 (no l this time)
              - librdf0 (>= 1.0.13-1) depends on libraptor2

And there you have it, clashing symbols.

The solution is to add symbol versioning to both raptor libraries, then
recompile librdf, liblrdf and afterwards libslv2 (the whole dependency
chain backwards). In the end, recompile ardour.

For libslv2, we need to explicitly link against libraptor2, so the
symbols will be referenced with versions.

Symbol versioning for libraptor1 and libraptor2 is easy to achive,
simply add

   LDFLAGS += -Wl,--default-symver

to debian/rules in each package. I'll file separate bug reports against
those libs for documentation purpose.

See how then all depending libs require the versioned symbol:

Before:
adi@hex:~$ objdump -T /usr/lib/liblrdf.so.0 | grep raptor
00000000      DF *UND*  00000000              raptor_free_parser
00000000      DF *UND*  00000000              raptor_print_locator
00000000      DF *UND*  00000000              raptor_parse_abort
[..]


After:
adi@hex:~$ objdump -T /usr/lib/liblrdf.so.0 | grep raptor
00000000      DF *UND*  00000000  libraptor.so.1 raptor_free_parser
00000000      DF *UND*  00000000  libraptor.so.1 raptor_finish
00000000      DF *UND*  00000000  libraptor.so.1 raptor_parse_abort


Cheers

-- 
mail: a...@thur.de      http://adi.thur.de      PGP/GPG: key via keyserver

The trouble with being punctual is that nobody's there to appreciate it.
                -- Franklin P. Jones



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to