httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Trawick <traw...@gmail.com>
Subject Re: [users@httpd] Apache Startup Problems with mod_wsgi : Missing Symbols ap_cleanup_scoreboard and ap_accept_lock_mech
Date Mon, 22 Nov 2010 00:20:30 GMT
On Sun, Nov 21, 2010 at 4:49 PM, Anurag Chourasia
<anurag.chourasia@gmail.com> wrote:
> Hi Jeff,
> Your solution helped me overcome 1 of those 2 missing symbol reference but 1
> still remains. Could you please guide me for this one too.
> This is the error now.
> httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot
> load /usr/local/apache2/modules/mod_wsgi.so into server: rtld: 0712-001
> Symbol ap_accept_lock_mech was referenced from module
> /usr/local/apache2/modules/mod_wsgi.so(), but a runtime definition of the
> symbol was not found.
> Here is the mpm_common.h for me
>   +300  #ifdef AP_MPM_WANT_SET_ACCEPT_LOCK_MECH
>   +301  AP_DECLARE_DATA extern apr_lockmech_e ap_accept_lock_mech;
>   +302  extern const char ap_valid_accept_mutex_string[];
>   +303  const char *ap_mpm_set_accept_lock_mech(cmd_parms *cmd, void *dummy,
>   +304                                          const char *arg);
> Thanks again for your help on this.

I don't know why that isn't working.

Try this:  Edit server/httpd.exp and add a line for
ap_accept_lock_mech at the bottom, remove httpd, and run make again.
Maybe httpd will then export that symbol as well.

Assuming this gets you to a working state:  The root cause is that
mod_wsgi is using symbols from httpd that are intentionally not
exported.  mod_wsgi devs should come chat at dev@httpd on the need for
those symbols.


