Item1819: undefined symbol: apreq_handle_apache2 when using mod_perl
Priority: Normal
Current State: Closed
Released In:
Target Release: n/a
The following setup is used:
- mod_perl engine is activated
- template login is used
- ldap contrib is active for authentication
There is no problem with the login when using CGI. But when activating mod_perl all pages can be browsed but the login fails presenting a white empty screen. The error log holds this:
[Fri Jul 10 00:55:48 2009] [error] [client 192.168.129.1] Apache2::RequestIO::print: (104) Connection reset by peer at /path/to/foswiki/lib/Foswiki/Engine/Apache.pm line 243, referer: https://hostname/foswiki/bin/login/Offices/Duesseldorf/WikiInstallationLdapNGPluginTests?origurl=/foswiki/Offices/Duesseldorf/WikiInstallationLdapNGPluginTests%3frefreshldap%3don%26refresh%3don
/usr/sbin/apache2: symbol lookup error: /usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so: undefined symbol: apreq_handle_apache2
--
IngoKappler - 09 Jul 2009
Seems as if your apache is flawed. Which operating system is it? Which linux distro?
Try
ldd /usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so
and watch out for any undefined symbol library.
--
MichaelDaum - 10 Jul 2009
Debian Linux alias Lenny.
ldd /usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so
linux-gate.so.1 => (0xb7f22000)
libapreq2.so.3 => /usr/lib/libapreq2.so.3 (0xb7f0b000)
libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0xb7eed000)
libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0xb7ec1000)
libuuid.so.1 => /lib/libuuid.so.1 (0xb7ebd000)
librt.so.1 => /lib/i686/cmov/librt.so.1 (0xb7eb4000)
libcrypt.so.1 => /lib/i686/cmov/libcrypt.so.1 (0xb7e82000)
libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7e69000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7e65000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7d09000)
libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0xb7cc6000)
liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0xb7cb9000)
libdb-4.6.so => /usr/lib/libdb-4.6.so (0xb7b86000)
libpq.so.5 => /usr/lib/libpq.so.5 (0xb7b67000)
libmysqlclient_r.so.15 => /usr/lib/libmysqlclient_r.so.15 (0xb797b000)
libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0xb790c000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb78e6000)
/lib/ld-linux.so.2 (0xb7f23000)
libresolv.so.2 => /lib/i686/cmov/libresolv.so.2 (0xb78d2000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0xb78bb000)
libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0xb781d000)
libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb77d7000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7684000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb75f0000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0xb75ed000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb75c2000)
libnsl.so.1 => /lib/i686/cmov/libnsl.so.1 (0xb75a9000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7583000)
libz.so.1 => /usr/lib/libz.so.1 (0xb756e000)
libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0xb755e000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb7559000)
libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb74f1000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb74cd000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb74c5000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb74c2000)
--
IngoKappler - 10 Jul 2009
Issue most probably isn't related to LdapContrib because when logging in while using normal CGI and afterwards switching to use mod_perl, the issue also occures when trying to save with an editor or to use preview from the raw editor. The error reamins thes same:
/usr/sbin/apache2: symbol lookup error: /usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so: undefined symbol: apreq_handle_apache2
/usr/sbin/apache2: symbol lookup error: /usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so: undefined symbol: apreq_handle_apache2
/usr/sbin/apache2: symbol lookup error: /usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so: undefined symbol: apreq_handle_apache2
Now put the issue to
ModPerlEngineContrib.
Oh, this doesn't look good
:
root@wiki-ngm-test:/etc/apache2# ldd -r /usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so
linux-gate.so.1 => (0xb7fbf000)
libapreq2.so.3 => /usr/lib/libapreq2.so.3 (0xb7fa8000)
libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0xb7f8a000)
libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0xb7f5e000)
libuuid.so.1 => /lib/libuuid.so.1 (0xb7f5a000)
librt.so.1 => /lib/i686/cmov/librt.so.1 (0xb7f51000)
libcrypt.so.1 => /lib/i686/cmov/libcrypt.so.1 (0xb7f1f000)
libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7f06000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7f02000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7da6000)
libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0xb7d63000)
liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0xb7d56000)
libdb-4.6.so => /usr/lib/libdb-4.6.so (0xb7c23000)
libpq.so.5 => /usr/lib/libpq.so.5 (0xb7c04000)
libmysqlclient_r.so.15 => /usr/lib/libmysqlclient_r.so.15 (0xb7a18000)
libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0xb79a9000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7983000)
/lib/ld-linux.so.2 (0xb7fc0000)
libresolv.so.2 => /lib/i686/cmov/libresolv.so.2 (0xb796f000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0xb7958000)
libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0xb78ba000)
libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb7874000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7721000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb768d000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0xb768a000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb765f000)
libnsl.so.1 => /lib/i686/cmov/libnsl.so.1 (0xb7646000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7620000)
libz.so.1 => /usr/lib/libz.so.1 (0xb760b000)
libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0xb75fb000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb75f6000)
libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb758e000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb756a000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7562000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb755f000)
undefined symbol: Perl_get_sv (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_Imarkstack_ptr_ptr (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_Isv_yes_ptr (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: modperl_xs_sv2request_rec (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_call_list (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_Istack_sp_ptr (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_sv_2mortal (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_vstringify (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_form (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_vcmp (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_sv_setref_pv (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_Iscopestack_ix_ptr (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_newSV (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: apreq_handle_apache2 (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_Iunitcheckav_ptr (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_Istack_base_ptr (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_newSVpv (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_new_version (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_croak (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_newXS (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_sv_derived_from (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_sv_2pv_flags (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
undefined symbol: Perl_sv_magic (/usr/lib/perl5/auto/APR/Request/Apache2/Apache2.so)
--
IngoKappler - 11 Jul 2009
Check if there is a link in
/etc/apache2/mods-enabled
pointing to
/etc/apache2/mods-available/apreq.load
and another pointing to
/etc/apache2/mods-available/perl.load
. If not, create them, restart apache and test if it works.
--
GilmarSantosJr - 11 Jul 2009
Thanks!
Putting the link for
apreq.load
solved the issue. Looks like this should be added to the documentation for the
ModPerlEngineContrib.
Regards,
--
IngoKappler - 11 Jul 2009
yes, appropriate information should be added to the
ModPerlEngineContrib documentation.
--
WillNorris - 16 Jul 2009
I plan to do that via subversion although it may take me a bit the first time.
--
IngoKappler - 23 Jul 2009
Good job, Ingo!
Just an observation:
Apache2::Request
is not required. It's recommended. The code try to use it, but if it's not available
CGI.pm
is used. It's already said in the
Dependencies
field, but it needs to be more explicit.
Feel free to update change history and version number in svn and release to foswiki.org.
--
GilmarSantosJr - 28 Jul 2009
Hi Gilmar,
right it is listed in the dependencies. If you try using
CGI
in case
Apache2::Request
is not available why did it fail for me then, while I had not loaded the
apreq
module? Could there be an issue with the fallback or the
apreq
verification? Maybe the fallback normally works and only under special conditions fails? Because for me everything looked ok until I tried to login. I double checked now my CGI version which is 3.29. So as of now and from my personal point of view
apreq
was required not recommended (optional). Don't get me wrong
, recommeded is most probably the correct definition and I now aligned the documentation change accordingly. I am just asking/trying to understand.
--
IngoKappler - 28 Jul 2009
Uh, finally delivered
and closed.
--
IngoKappler - 23 Oct 2009