The following reply was made to PR mod_jserv/5420; it has been noted by GNATS.
From: Thierry Delaitre <[EMAIL PROTECTED]> To: Ed Korthof <[EMAIL PROTECTED]> Cc: [EMAIL PROTECTED] Subject: Re: mod_jserv/5420: Segmentation Fault Date: Fri, 10 Dec 1999 18:32:28 +0000 (GMT) On Thu, 9 Dec 1999, Ed Korthof wrote: > This is interesting. It does look like the compiler may be doing > something wrong ... or an intialization function is corrupting some > memory. Here's two things you can try: > > First, compile this program and run it; see what the output is: > > ****** > #include <stdio.h> > #include <stdlib.h> > > typedef struct test_struct { const char *name; } test_struct; > > test_struct test = { __FILE__ }; > > int main() { > fprintf (stderr, "file is: %s\n", test.name); > } > ****** > > This would test to see if the __FILE__ macro is working correctly all by > itself ... if not, that'd explain the problem. I'd guess that it'll work. The little program works ok. > Another thing to test would involve running your httpd w/ gdb, and setting > a break point in the add_named_module command, and taking a look at the > jserv_module structure right after it's loaded. This is easier with extra > debugging information -- add '-g' to your CFLAGS (or EXTRA_CFLAGS) and > recompile Apache... I've shown a transcript of how this might be done: > > ***** > stratus:~/projects/t/httpd> gdb bin/httpd > GNU gdb 4.17 > Copyright 1998 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 "i586-slackware-linux"... > (gdb) set args -X -f /home/ed/projects/t/httpd/conf/httpd.conf > (gdb) b ap_os_dso_load > Breakpoint 1 at 0x808f35b: file os.c, line 117. > (gdb) run > Starting program: /home/ed/projects/t/httpd/bin/httpd -X -f > /home/ed/projects/t/httpd/conf/httpd.conf > mesg: /dev/ttya1: Operation not permitted > > Breakpoint 1, ap_os_dso_load ( > path=0x80dd684 "/home/ed/projects/t/httpd/libexec/mod_jserv.so") > at os.c:117 > 117 return dlopen(path, RTLD_NOW | RTLD_GLOBAL); > (gdb) n > 119 } > (gdb) p jserv_module > $1 = {version = 19990320, minor_version = 6, module_index = -1, > name = 0x400e8337 "mod_jserv.c", dynamic_load_handle = 0x0, next = 0x0, > magic = 1095774515, init = 0x400df2b4 <jserv_init>, create_dir_config = 0, > merge_dir_config = 0, > create_server_config = 0x400dde78 <jserv_server_config_create>, > merge_server_config = 0x400ddf4c <jserv_server_config_merge>, > cmds = 0x400ed42c, handlers = 0x400ed40c, > translate_handler = 0x400df650 <jserv_translate_handler>, > ap_check_user_id = 0, auth_checker = 0, access_checker = 0, > type_checker = 0x400df718 <jserv_type_match>, fixer_upper = 0, logger = 0, > header_parser = 0, child_init = 0x400df37c <jserv_child_init>, > child_exit = 0, post_read_request = 0} > (gdb) > ***** Please find the output below. ************************* Starting program: /rhino_local/apache-internet/bin/httpd -X -f /rhino_local/apache-internet/conf/httpd.conf Breakpoint 1, ap_os_dso_load ( path=0xe9658 "/rhino_local/apache-internet/libexec/mod_jserv.so") at os.c:117 117 return dlopen(path, RTLD_NOW | RTLD_GLOBAL); (gdb) p jserv_module No symbol "jserv_module" in current context. (gdb) n 119 } (gdb) p jserv_module $6 = {version = 19990320, minor_version = 6, module_index = -1, name = 0x5b93f0 <Address 0x5b93f0 out of bounds>, dynamic_load_handle =0x0, next = 0x0, magic = 1095774515, init = 0x5a8cbc, create_dir_config = 0, merge_dir_config = 0, create_server_config = 0x5a6058, merge_server_config = 0x5a61b0, cmds = 0x5cee90, handlers = 0x5cee70, translate_handler = 0x5a94bc, ap_check_user_id = 0, auth_checker = 0, access_checker = 0, type_checker = 0x5a965c, fixer_upper = 0, logger =0, header_parser = 0, child_init = 0x5a8e30, child_exit = 0,post_read_request = 0} (gdb) ************************* > Note that if you have other DSO modules, you should continue until you're > loading the jserv DSO. > > The question is simply what the structure of the jserv_module looks like > -- again, i want to see if the name element has a valid value. If it > doesn't, then there's a problem in your version of gcc -- and you should > move back to a previous version (2.7.2 works). If it does have a good > value, then there's a bug somewhere in our initialization. > > If you could try these tests, I'd appreciate it. Thanks for your time ! Thierry.