> Regards,
> Anurag
> On Mon, Nov 22, 2010 at 2:36 AM, Jeff Trawick <trawick@gmail.com> wrote:
>>
>> On Sun, Nov 21, 2010 at 3:22 PM, Anurag Chourasia
>> <anurag.chourasia@gmail.com> wrote:
>> > All,
>> > I hope you could help me with a mod_wsgi load error upon startup of
>> > apache.
>> > This is affecting one of our site Go Live and I would appreciate any
>> > help
>> > offered in this regard.
>> > The error upon startup of Apache is as follows
>> > root [zibal]% ./usr/local/apache2/bin/apachectl restart
>> > httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf:
>> > Cannot load /usr/local/apache2/modules/mod_wsgi.so into server:
>> > rtld:0712-001 Symbol ap_cleanup_scoreboard was referenced from module
>> > /usr/local/apache2/modules/mod_wsgi.so(), but a runtime definition of
>> > the
>> > symbol was not found.
>> > rtld: 0712-001 Symbol ap_accept_lock_mech was referenced from module
>> > /usr/local/apache2/modules/mod_wsgi.so(), but a runtime definition of
>> > the
>> > symbol was not found.
>>
>> those two functions aren't APIs (not expected to be called by
>> modules), so maybe they aren't visible?
>>
>> perhaps there are special instructions *somewhere* from someone who
>> has gotten mod_wsgi to work on AIX, as it is not supposed to work
>>
>> patch httpd with this, rebuild completely, and see if that gets you
>> going; the two missing symbols should be exported with this patch
>>
>> Index: include/mpm_common.h
>> ===================================================================
>> --- include/mpm_common.h        (revision 1034992)
>> +++ include/mpm_common.h        (working copy)
>> @@ -298,7 +298,7 @@
>>  * The system mutex implementation to use for the accept mutex.
>>  */
>>  #ifdef AP_MPM_WANT_SET_ACCEPT_LOCK_MECH
>> -extern apr_lockmech_e ap_accept_lock_mech;
>> +AP_DECLARE_DATA extern apr_lockmech_e ap_accept_lock_mech;
>>  extern const char ap_valid_accept_mutex_string[];
>>  const char *ap_mpm_set_accept_lock_mech(cmd_parms *cmd, void *dummy,
>>                                         const char *arg);
>> Index: include/scoreboard.h
>> ===================================================================
>> --- include/scoreboard.h        (revision 1034992)
>> +++ include/scoreboard.h        (working copy)
>> @@ -178,7 +178,7 @@
>>  apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int
>> detached);
>>  void ap_init_scoreboard(void *shared_score);
>>  AP_DECLARE(int) ap_calc_scoreboard_size(void);
>> -apr_status_t ap_cleanup_scoreboard(void *d);
>> +AP_DECLARE(apr_status_t) ap_cleanup_scoreboard(void *d);
>>
>>  AP_DECLARE(void) ap_create_sb_handle(ap_sb_handle_t **new_sbh, apr_pool_t
>> *p,
>>                                      int child_num, int thread_num);
>>
>>
>> >
>> > I am pasting the output of nm command on the apache executable and those
>> > symbols seem to exist.
>> > root [zibal]% nm ./usr/local/apache2/bin/httpd | grep
>> >  ap_accept_lock_mech
>> > ap_accept_lock_mech  D   536880332
>> > ap_accept_lock_mech  d   536900392           4
>> > ap_accept_lock_mech:G879 -           0
>> > root [zibal]% nm ./usr/local/apache2/bin/httpd | grep
>> > ap_cleanup_scoreboard
>> > .ap_cleanup_scoreboard T   268613428         212
>> > ap_cleanup_scoreboard D   536890068
>> > ap_cleanup_scoreboard d   536890068          12
>> > ap_cleanup_scoreboard d   536899972           4
>> > ap_cleanup_scoreboard:F385 -        2976
>> >
>> > I am wondering if there is a way to statically link mod_wsgi into
>> > apache?
>> > Please guide.
>> > I built Apache 2.2.17 and Mod_Wsgi 3.3 using the source and the compiler
>> > was
>> > gcc-4.2.
>> >
>> > Here is the Apache Build Information
>> > =====================================
>> > root [zibal]% ./usr/local/apache2/bin/httpd -V
>> > Server version: Apache/2.2.17 (Unix)
>> > Server built:   Nov 18 2010 05:04:25
>> > Server's Module Magic Number: 20051115:25
>> > Server loaded:  APR 1.4.2, APR-Util 1.3.10
>> > Compiled using: APR 1.4.2, APR-Util 1.3.10
>> > Architecture:   32-bit
>> > Server MPM:     Prefork
>> >  threaded:     no
>> >    forked:     yes (variable process count)
>> > Server compiled with....
>> >  -D APACHE_MPM_DIR="server/mpm/prefork"
>> >  -D APR_HAS_SENDFILE
>> >  -D APR_HAS_MMAP
>> >  -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
>> >  -D APR_USE_SYSVSEM_SERIALIZE
>> >  -D APR_USE_PTHREAD_SERIALIZE
>> >  -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
>> >  -D APR_HAS_OTHER_CHILD
>> >  -D AP_HAVE_RELIABLE_PIPED_LOGS
>> >  -D DYNAMIC_MODULE_LIMIT=128
>> >  -D HTTPD_ROOT="/usr/local/apache2"
>> >  -D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
>> >  -D DEFAULT_PIDLOG="logs/httpd.pid"
>> >  -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
>> >  -D DEFAULT_LOCKFILE="logs/accept.lock"
>> >  -D DEFAULT_ERRORLOG="logs/error_log"
>> >  -D AP_TYPES_CONFIG_FILE="conf/mime.types"
>> >  -D SERVER_CONFIG_FILE="conf/httpd.conf"
>> > Contents of config.nice file are as follows
>> > ++++++++++++++++++++++++
>> > #! /bin/sh
>> > #
>> > # Created by configure
>> > CC="gcc"; export CC
>> > "./configure" \
>> > "CC=gcc" \
>> > "$@"
>> > ++++++++++++++++++++++++
>> >
>> >
>> > Information about Apache Modules Loaded
>> > =======================================
>> > root [zibal]% ./usr/local/apache2/bin/httpd -l
>> > Compiled in modules:
>> >  core.c
>> >  mod_authn_file.c
>> >  mod_authn_default.c
>> >  mod_authz_host.c
>> >  mod_authz_groupfile.c
>> >  mod_authz_user.c
>> >  mod_authz_default.c
>> >  mod_auth_basic.c
>> >  mod_include.c
>> >  mod_filter.c
>> >  mod_log_config.c
>> >  mod_env.c
>> >  mod_setenvif.c
>> >  mod_version.c
>> >  prefork.c
>> >  http_core.c
>> >  mod_mime.c
>> >  mod_status.c
>> >  mod_autoindex.c
>> >  mod_asis.c
>> >  mod_cgi.c
>> >  mod_negotiation.c
>> >  mod_dir.c
>> >  mod_actions.c
>> >  mod_userdir.c
>> >  mod_alias.c
>> >  mod_so.c
>> >
>> > In httpd.conf, i only have the following LoadModule Statement
>> > =============================================================
>> > LoadModule wsgi_module modules/mod_wsgi.so
>> > Information about Global Accept Mutex
>> > =====================================
>> > Valid accept mutexes for this platform and MPM are: default, fcntl,
>> > sysvsem, posixsem, pthread.
>> > Alo, here is my build session transcript while building
>> > mod_wsgi.....There
>> > was absolutely no error during build.
>> > root [zibal]% make
>> >         /usr/local/apache2/bin/apxs -c -I/usr/local/include/python2.6
>> > -DNDEBUG   mod_wsgi.c -L/usr/local/lib -L/usr/local/lib/python2.6/config
>> >  -lpython2.6 -ldl -lm
>> > /usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic
>> > -U__STR__ -D_THREAD_SAFE -D_USE_IRS -D_LARGEFILE64_SOURCE -g -O2
>> > -pthread
>> > -I/usr/local/apache2/include  -I/usr/local/apache2/include
>> > -I/usr/local/apache2/include -I/usr/local/include
>> > -I/usr/local/include/python2.6 -DNDEBUG  -c -o mod_wsgi.lo mod_wsgi.c &&
>> > touch mod_wsgi.slo
>> > /usr/local/apache2/build/libtool --silent --mode=link gcc -o mod_wsgi.la
>> >  -rpath /usr/local/apache2/modules -module -avoid-version  -Wl,-brtl
>> >  mod_wsgi.lo -L/usr/local/lib -L/usr/local/lib/python2.6/config
>> > -lpython2.6
>> > -ldl -lm
>> > Target "all" is up to date.
>> > root [zibal]% make install
>> >         /usr/local/apache2/bin/apxs -i -S
>> > LIBEXECDIR=/usr/local/apache2/modules -n 'mod_wsgi' mod_wsgi.la
>> > /usr/local/apache2/build/instdso.sh
>> > SH_LIBTOOL='/usr/local/apache2/build/libtool' mod_wsgi.la
>> > /usr/local/apache2/modules
>> > rm -f /usr/local/apache2/modules/mod_wsgi.so
>> > /usr/local/apache2/build/libtool --mode=install cp mod_wsgi.la
>> > /usr/local/apache2/modules/
>> > cp .libs/mod_wsgi.so /usr/local/apache2/modules/mod_wsgi.so
>> > cp .libs/mod_wsgi.lai /usr/local/apache2/modules/mod_wsgi.la
>> > cp .libs/mod_wsgi.a /usr/local/apache2/modules/mod_wsgi.a
>> > chmod 644 /usr/local/apache2/modules/mod_wsgi.a
>> > ranlib /usr/local/apache2/modules/mod_wsgi.a
>> > ----------------------------------------------------------------------
>> > Libraries have been installed in:
>> >    /usr/local/apache2/modules
>> > If you ever happen to want to link against installed libraries
>> > in a given directory, LIBDIR, you must either use libtool, and
>> > specify the full pathname of the library, or use the `-LLIBDIR'
>> > flag during linking and do at least one of the following:
>> >    - add LIBDIR to the `LIBPATH' environment variable
>> >      during execution
>> >    - use the
>> >
>> > `-Wl,-blibpath:LIBDIR:/opt/freeware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.4:/opt/freeware/lib/gcc/powerpc-ibm-aix5.3.0.0/4.2.4/../../..:/usr/lib:/lib
>> > ' linker flag
>> > See any operating system documentation about shared libraries for
>> > more information, such as the ld(1) and ld.so(8) manual pages.
>> > ----------------------------------------------------------------------
>> > chmod 755 /usr/local/apache2/modules/mod_wsgi.so
>> > Please let me know if I should provide some additional information.
>> > Regards,
>> > Anurag
>>
>>
>>
>> --
>> Born in Roswell... married an alien...
>>
>> ---------------------------------------------------------------------
>> The official User-To-User support forum of the Apache HTTP Server Project.
>> See <URL:http://httpd.apache.org/userslist.html> for more info.
>> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>>   "   from the digest: users-digest-unsubscribe@httpd.apache.org
>> For additional commands, e-mail: users-help@httpd.apache.org
>>
>
>



-- 
Born in Roswell... married an alien...

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message