On Sun, Nov 21, 2010 at 4:49 PM, Anurag Chourasia <anurag.chourasia@xxxxxxxxx> 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@xxxxxxxxx> wrote: >> >> On Sun, Nov 21, 2010 at 3:22 PM, Anurag Chourasia >> <anurag.chourasia@xxxxxxxxx> 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@xxxxxxxxxxxxxxxx >> " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx >> For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx >> > > -- 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@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx