On Wed, Feb 12, 2003 at 08:08:20PM -0800, Lucky Green wrote:
> I just spent a few days trying to determine why postfix with STARTTLS
> enabled is instantly dumping core on my new FreeBSD 5.0 machine.
>
> The problem was caused by a conflict between OpenSSL library versions
> 0.9.6 and 0.9.7, both of which are installed on the machine. The former
> as part of the FreeBSD base distribution, the latter as a Port.
>
> Unfortunately, the nature of the conflict, at least on my box, prevented
> any meaningful gdb back trace.
>
> If you are seeing unexplained core dumps with SSL-using applications and
> have both OpenSSL 0.9.6 and 0.9.7 installed, chances are you ran into
> this problem.
>
> Fix:
> no idea.
>
> Workaround:
> 1) Remove one of the two conflicting OpenSSL versions. This may be
> non-trivial; on FreeBSD, a Google search seems to indicate that
> replacing the OpenSSL version that ships with the OS may lead to other
> problems and/or unexpected behavior.
>
> 2) Convince your OS provider to upgrade to 0.9.7.
>
> 3) If you are a Port/Package/RPM maintainer, you may wish to implement a
> check for conflicting OpenSSL library versions.
>
> FYI, FreeBSD is not the only OS on which this problem has been found to
> exist. Debian Linux is experience the same problem. See a post to
> debian-devel-announce attached below.
The problem is picking up the correct library. On HP-UX this is quite
simple. The full name of the library is compiled in. Versioning can be
done by setting the name of the shared library.
serv01 21: chatr /usr/postfix/lbin/smtpd
/usr/postfix/lbin/smtpd:
shared executable
shared library dynamic path search:
SHLIB_PATH disabled second
embedded path disabled first Not Defined
internal name:
smtpd
shared library list:
static /usr/postfix/lib/libmaster.1
static /usr/postfix/lib/libglobal.1
static /usr/postfix/lib/libdns.1
static /usr/postfix/lib/libutil.1
dynamic /usr/local/lib/libsasl2.sl.2
dynamic /usr/local/bind/lib/libbind.sl.8.2.7
dynamic /usr/local/lib/libdb.sl
dynamic /usr/local/ssl/lib/libssl.sl.0.9.7
dynamic /usr/local/ssl/lib/libcrypto.sl.0.9.7
dynamic /usr/lib/libc.1
shared library binding:
deferred
global hash table disabled
plabel caching disabled
global hash array size:1103
global hash array nbuckets:3
shared vtable support disabled
static branch prediction disabled
kernel assisted branch prediction enabled
lazy swap allocation disabled
text segment locking disabled
data segment locking disabled
third quadrant private data space disabled
fourth quadrant private data space disabled
data page size: 4K
instruction page size: 4K
OpenSSL does set the soname to the complete library version, so version
conflicts should not occur regardless of the path given during compilation:
...
-Wl,-soname=lib$$i.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
...
Anyway, using distinct paths might be good enough, but:
If an operating system does not manage to remember whether it should load
a library from /usr/lib or /usr/local/lib (given the information it had
during compilation) the operating system is broken. Fix it.
Best regards,
Lutz
PS. OpenSSL versions before 0.9.7 did not officially support shared
libraries. I don't know what soname's might be set by distributors, if
any.
--
Lutz Jaenicke [EMAIL PROTECTED]
http://www.aet.TU-Cottbus.DE/personen/jaenicke/
BTU Cottbus, Allgemeine Elektrotechnik
Universitaetsplatz 3-4, D-03044 Cottbus
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]