https://bz.apache.org/bugzilla/show_bug.cgi?id=66005

Josef Čejka <jce...@suse.cz> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jce...@suse.cz

--- Comment #21 from Josef Čejka <jce...@suse.cz> ---
Created attachment 38538
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=38538&action=edit
Limit mod_jk.so exported symbols to "jk_module" only.

I found the real culprit. Please ignore my previous patch.

ATM mod_jk.so library exports all internal symbols so any other library loaded
after it can bind it's unresolved symbols on mod_jk.so. Glibc is checking
dependencies and dlclose() does not unload library on which depends other
library. This breaks Apache module reloading mechanism because following
dlopen() will return already existing handler to mod_jk.so without
re-initialization of global static variables so they contain still already
invalid memory pointers instead of NULL values.

In my case symbol "context_free@@LIBSELINUX_1.0" required by libkrb5support.so
was bound to context_free from mod_jk.so instead of function with the same name
provided by libselinux.so.1 because mod_jk.so was loaded first. It occurred
only if nscd daemon was disabled and nsswitch had to load krb5 libraries. I can
easily reproduce the issue on SLES15-SP4 by disabling nscd service. IMO this
can also explain why Lothar reported that his issue disappeared after modifying
nsswitch.conf.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to