"C. Michael Pilato" <cmpilato_at_collab.net> writes:
> I seem to recall that it used to be extremely important for Subversion
> to use the same BDB to which APR was linked. mod_dav_svn used APR's
> DB support for its activities database, and couldn't deal with having
> APR's DB being one flavor of BDB while the Subversion repositories
> which it also needed to read/write needed a different flavor of BDB.
> Has any of this changed since our move (back in 1.5) away from
> DB-based activities databases? I mean, could we move BDB detection
> into Subversion proper and that not be catastrophic?
I suppose it depends on the details of the shared library loading and
that varies from platform to platform. I don't really know all the
details or how portable it is.
Apache won't be linked to libdb at all, both mod_dav_svn and apr_dbm_db
will be loaded by apache at run time. mod_dav_svn may not be linked to
libdb either as it may also load libsvn_fs_base at run time. So on my
Linux machine when apache loads apr_dbm_db it gets an ELF NEEDED for
libdb-X.Y.so and will load that version of the library, when it loads
mod_dav_svn/libsvn_fs_base it gets NEEDED for libdb-P.Q.so and will load
that version if not already loaded.
Loading isn't the whole story, we also have to consider symbol
resolution. APR passes RTLD_GLOBAL to dlopen() so symbols from one load
are available to later loads. The default for Berkeley DB is that
symbol names are unchanged from version to version, so symbols from the
first load would satisfy the second load. However on my Debian system
the symbols are also ELF versioned (I don't know whether this a Debian
enhancement) so even when the names are the same they won't match unless
the version is new enough.
--
Philip
Received on 2011-06-21 16:57:26 CEST