On Tue, 03 Jan 2006, Simon Matter wrote: > could not build postfix with SASLv2 _and_ LDAP support if the installed > openldap has been built for SASLv1. This has just resulted in segfaults.
You are experienced what I call the "missing versioned symbols hell". We have that fixed in Debian by force. If you're interested in the patches to fully version SASLv2 (Debian dropped SASLv1), just drop me a note and I will send them to you. I *think* they were sent to CMU as well, but I am not sure, I will revisit this if the Cyrus maintainer team in Debian takes over Cyrus SASL as well. NOTE: I assume the old problem with SASL using global state that prevented it from being used at the same time in client and server mode has been fixed. Otherwise, it could be the cause as well, it depends on what has the chance to break the app first. > Without understanding what exactly the problem was, I fear the same could > be the case with cyrus-imapd as well? It depends. Without symbol versioning, if you somehow manage to link both saslv1 and saslv2 to the same library or application, it goes kaboom. This can happen if you link to libs linked to different versions of sasl, or if glibc nsswitch modules link to sasl (guess what happens if you use LDAP passwd maps?). So, if cyrus-imap is linked to saslv2 (HIGHLY recomended), and *anything* else it uses is linked to saslv1 (e.g. openldap libs), and symbols are unversioned... bad things _will_ happen. Note that the same crap happens if anything SASL links to (or dlopen()s, it is the same problem) manages to link to other SASL lib (again old openldap libs...). > BTW: I know that openldap built against SASLv1 is old, but I still want > the rpm to be suitable for older platforms. If it's a problem I simply > disable ldap pts support for those using openldap/SASLv1. You cannot fix this, I am afraid. The old libs won't be versioned, thus they will still require that the *entire* system use either saslv1 or saslv2 for maximum stability. You need to have at least one of the clashing libs with symbols versioned... AND you absolutely *must* have built everything using that library against the library with versioned symbols. Oh, and the symbol version must be the same, too. In Debian, we are using "SASL2". -- "One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh ---- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html