the sorry saga of the talloc soname 'fix'

tridge at samba.org tridge at samba.org
Tue Jul 7 04:22:16 GMT 2009


Hi Simo,

If you want the binary backward compatibility stuff in your RedHat
packages of talloc, then please add it there. Keep it for as many
years as you think it is needed. Maintain those changes in whatever
way you want.

I will try to keep API compatibility in lib/talloc in Samba as far as
is reasonably possible without compromising the code. I don't promise
the API won't ever change. I certainly don't promise the ABI won't
change. 

A huge proportion of the Samba codebase is now being exported as
shared libs and used by projects like OpenChange. I'm delighted that
they are using it, and I'm sure they will be able to continue to use
it in the future without us having to commit to no ABI changes across
all the code they are using.

A lot of the changes we make to pidl end up breaking the ABI. Each
time we edit an IDL file we break the ABI. Numerous tdb changes over
the years have broken the ABI. If we had committed to the ABI never
changing on those a few years back we'd now be up to our necks in
backwards compatibility hacks.

If you think that is the only way we can do Samba libs then I
disagree, and I'd also say that if it was the price, then it is not a
price the Samba project should pay. Shared libs are a nice sideline,
they are not the core purpose of the Samba project. They are the
responsibility of those who decide to produce the shared libs. I
admire the efforts of those who choose to do it, but I do not accept
that the rest of the project must be driven by the imperatives of
those shared library efforts.

 > This will happen only if talloc.so.1 is not available on the system, So
 > far you advocated having both as a solution to avoid rebuilding all
 > packages that depend on talloc.

nope, in you only get this warning from the loader when both
libtalloc.so.1 and libtalloc.so.2 are on the system.

 > > If we up the .so number to 2 then you can also see the brokenness by
 > > looking at the dependencies, because we are explicitly marking the ABI
 > > as having changed. It is easy to see the brokenness using ldd, or by
 > > using dpkg. 
 > 
 > No for libraries that compiled talloc statically ldd will tell you
 > nothing.

It does tell you what is wrong. The loader gives you the warning I
showed, then when you run ldd on the binary and the library that the
warning pointed you at it shows you that you have a binary that
depends on two incompatible versions of libtalloc.

We also get a runtime abort. Once we have talloc_set_log_fn() then we
should make that abort print a useful message as well.

Cheers, Tridge


More information about the samba-technical mailing list