Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 05 May 2011 17:16:11 +0100
From:      David Woodhouse <dwmw2@infradead.org>
To:        Matthias Apitz <guru@unixarea.de>
Cc:        gnome@freebsd.org, evolution-list@gnome.org
Subject:   Re: [Evolution] evolution-2.32.1 (FreeBSD HEAD) && calendar not working
Message-ID:  <1304612172.2398.24.camel@i7.infradead.org>
In-Reply-To: <20110505113043.GA3161@sh4-5.1blu.de>
References:  <20110428140106.GA5664@sh4-5.1blu.de> <1303999409.2912.129.camel@macbook.infradead.org> <20110428145451.GA25158@sh4-5.1blu.de> <1304003620.4772.16.camel@macbook.infradead.org> <20110429084846.GA2763@sh4-5.1blu.de> <20110504094447.GA30294@sh4-5.1blu.de> <1304502723.6400.114.camel@macbook.infradead.org> <20110504104528.GA24928@sh4-5.1blu.de> <1304506085.6400.128.camel@macbook.infradead.org> <20110504125636.GA13323@sh4-5.1blu.de> <20110505113043.GA3161@sh4-5.1blu.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 2011-05-05 at 13:30 +0200, Matthias Apitz wrote:
> as you can see e2k_ascii_strcase_hash() is in two shared libs and with
> the same last bits of the correct addr and the broken addr; as I wild
> guess I simply renamed 'libecalbackendexchange.so' to get it out of the
> way; the e-calendar-factory complains about it: 
> (e-calendar-factory:36266): e-data-server-WARNING **: Cannot open
> "/usr/local/lib/evolution-data-server-1.2/extensions/libebookbackendexchange.so"

I think you renamed libebookbackendexchange.so, not
libecalbackendexchange.so ? So your *calendar* works, but presumably not
your address book?



I see the problem now.

We build these 'library' functions in the server/lib/ directory into a
static library 'libexchange.a', and that whole thing gets included into
*both* the calendar and the addressbook plugins. So of course the same
function exists in *both* of the shared libraries that get loaded.

The addressbook plugin then gets *unloaded*, I think, when the
calendar-server decides that it isn't a calendar plugin.

And I think that what you're seeing here is a bug in your platform's
dynamic linker. Even though the addressbook plugin got unloaded, the
internal symbols in the calendar plugin get resolved to point at it.

Then again, maybe it's not a bug; maybe it's just undefined behaviour. I
don't remember what is *expected* to happen in this case.

But quite frankly, we got what we deserve; we *know* that weird shit
happens on a lot of platforms when we do that, so we shouldn't have been
doing it in the first place. We should have made our 'libexchange' into
a shared library, or played namespace/linker-script tricks to ensure
that those functions weren't *exported* from our plugin 'library'
objects.

I think you'll find this is 'fixed' in Evolution 3.0 merely because the
calendar factory no longer loads the addressbook plugins, and vice
versa; they are stored in separate directories now.

But I suspect we should still fix it *properly* anyway.

-- 
dwmw2




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1304612172.2398.24.camel>