[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: back-end fsfs DB corruption? - attempt to merge uncovering it

From: Stefan Sperling <stsp_at_elego.de>
Date: Tue, 15 Sep 2009 21:14:30 +0100

On Tue, Sep 15, 2009 at 03:00:36PM -0500, Paul Hammant wrote:
> >
> > OK, one last question if I may:
> >
> > Are you sure that the svn binary you've built is using the correct
> > libsvn_* libraries? If it happens to load the old ones, which can
> > happen on Linux where shared lib dependencies are resolved at runtime,
> > depending on your configuration, then it could be calling into a wrong
> > shared library which does not have the fix applied.
> >
>
> No, I'm not sure that's the case. I'm a Java guy mostly, and an
> infrequent visitor to configure/make/gcc. Doing a "svn --version" was
> yielding plausible version numbers [1.6.6 (dev), 1.6.5(38xxx) and
> alike ]. How could I tell that transitive deps were right or wrong ?
>
> We're Fedora core 10, and yum installed the non-svn deps like
> libtool. It is true that Svn was already in the path at build time,
> but nothing the flew past in configure or make looked to be pointing
> to prior items.
>
> We still have the 1.6.5+2patch, and the 1.6.x-r38000 checkouts and can
> build again. How can we be 100% sure that we're not dragging in
> inappropriate deps ?

You can use ldd to see which libraries your svn binary is using.
It should only use libsvn_* libraries from the --prefix you specified
to the configure script when building Subversion.

If it is using any libraries e.g from /usr/lib and you did not pass
--prefix=/usr/lib, you likely have this problem. Since all your libraries
are 1.6.x versions, Subversion will run just fine; the ABI does not change
at all within a single release line. But your svn 1.6.6 will behave like
e.g. 1.6.5 in some places.

You can adjust the run-time search path for shared libraries as well
by tweaking the LD_LIBRARY_PATH environment variable. See the man page
of ld.so for details: man ld.so
This way you may be able to enforce use of the correct set of shared
libraries without having to recompile:
export LD_LIBRARY_PATH=/my/svn/prefix/lib:$LD_LIBRARY_PATH

E.g. below is is what ldd prints for my trunk build and for a 1.6.5
binary installed in /usr/local. Note that the libsvn_* libraries
do not (and should not) overlap between the two:

$ ldd `which svn`
/home/stsp/svn/prefix/svn-trunk/bin/svn:
        Start End Type Open Ref GrpRef Name
        1c000000 3c017000 exe 1 0 0 /home/stsp/svn/prefix/svn-trunk/bin/svn
        06c71000 26c78000 rlib 0 1 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_client-1.so.0.0
        0508f000 2509b000 rlib 0 2 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_wc-1.so.0.0
        061b5000 261b9000 rlib 0 2 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_ra-1.so.0.0
        0b94d000 2b956000 rlib 0 3 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_ra_serf-1.so.0.0
        0f034000 2f038000 rlib 0 4 0 /home/stsp/svn/prefix/serf/lib/libserf-0.so.0.0
        08317000 28320000 rlib 0 3 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_ra_neon-1.so.0.0
        06650000 26655000 rlib 0 3 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_ra_svn-1.so.0.0
        093c2000 293c6000 rlib 0 3 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_ra_local-1.so.0.0
        0249a000 224a6000 rlib 0 4 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_repos-1.so.0.0
        04f4a000 24f4e000 rlib 0 5 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_fs-1.so.0.0
        069d2000 269da000 rlib 0 6 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_fs_base-1.so.0.0
        08d08000 28d26000 rlib 0 9 0 /home/stsp/svn/prefix/bdb/lib/libdb-4.7.so
        03159000 23160000 rlib 0 6 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_fs_fs-1.so.0.0
        008da000 208de000 rlib 0 8 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_fs_util-1.so.0.0
        04d2d000 24d32000 rlib 0 12 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_delta-1.so.0.0
        03be3000 23be7000 rlib 0 3 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_diff-1.so.0.0
        084a5000 284b7000 rlib 0 15 0 /home/stsp/svn/prefix/svn-trunk/lib/libsvn_subr-1.so.0.0
        02f64000 22f71000 rlib 0 16 0 /home/stsp/svn/prefix/sqlite/lib/libsqlite3.so.8.6
        0c3fe000 2c403000 rlib 0 17 0 /home/stsp/svn/prefix/apr/lib/libaprutil-1.so.3.9
        01dc4000 21dcb000 rlib 0 18 0 /home/stsp/svn/prefix/apr/lib/libapriconv-1.so.2.1
        0413f000 24144000 rlib 0 18 0 /home/stsp/svn/prefix/apr/lib/libapr-1.so.3.8
        006d9000 206e0000 rlib 0 4 0 /home/stsp/svn/prefix/neon/lib/libneon.so.28.4
        024ff000 2250c000 rlib 0 7 0 /usr/lib/libssl.so.15.0
        01cdb000 21d1b000 rlib 0 7 0 /usr/lib/libcrypto.so.18.0
        09e3e000 29e46000 rlib 0 18 0 /usr/lib/libz.so.4.1
        0e3ee000 2e3f7000 rlib 0 19 0 /usr/lib/libexpat.so.9.0
        04d89000 24dc2000 rlib 0 1 0 /usr/lib/libc.so.51.0
        0c29a000 0c29a000 rtld 0 1 0 /usr/libexec/ld.so

$ ldd /usr/local/bin/svn
/usr/local/bin/svn:
        Start End Type Open Ref GrpRef Name
        1c000000 3c015000 exe 1 0 0 /usr/local/bin/svn
        00cd0000 20cd7000 rlib 0 1 0 /usr/local/lib/libsvn_client-1.so.1.2
        01632000 21639000 rlib 0 2 0 /usr/local/lib/libsvn_wc-1.so.1.2
        0b2c4000 2b2c8000 rlib 0 2 0 /usr/local/lib/libsvn_ra-1.so.1.2
        09205000 29209000 rlib 0 3 0 /usr/local/lib/libsvn_ra_local-1.so.1.2
        02fe5000 22ff1000 rlib 0 4 0 /usr/local/lib/libsvn_repos-1.so.1.2
        0e4eb000 2e4ef000 rlib 0 5 0 /usr/local/lib/libsvn_fs-1.so.1.2
        09c4a000 29c51000 rlib 0 6 0 /usr/local/lib/libsvn_fs_fs-1.so.1.2
        06539000 26541000 rlib 0 6 0 /usr/local/lib/libsvn_fs_base-1.so.1.2
        0f4a4000 2f4a8000 rlib 0 8 0 /usr/local/lib/libsvn_fs_util-1.so.1.2
        01d5f000 21d64000 rlib 0 3 0 /usr/local/lib/libsvn_ra_svn-1.so.1.2
        04e5a000 24e60000 rlib 0 4 0 /usr/local/lib/libsasl2.so.2.22
        09ab1000 29aba000 rlib 0 3 0 /usr/local/lib/libsvn_ra_neon-1.so.1.2
        0ec5f000 2ec63000 rlib 0 11 0 /usr/local/lib/libsvn_delta-1.so.1.2
        0e5bc000 2e5c0000 rlib 0 3 0 /usr/local/lib/libsvn_diff-1.so.1.2
        068a1000 268b2000 rlib 0 14 0 /usr/local/lib/libsvn_subr-1.so.1.2
        0a457000 2a464000 rlib 0 15 0 /usr/local/lib/libsqlite3.so.13.3
        01b50000 21b54000 rlib 0 15 0 /usr/local/lib/libaprutil-1.so.2.11
        01783000 2179e000 rlib 0 16 0 /usr/local/lib/libdb.so.5.0
        07142000 27147000 rlib 0 16 0 /usr/local/lib/libapr-1.so.3.0
        0c4f7000 2c4fe000 rlib 0 4 0 /usr/local/lib/libneon.so.27.0
        0c919000 2c926000 rlib 0 5 0 /usr/lib/libssl.so.15.0
        0c1b0000 2c1b8000 rlib 0 16 0 /usr/lib/libz.so.4.1
        0f21b000 2f220000 rlib 0 5 0 /usr/lib/libgssapi.so.5.0
        09996000 299a6000 rlib 0 5 0 /usr/lib/libkrb5.so.17.0
        06833000 26843000 rlib 0 5 0 /usr/lib/libasn1.so.17.0
        07dd4000 27e14000 rlib 0 5 0 /usr/lib/libcrypto.so.18.0
        07ba1000 27baa000 rlib 0 17 0 /usr/lib/libexpat.so.9.0
        01664000 21743000 rlib 0 17 0 /usr/local/lib/libiconv.so.6.0
        0744e000 27452000 rlib 0 16 0 /usr/local/lib/libintl.so.4.0
        09417000 29450000 rlib 0 1 0 /usr/lib/libc.so.51.0
        02825000 02825000 rtld 0 1 0 /usr/libexec/ld.so

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2395233

To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_subversion.tigris.org].
Received on 2009-09-15 22:15:40 CEST

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.