rmunn at pobox.com
rmunn at pobox.com
Tue Oct 8 12:34:46 EST 2002
I'm using mod_python 3.0.0 BETA 2 with Apache 2.0.42 and encountering a segfault every time I try to use the PythonInclude directive. The segfault occurs even when I try to have Apache do a configuration syntax check (/usr/apache2/bin/apachectl configtest). I've narrowed it down to a single PythonInclude line. This is the <Directory> directive in which the PythonInclude directive appears: <Directory /var/www/publisher> AddHandler python-program .py PythonHandler mod_python.publisher PythonInterpPerDirective On PythonImport globals </Directory> If I comment out the "PythonImport globals" line, everything runs fine. Here's the contents of my /var/www/publisher directory: rmunn at localhost:/var/www/publisher$ ls -l total 8 -rw-r--r-- 1 rmunn users 12 Oct 7 19:22 globals.py -rw-r--r-- 1 rmunn users 133 Oct 8 12:26 tryme.py rmunn at localhost:/var/www/publisher$ cat globals.py foo = 'bar' rmunn at localhost:/var/www/publisher$ cat tryme.py def show(req, name): try: return str(globals.foo) except AttributeError, NameError: return str(dir(globals)) As you can see, what I'm trying to do is have some global variables pre-defined in my mod_python scripts; I plan on using this to accomplish expensive operations (like opening database connections) once per apache process child instead of once per request. Here's the gdb backtrace of my segfault. I'm running httpd -t to only get a configuration syntax check and it's still failing. Any ideas? root at localhost:/usr/apache2/conf# gdb ../bin/httpd GNU gdb 5.2.1 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i686-pc-linux-gnu"... (gdb) run -t Starting program: /usr/apache2/bin/httpd -t [New Thread 1024 (LWP 29765)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1024 (LWP 29765)] __pthread_mutex_lock (mutex=0x10) at mutex.c:99 99 mutex.c: No such file or directory. in mutex.c (gdb) backtrace full #0 __pthread_mutex_lock (mutex=0x10) at mutex.c:99 mutex = (pthread_mutex_t *) 0x10 self = 0x0 #1 0x403d8f43 in PyThread_acquire_lock (lock=0x0, waitflag=1) at Python/thread_pthread.h:359 lock = 0x0 success = 1078103364 status = 0 error = 0 #2 0x403bbb4e in PyEval_AcquireLock () at Python/ceval.c:267 No locals. #3 0x4037c1b3 in directive_PythonImport (cmd=0xbffffc30, mconfig=0x80e0958, module=0x80e0e28 "globals") at mod_python.c:1220 cmd = (cmd_parms *) 0x0 mconfig = (void *) 0x0 module = 0x0 #4 0x08067349 in invoke_cmd (cmd=0x4040d154, parms=0xbffffc30, mconfig=0x80e0958, args=0x80d594f "") at config.c:800 w = 0x80e0e28 "globals" w2 = 0xbffffc30 "" w3 = 0x4040d154 "\231n?@\234Á7@" errmsg = 0x0 #5 0x08067a53 in ap_walk_config_sub (current=0x80d5928, parms=0xbffffc30, section_vector=0x80e05f0) at config.c:1082 dir_config = (void *) 0x4040d154 retval = 0x4040d154 "\231n?@\234Á7@" cmd = (command_rec *) 0x4040d154 current = (ap_directive_t *) 0x80d5928 parms = (cmd_parms *) 0xbffffc30 mod = (module *) 0x4040d2e0 #6 0x08067ad1 in ap_walk_config (current=0x80d5850, parms=0xbffffc30, section_vector=0x80e05f0) at config.c:1121 errmsg = 0x0 current = (ap_directive_t *) 0x80d5928 parms = (cmd_parms *) 0xbffffc30 oldconfig = (ap_conf_vector_t *) 0x80b3488 #7 0x08074beb in dirsection (cmd=0xbffffc30, mconfig=0x80b3598, arg=0x80e0792 "") at core.c:1625 cmd = (cmd_parms *) 0xbffffc30 errmsg = 0x0 endp = 0x80e07e0 "" old_overrides = 150 old_path = 0x0 conf = (core_dir_config *) 0x80e07e0 new_dir_conf = (ap_conf_vector_t *) 0x80e05f0 r = (regex_t *) 0x0 thiscmd = (command_rec *) 0x8088bec err = 0x0 #8 0x08066e6e in invoke_cmd (cmd=0x8088bec, parms=0xbffffc30, mconfig=0x80b3598, args=0x80d5828 "/var/www/publisher>") at config.c:713 w = 0x80d5808 "øW\r\b(X\r\b" w2 = 0xbffffc30 "" w3 = 0x4040d154 "\231n?@\234Á7@" errmsg = 0x0 #9 0x08067a53 in ap_walk_config_sub (current=0x80d5808, parms=0xbffffc30, section_vector=0x80b3488) at config.c:1082 dir_config = (void *) 0x4040d154 retval = 0x4040d154 "\231n?@\234Á7@" cmd = (command_rec *) 0x8088bec current = (ap_directive_t *) 0x80d5808 parms = (cmd_parms *) 0xbffffc30 mod = (module *) 0x808ed60 #10 0x08067ad1 in ap_walk_config (current=0x80b49d0, parms=0xbffffc30, section_vector=0x80b3488) at config.c:1121 errmsg = 0x0 current = (ap_directive_t *) 0x80d5808 parms = (cmd_parms *) 0xbffffc30 oldconfig = (ap_conf_vector_t *) 0x0 #11 0x080684e0 in ap_process_config_tree (s=0x80b2ec8, conftree=0x80b49d0, p=0x8098d10, ptemp=0x80c4dc0) at config.c:1583 s = (server_rec *) 0x4040d154 p = (apr_pool_t *) 0x8098d10 ptemp = (apr_pool_t *) 0x0 errmsg = 0x808defc "" parms = {info = 0x0, override = 95, limited = -1, limited_xmethods = 0x0, xlimited = 0x0, config_file = 0x0, directive = 0x80d5928, pool = 0x8098d10, temp_pool = 0x80c4dc0, server = 0x80b2ec8, path = 0x80e07c8 "/var/www/publisher/", cmd = 0x4040d154, context = 0x80e05f0, err_directive = 0x0} #12 0x0806a811 in main (argc=2, argv=0xbffffd44) at main.c:564 c = 116 't' configtestonly = 1 confname = 0x8086518 "conf/httpd.conf" def_server_root = 0x8086528 "/usr/apache2" temp_error_log = 0x0 process = (process_rec *) 0x8096d88 server_conf = (server_rec *) 0x80b2ec8 pglobal = (apr_pool_t *) 0x8096d08 pconf = (apr_pool_t *) 0x8098d10 plog = (apr_pool_t *) 0x80c2db8 ptemp = (apr_pool_t *) 0x80c4dc0 pcommands = (apr_pool_t *) 0x80c0db0 opt = (apr_getopt_t *) 0x80c0e48 rv = 0 mod = (module **) 0x80b2ec8 optarg = 0x0 signal_server = (apr_OFN_ap_signal_server_t *) 0x4040d154 <python_commands+264> #13 0x40189571 in __libc_start_main (main=0x806a370 <main>, argc=2, ubp_av=0xbffffd44, init=0x805b824 <_init>, fini=0x80812e0 <_fini>, rtld_fini=0x4000aa24 <_dl_fini>, stack_end=0xbffffd3c) at ../sysdeps/generic/libc-start.c:129 ubp_av = (char **) 0xbffffd44 fini = (void (*)()) 0x400154ac <_dl_debug_mask> rtld_fini = (void (*)()) 0x80e0e28 ubp_ev = (char **) 0x0 -- Robin Munn rmunn at pobox.com -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available Url : http://mailman.modpython.org/pipermail/mod_python/attachments/20021008/e6c4c75b/attachment-0003.bin
|