Joe Orton wrote:
We had all sorts of problems with Apache and OpenSSL in this arena: if httpd was not linked aganist -lssl -lcrypto, when mod_ssl, or any particular PHP extension using OpenSSL, was reloaded during a graceful restart, you risked getting libssl.so unmapped but not libcrypto.so, depending on the direction of the wind. This caused havoc because some global variables in libcrypto would not get reinitialized, but those in libssl.so would. Not fun. So when I link httpd using -lssl -lcrypto, despite the fact that httpd itself does not use any symbols from those libraries, I *must* get an httpd with DT_NEEDED of libssl and libcrypto to ensure both stay mapped for the lifetime of the process. That's why use of --as-needed must only be done as directed by the application. joe
Wow, global vars that are not static and are not properly initialized... hmm... design problem? Also, maybe the libdl could be taught to unload/unmap the other libs as well (which would be the right fix)