---- Rainer Jung <rainer.j...@kippdata.de> wrote: > On 22.06.2012 06:10, Joe Lewis wrote: > > On 6/21/12 10:02 PM, oh...@cox.net wrote: > >> ---- Joe Lewis<j...@joe-lewis.com> wrote: > >>> On 6/21/12 9:39 PM, oh...@cox.net wrote: > >>>> ---- oh...@cox.net wrote: > >>>>> ---- oh...@cox.net wrote: > >>>>>> ---- Joe Lewis<j...@joe-lewis.com> wrote: > >>>>>>> On 6/21/12 7:32 PM, oh...@cox.net wrote: > >>>>>>>> ---- oh...@cox.net wrote: > >>>>>>>>> ---- Joe Lewis<j...@joe-lewis.com> wrote: > >>>>>>>>>> On 6/21/12 6:46 PM, oh...@cox.net wrote: > >>>>>>>>>>> ---- Joe Lewis<j...@joe-lewis.com> wrote: > >>>>>>>>>>>> On 6/21/12 5:49 PM, oh...@cox.net wrote: > >>>>>>>>>>>>> ---- oh...@cox.net wrote: > >>>>>>>>>>>>>> ---- Sorin Manolache<sor...@gmail.com> wrote: > >>>>>>>>>>>>>>> And I forgot to say: run gdb in some sort of environment > >>>>>>>>>>>>>>> where you see > >>>>>>>>>>>>>>> your current source code line and a couple of surrounding > >>>>>>>>>>>>>>> lines. You > >>>>>>>>>>>>>>> could achieve this with the "list" command, but I prefer > >>>>>>>>>>>>>>> running gdb in > >>>>>>>>>>>>>>> emacs and let emacs do the nice listing of source code in > >>>>>>>>>>>>>>> a different panel. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> S > >>>>>>>>>>>>>> Here's the function from my source. It's the original > >>>>>>>>>>>>>> from mod_headers.c, plus my printf: > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> static int header_post_config(apr_pool_t *pconf, > >>>>>>>>>>>>>> apr_pool_t *plog, > >>>>>>>>>>>>>> apr_pool_t *ptemp, > >>>>>>>>>>>>>> server_rec *s) > >>>>>>>>>>>>>> { > >>>>>>>>>>>>>> printf("In header_post_config\n"); > >>>>>>>>>>>>>> header_ssl_lookup = > >>>>>>>>>>>>>> APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); > >>>>>>>>>>>>>> return OK; > >>>>>>>>>>>>>> } > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Jim > >>>>>>>>>>>>> Hi, > >>>>>>>>>>>>> > >>>>>>>>>>>>> I was able to get the segfault to go away. Here's what I > >>>>>>>>>>>>> had to do: > >>>>>>>>>>>>> > >>>>>>>>>>>>> - Created /etc/ld.so.conf.d/my.conf, and added the > >>>>>>>>>>>>> directory where my libobaccess.so was > >>>>>>>>>>>>> - Run 'ldconfig' to activate. > >>>>>>>>>>>>> - In the apxs command, DON'T include the -L and -l arguments > >>>>>>>>>>>>> > >>>>>>>>>>>>> After that, Apache appears to start ok, without segfault :)!! > >>>>>>>>>>>>> > >>>>>>>>>>>>> Thanks for all of the great help, esp. the suggestion about > >>>>>>>>>>>>> checking "ldconfig -p". I still don't understand why, but > >>>>>>>>>>>>> I'm just glad that I can get past this piece so now I can > >>>>>>>>>>>>> debug my module :)... > >>>>>>>>>>>>> > >>>>>>>>>>>>> Later, > >>>>>>>>>>>>> Jim > >>>>>>>>>>>> I'm just glad this list is as good as it is! > >>>>>>>>>>>> > >>>>>>>>>>>> FYI, the ldconfig is the dynamic linker control, and those > >>>>>>>>>>>> /etc/ld.so.conf.d files provide additional search > >>>>>>>>>>>> directories for the > >>>>>>>>>>>> linker to check in when loading a library. > >>>>>>>>>>>> > >>>>>>>>>>>> Joe > >>>>>>>>>>>> -- > >>>>>>>>>>>> http://www.silverhawk.net/ > >>>>>>>>>>> Hi, > >>>>>>>>>>> > >>>>>>>>>>> Sorry to report, but my earlier report was a "false positive" > >>>>>>>>>>> :)... > >>>>>>>>>>> > >>>>>>>>>>> I forgot that the mod_headers.c that I was doing the earlier > >>>>>>>>>>> testing with had all references to the libobaccess.so removed > >>>>>>>>>>> :(!! > >>>>>>>>>>> > >>>>>>>>>>> So, I'm still stuck with basically the same problem, now, > >>>>>>>>>>> working with my "full" code, with the calls in it: > >>>>>>>>>>> > >>>>>>>>>>> - If I compile with -L and -l, Apache segfaults when it starts > >>>>>>>>>>> > >>>>>>>>>>> - If I compile without -L and -l, then I get "undefined > >>>>>>>>>>> symbol" errors when I try to start Apache, e.g.: > >>>>>>>>>>> > >>>>>>>>>>> [root@apachemodule build-mod_headers]# > >>>>>>>>>>> /apps/httpd2222/bin/apachectl -k start -X > >>>>>>>>>>> httpd: Syntax error on line 84 of > >>>>>>>>>>> /apps/httpd2222/conf/httpd.conf: Cannot load > >>>>>>>>>>> /apps/httpd2222/modules/mod_headers.so into server: > >>>>>>>>>>> /apps/httpd2222/modules/mod_headers.so: undefined symbol: > >>>>>>>>>>> ObResource_isProtected > >>>>>>>>>>> > >>>>>>>>>>> That "ObResource_isProtected" should be a symbol in > >>>>>>>>>>> libobaccess.so, and in fact, if I do "nm --dynamic", I get: > >>>>>>>>>>> > >>>>>>>>>>> [root@apachemodule build-mod_headers]# nm --dynamic > >>>>>>>>>>> /apps/netpoint/lib64/libobaccess.so | grep > >>>>>>>>>>> "ObResource_isProtected" > >>>>>>>>>>> 00000000000a6d80 T ObResource_isProtected > >>>>>>>>>>> [root@apachemodule build-mod_headers]# > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> I'm *assuming* that the reason for the "undefined symbol" > >>>>>>>>>>> error is that libobaccess.so is actually not being loaded, > >>>>>>>>>>> but then when I try to load libobaccess.so, either via -L and > >>>>>>>>>>> -l in the apxs, or using LoadFile in httpd.conf, I get the > >>>>>>>>>>> segfault (same gdb info, BTW). > >>>>>>>>>>> > >>>>>>>>>>> Catch-22? > >>>>>>>>>>> > >>>>>>>>>>> Sorry for the false alarm :(!! > >>>>>>>>>>> > >>>>>>>>>>> Jim > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> Not a catch-22. The -L and -l specify linker options when > >>>>>>>>>> assembling > >>>>>>>>>> the code. The ldconfig is a run-time thing. If you are > >>>>>>>>>> getting the > >>>>>>>>>> stderr messages, you are making it all the way into your > >>>>>>>>>> library. I'd > >>>>>>>>>> suggest commenting out the following line and see if you get > >>>>>>>>>> farther : > >>>>>>>>>> > >>>>>>>>>> header_ssl_lookup = APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); > >>>>>>>>>> > >>>>>>>>>> That should tell you if the problem is the ssl_var_lookup. > >>>>>>>>>> > >>>>>>>>>> Joe > >>>>>>>>>> -- > >>>>>>>>>> http://www.silverhawk.net/ > >>>>>>>>> Hi, > >>>>>>>>> > >>>>>>>>> Thanks for the suggestion. I just tried what you suggested, > >>>>>>>>> and got a segfault when I started Apache with the modified module. > >>>>>>>>> > >>>>>>>>> Jim > >>>>>>>>> > >>>>>>>>> > >>>>>>>> Hi, > >>>>>>>> > >>>>>>>> As a reminder, here's the gdb with the library loaded: > >>>>>>>> > >>>>>>>> > >>>>>>>> (gdb) b header_post_config > >>>>>>>> Function "header_post_config" not defined. > >>>>>>>> Make breakpoint pending on future shared library load? (y or [n]) y > >>>>>>>> Breakpoint 1 (header_post_config) pending. > >>>>>>>> (gdb) run -d /apps/httpd2222/ -f /apps/httpd2222/conf/httpd.conf > >>>>>>>> Starting program: /apps/httpd2222/bin/httpd -d /apps/httpd2222/ > >>>>>>>> -f /apps/httpd2222/conf/httpd.conf > >>>>>>>> [Thread debugging using libthread_db enabled] > >>>>>>>> [New Thread 182897610272 (LWP 11317)] > >>>>>>>> Breakpoint 2 at 0x2a9751ea90: file mod_headers.c, line 1121. > >>>>>>>> Pending breakpoint "header_post_config" resolved > >>>>>>>> mod_headers-jl V0.09 - start calling OAM API > >>>>>>>> In register_hooks > >>>>>>>> In create_headers_dir_config > >>>>>>>> In create_headers_dir_config > >>>>>>>> In header_cmd > >>>>>>>> In header_inout_cmd > >>>>>>>> In parse_format_tag > >>>>>>>> In parse_misc_string > >>>>>>>> In create_headers_dir_config > >>>>>>>> In header_cmd > >>>>>>>> In header_inout_cmd > >>>>>>>> In parse_format_tag > >>>>>>>> In parse_misc_string > >>>>>>>> [Switching to Thread 182897610272 (LWP 11317)] > >>>>>>>> > >>>>>>>> Breakpoint 2, header_post_config (pconf=0x573138, plog=0x5a52c8, > >>>>>>>> ptemp=0x5a72d8, s=0x59d3a8) at mod_headers.c:1121 > >>>>>>>> 1121 printf("In header_post_config\n"); > >>>>>>>> (gdb) n > >>>>>>>> 1120 { > >>>>>>>> (gdb) n > >>>>>>>> 1121 printf("In header_post_config\n"); > >>>>>>>> (gdb) n > >>>>>>>> In header_post_config > >>>>>>>> 1122 header_ssl_lookup = > >>>>>>>> APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); > >>>>>>>> (gdb) n > >>>>>>>> 1124 } > >>>>>>>> (gdb) n > >>>>>>>> 0x00000000004360c7 in ap_run_post_config (pconf=0x573138, > >>>>>>>> plog=0x5a52c8, ptemp=0x5a72d8, s=0x59d3a8) at config.c:91 > >>>>>>>> 91 AP_IMPLEMENT_HOOK_RUN_ALL(int, post_config, > >>>>>>>> (gdb) n > >>>>>>>> > >>>>>>>> Program received signal SIGSEGV, Segmentation fault. > >>>>>>>> 0x0000003518d6c1e1 in BN_num_bits () from /lib64/libcrypto.so.4 > >>>>>>>> > >>>>>>>> > >>>>>>>> So, it's actually blowing up in "BN_num_bits()" in > >>>>>>>> /lib64/libcrypto.so.4? > >>>>>>>> > >>>>>>>> Jim > >>>>>>> When you see the : > >>>>>>> > >>>>>>> Program received signal SIGSEGV, Segmentation fault. > >>>>>>> 0x0000003518d6c1e1 in BN_num_bits () from /lib64/libcrypto.so.4 > >>>>>>> > >>>>>>> > >>>>>>> in gdb, type "bt" and hit enter. It should show the back trace > >>>>>>> and how > >>>>>>> you got to the BN_num_bits() function. > >>>>>>> > >>>>>>> Joe > >>>>>>> -- > >>>>>>> http://www.silverhawk.net/ > >>>>>> Hi, > >>>>>> > >>>>>> Here's the bt full: > >>>>>> > >>>>>> > >>>>>> In header_inout_cmd > >>>>>> In parse_format_tag > >>>>>> In parse_misc_string > >>>>>> [Switching to Thread 182897610272 (LWP 6676)] > >>>>>> > >>>>>> Breakpoint 2, header_post_config (pconf=0x573138, plog=0x5a52c8, > >>>>>> ptemp=0x5a72d8, s=0x59d3a8) at mod_headers.c:1121 > >>>>>> 1121 printf("In header_post_config\n"); > >>>>>> (gdb) n > >>>>>> 1120 { > >>>>>> (gdb) n > >>>>>> 1121 printf("In header_post_config\n"); > >>>>>> (gdb) n > >>>>>> In header_post_config > >>>>>> 1122 header_ssl_lookup = > >>>>>> APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); > >>>>>> (gdb) n > >>>>>> 1124 } > >>>>>> (gdb) n > >>>>>> 0x00000000004360c7 in ap_run_post_config (pconf=0x573138, > >>>>>> plog=0x5a52c8, ptemp=0x5a72d8, s=0x59d3a8) at config.c:91 > >>>>>> 91 AP_IMPLEMENT_HOOK_RUN_ALL(int, post_config, > >>>>>> (gdb) n > >>>>>> > >>>>>> Program received signal SIGSEGV, Segmentation fault. > >>>>>> 0x0000003518d6c1e1 in BN_num_bits () from /lib64/libcrypto.so.4 > >>>>>> (gdb) bt full > >>>>>> #0 0x0000003518d6c1e1 in BN_num_bits () from /lib64/libcrypto.so.4 > >>>>>> No symbol table info available. > >>>>>> #1 0x0000003518da8f4e in X509_ATTRIBUTE_create () from > >>>>>> /lib64/libcrypto.so.4 > >>>>>> No symbol table info available. > >>>>>> #2 0x0000003518dadea2 in asn1_ex_i2c () from /lib64/libcrypto.so.4 > >>>>>> No symbol table info available. > >>>>>> #3 0x0000003518dadf79 in asn1_ex_i2c () from /lib64/libcrypto.so.4 > >>>>>> No symbol table info available. > >>>>>> #4 0x0000003518dae0e1 in ASN1_item_ex_i2d () from > >>>>>> /lib64/libcrypto.so.4 > >>>>>> No symbol table info available. > >>>>>> #5 0x0000003518dae5f2 in ASN1_template_i2d () from > >>>>>> /lib64/libcrypto.so.4 > >>>>>> No symbol table info available. > >>>>>> #6 0x0000003518dae28e in ASN1_item_ex_i2d () from > >>>>>> /lib64/libcrypto.so.4 > >>>>>> No symbol table info available. > >>>>>> #7 0x0000003518dae3c6 in ASN1_item_i2d () from /lib64/libcrypto.so.4 > >>>>>> No symbol table info available. > >>>>>> #8 0x0000002a987d9d3a in ssl_pphrase_Handle (s=0x59d3a8, > >>>>>> p=0x5a72d8) at ssl_engine_pphrase.c:505 > >>>>>> mc = (SSLModConfigRec *) 0x571738 > >>>>>> sc = (SSLSrvConfigRec *) 0x668c38 > >>>>>> pServ = (server_rec *) 0x65fa48 > >>>>>> cpVHostID = 0x60add0 "www.example.com:443" > >>>>>> szPath = > >>>>>> "/apps/httpd2222/conf/certs/apache1.whatever.com.key\000\177\000\000\000Ü׿\177\000\000\000à׿\177", > >>>>>> '\0'<rep eats 15 > >>>>>> times>, > >>>>>> "\001\000\000\000°å¿\177\000\000\000;\000\000\000+\000\000\000\020Û¿\177", > >>>>>> '\0'<repeats 35 times>, "à\224k", > >>>>>> ' ---Type<return> > >>>>>> to continue, or q<return> to quit--- > >>>>>> \0'<repeats 13 times>, > >>>>>> "øé¿\177\000\000\000\020\000\000\000;\000\000\000\016\000\000\000\001\000\001\000\001", > >>>>>> '\0'<repeats 15 times>, "n\000\000\000\000\004\000\000°å¿\177", > >>>>>> '\0'<repeats 11 times>, "\020Û¿\177\000\000\000+\000\000\000;", > >>>>>> '\0'<repeats 35 times>... > >>>>>> pPrivateKey = (EVP_PKEY *) 0x6ba670 > >>>>>> asn1 = Variable "asn1" is not available. > >>>>>> (gdb) > >>>>>> > >>>>>> > >>>>>> Not really sure what to make of that though :(... > >>>>>> > >>>>>> Jim > >>>>> Hi, > >>>>> > >>>>> Ok, something interesting. I noticed that the servername in the > >>>>> gdb output was example.whatever.com, so I changed ServerName in > >>>>> extras/httpd-ssl.conf to "apache1.whatever.com". Apache still > >>>>> segfaulted after that. > >>>>> > >>>>> I noticed that igdb was showing my router IP address for > >>>>> "mod_unique_id" (whatever that is), so I thought it was because I > >>>>> didn't have the hostname in /etc/hosts. So, I added > >>>>> "apache1.whatever.com" to /etc/hosts, and also turned Apache > >>>>> LogLevel to debug, and now I get a different error: > >>>>> > >>>>> [root@apachemodule dev]# /apps/httpd2222/bin/apachectl -k start -X > >>>>> mod_headers-jl V0.09 - start calling OAM API > >>>>> In register_hooks > >>>>> In create_headers_dir_config > >>>>> In create_headers_dir_config > >>>>> In header_cmd > >>>>> In header_inout_cmd > >>>>> In parse_format_tag > >>>>> In parse_misc_string > >>>>> In create_headers_dir_config > >>>>> In header_cmd > >>>>> In header_inout_cmd > >>>>> In parse_format_tag > >>>>> In parse_misc_string > >>>>> In header_post_config > >>>>> *** glibc detected *** corrupted double-linked list: > >>>>> 0x00000000006b9710 *** > >>>>> /apps/httpd2222/bin/apachectl: line 78: 7599 > >>>>> Aborted $HTTPD $ARGV > >>>>> [root@apachemodule dev]# > >>>>> > >>>>> > >>>>> Here's the Apache error_log: > >>>>> > >>>>> [Thu Jun 21 23:24:11 2012] [info] mod_unique_id: using ip addr > >>>>> 72.215.225.9 > >>>>> [Thu Jun 21 23:24:12 2012] [info] Init: Seeding PRNG with 144 bytes > >>>>> of entropy > >>>>> [Thu Jun 21 23:24:12 2012] [info] Loading certificate& private > >>>>> key of SSL-aware server > >>>>> [Thu Jun 21 23:29:51 2012] [info] mod_unique_id: using ip addr > >>>>> 72.215.225.9 > >>>>> [Thu Jun 21 23:29:52 2012] [info] Init: Seeding PRNG with 144 bytes > >>>>> of entropy > >>>>> [Thu Jun 21 23:29:52 2012] [info] Loading certificate& private > >>>>> key of SSL-aware server > >>>>> [Thu Jun 21 23:29:56 2012] [info] mod_unique_id: using ip addr > >>>>> 72.215.225.9 > >>>>> [Thu Jun 21 23:29:57 2012] [info] Init: Seeding PRNG with 144 bytes > >>>>> of entropy > >>>>> [Thu Jun 21 23:29:57 2012] [info] Loading certificate& private > >>>>> key of SSL-aware server > >>>>> [root@apachemodule dev]# > >>>>> > >>>>> > >>>>> and here's the gdb backtrace: > >>>>> > >>>>> (gdb) b header_post_config > >>>>> Function "header_post_config" not defined. > >>>>> Make breakpoint pending on future shared library load? (y or [n]) y > >>>>> Breakpoint 1 (header_post_config) pending. > >>>>> (gdb) run -d /apps/httpd2222/ -f /apps/httpd2222/conf/httpd.conf > >>>>> Starting program: /apps/httpd2222/bin/httpd -d /apps/httpd2222/ -f > >>>>> /apps/httpd2222/conf/httpd.conf > >>>>> [Thread debugging using libthread_db enabled] > >>>>> [New Thread 182897610272 (LWP 7644)] > >>>>> Breakpoint 2 at 0x2a9751ea90: file mod_headers.c, line 1121. > >>>>> Pending breakpoint "header_post_config" resolved > >>>>> mod_headers-jl V0.09 - start calling OAM API > >>>>> In register_hooks > >>>>> In create_headers_dir_config > >>>>> In create_headers_dir_config > >>>>> In header_cmd > >>>>> In header_inout_cmd > >>>>> In parse_format_tag > >>>>> In parse_misc_string > >>>>> In create_headers_dir_config > >>>>> In header_cmd > >>>>> In header_inout_cmd > >>>>> In parse_format_tag > >>>>> In parse_misc_string > >>>>> [Switching to Thread 182897610272 (LWP 7644)] > >>>>> > >>>>> Breakpoint 2, header_post_config (pconf=0x573138, plog=0x5a52c8, > >>>>> ptemp=0x5a72d8, s=0x59d3a8) at mod_headers.c:1121 > >>>>> 1121 printf("In header_post_config\n"); > >>>>> (gdb) n > >>>>> 1120 { > >>>>> (gdb) n > >>>>> 1121 printf("In header_post_config\n"); > >>>>> (gdb) n > >>>>> In header_post_config > >>>>> 1122 header_ssl_lookup = > >>>>> APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); > >>>>> (gdb) n > >>>>> 1124 } > >>>>> (gdb) n > >>>>> 0x00000000004360c7 in ap_run_post_config (pconf=0x573138, > >>>>> plog=0x5a52c8, ptemp=0x5a72d8, s=0x59d3a8) at config.c:91 > >>>>> 91 AP_IMPLEMENT_HOOK_RUN_ALL(int, post_config, > >>>>> (gdb) n > >>>>> *** glibc detected *** corrupted double-linked list: > >>>>> 0x00000000006b9710 *** > >>>>> > >>>>> Program received signal SIGABRT, Aborted. > >>>>> 0x000000351432e26d in raise () from /lib64/tls/libc.so.6 > >>>>> (gdb) bt full > >>>>> #0 0x000000351432e26d in raise () from /lib64/tls/libc.so.6 > >>>>> No symbol table info available. > >>>>> #1 0x000000351432fa6e in abort () from /lib64/tls/libc.so.6 > >>>>> No symbol table info available. > >>>>> #2 0x0000003514363641 in __libc_message () from /lib64/tls/libc.so.6 > >>>>> No symbol table info available. > >>>>> #3 0x0000003514369512 in _int_free () from /lib64/tls/libc.so.6 > >>>>> No symbol table info available. > >>>>> #4 0x0000003514369846 in free () from /lib64/tls/libc.so.6 > >>>>> No symbol table info available. > >>>>> #5 0x0000002a9790b6ba in R_free () from > >>>>> /apps/netpoint/lib64/libobaccess.so > >>>>> No symbol table info available. > >>>>> #6 0x0000002a9792bc41 in X509_CINF_free () from > >>>>> /apps/netpoint/lib64/libobaccess.so > >>>>> No symbol table info available. > >>>>> #7 0x0000002a9790ed98 in X509_free () from > >>>>> /apps/netpoint/lib64/libobaccess.so > >>>>> No symbol table info available. > >>>>> #8 0x0000002a987d97b6 in ssl_pphrase_Handle (s=0x59d3a8, > >>>>> p=0x5a72d8) at ssl_engine_pphrase.c:243 > >>>>> mc = (SSLModConfigRec *) 0x571738 > >>>>> sc = (SSLSrvConfigRec *) 0x668c38 > >>>>> pServ = (server_rec *) 0x65fa48 > >>>>> cpVHostID = 0x60add0 "apache1.whatever.com:443" > >>>>> szPath = > >>>>> "/apps/httpd2222/conf/certs/apache1.whatever.com.crt\000\177\000\000\000Ü׿\177\000\000\000à׿\177", > >>>>> '\0'<repeats 15 times>, > >>>>> "\001\000\000\000°å¿\177\000\000\000;\000\000\000+\000\000\000\020Û¿\177", > >>>>> '\0'<repeats 35 times>, "à\224k", '\0'<repeats 13 times>, > >>>>> "øé¿\177\000\000\000\020\000\000\000;\000\000\000\016\000\000\000\001\000\001\000\001", > >>>>> '\0'<repeats 15 times>, "n\000\000\000\000\004\000\000°å¿\177", > >>>>> '\0'<repeats 11 times>, "\020Û¿\177\000\000\000+\000\000\000;", > >>>>> '\0'<repeats 35 times>... > >>>>> pPrivateKey = Variable "pPrivateKey" is not available. > >>>>> (gdb) > >>>>> > >>>>> > >>>>> Jim > >>>>> > >>>> I guess the thing that I'm puzzled about is why it goes from > >>>> ssl_pphrase_Handle (which is part of Apache code?) to X509_free () > >>>> in the libobaccess.so? Apache shouldn't even be aware of the > >>>> libobaccess stuff yet (since I think that Apache is still trying to > >>>> initialize SSL processing)? > >>>> > >>>> Jim > >>> It shouldn't unless you've declared a shutdown hook or a clean up hook > >>> of sorts. The looks of that stack trace look strikingly like an > >>> exception handler firing off. What are all of the hooks you have > >>> running? > >>> > >>> Joe > >>> -- > >>> http://www.silverhawk.net/ > >>> > >> > >> Hi, > >> > >> I'm basically using the original mod_headers.c as a starter code, and > >> stuck some stuff in there. Haven't done anything with the hooks etc. > >> yet, so whatever was there is there: > >> > >> static void register_hooks(apr_pool_t *p) > >> { > >> printf("mod_headers-jl V0.09 - start calling OAM API\n"); > >> printf("In register_hooks\n"); > >> ap_register_output_filter("FIXUP_HEADERS_OUT", > >> ap_headers_output_filter, > >> NULL, AP_FTYPE_CONTENT_SET); > >> ap_register_output_filter("FIXUP_HEADERS_ERR", > >> ap_headers_error_filter, > >> NULL, AP_FTYPE_CONTENT_SET); > >> ap_hook_pre_config(header_pre_config,NULL,NULL,APR_HOOK_MIDDLE); > >> ap_hook_post_config(header_post_config,NULL,NULL,APR_HOOK_MIDDLE); > >> ap_hook_insert_filter(ap_headers_insert_output_filter, NULL, > >> NULL, APR_HOOK_LAST); > >> ap_hook_insert_error_filter(ap_headers_insert_error_filter, > >> NULL, NULL, APR_HOOK_LAST); > >> ap_hook_fixups(ap_headers_fixup, NULL, NULL, APR_HOOK_LAST); > >> ap_hook_post_read_request(ap_headers_early, NULL, NULL, > >> APR_HOOK_FIRST); > >> } > >> > >> module AP_MODULE_DECLARE_DATA headers_module = > >> { > >> STANDARD20_MODULE_STUFF, > >> create_headers_dir_config, /* dir config creater */ > >> merge_headers_config, /* dir merger --- default is to > >> override */ > >> NULL, /* server config */ > >> NULL, /* merge server configs */ > >> headers_cmds, /* command apr_table_t */ > >> register_hooks /* register hooks */ > >> }; > >> > >> I guess that there is a: > >> > >> ap_hook_post_config(header_post_config,NULL,NULL,APR_HOOK_MIDDLE); > >> > >> in that register_hooks(), but it was there from the original code. > >> > >> BTW, I was checking, and it looks like there's an X509_free() function > >> in both openssl and in libobaccess.so (used 'nm --dynamic<file>), so > >> I'm wondering if things are confused, and maybe Apache code expects to > >> call the openssl X509_free, but somehow ends up calling the > >> X509_free() in libobaccess.so? > >> > >> What would cause something like that? If two .so files have the same > >> function, how to avoid conflicts? > >> > >> Jim > > > > Jim, you may have hit that on the head. I'm not sure of the load order > > and looking up symbols, but it could very well change things. Try > > re-ordering or adding a LoadFile before the SSL module and see if that > > changes things. > > Look up order usually is load order. So if mod_ssl loads first and loads > its dependency libcrypto, the symbol will always be found there even if > the implementation in libobaccess.so is needed - and vice versa. > > On Solaris there is a -Bdirect linker flag which changes runtime search > order so that each module would find a needed symbol first inits direct > dependencies. Unfortunately AFAIK notihing similar exists for Linux. > > You would need to find ssl libs and libobaccess with compatible symbols. > Best would be a libobaccess which is dynamically linked against a > compatible version of libcrypto instead of - as it seems - being > statically linked against it. > > Regards, > > Rainer >
Hi Rainer, Here's exactly what I found: [root@apachemodule ~]# ldd /apps/netpoint/lib64/libobaccess.so libnsl.so.1 => /lib64/libnsl.so.1 (0x0000002a95ab8000) libdl.so.2 => /lib64/libdl.so.2 (0x0000002a95bd0000) libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000002a95cd3000) libstdc++.so.6 => /lib64/libstdc++.so.6 (0x0000002a95de9000) libm.so.6 => /lib64/tls/libm.so.6 (0x0000002a95fd9000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000002a9615f000) libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a9626d000) /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000) [root@apachemodule ~]# [root@apachemodule ~]# nm --dynamic /apps/netpoint/lib64/libobaccess.so | grep "X509_free" 00000000002d8d60 T X509_free [root@apachemodule ~]# ldd /lib64/libssl.so.0.9.7a libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000003518700000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000003519000000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003518500000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000003518900000) libcrypto.so.4 => /lib64/libcrypto.so.4 (0x0000003518d00000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003514800000) libz.so.1 => /usr/lib64/libz.so.1 (0x0000003514c00000) libc.so.6 => /lib64/tls/libc.so.6 (0x0000003514300000) libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003518300000) /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000) [root@apachemodule ~]# [root@apachemodule ~]# nm --dynamic /lib64/libssl.so.0.9.7a | grep "X509_free" U X509_free [root@apachemodule ~]# ldd /lib64/libcrypto.so.0.9.7a libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000003518700000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000003519000000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003518500000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000003518900000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003514800000) libz.so.1 => /usr/lib64/libz.so.1 (0x0000003514c00000) libc.so.6 => /lib64/tls/libc.so.6 (0x0000003514300000) libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003518300000) /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000) [root@apachemodule ~]# [root@apachemodule ~]# nm --dynamic /lib64/libcrypto.so.0.9.7a | grep "X509_free" 0000003518da9860 T X509_free So: - liboaccess.so doesn't REFERENCE libcrypto, but it HAS an X509_free() function in it. - libssl.so.REFERENCES libcrypto, AND it HAS an X509_free function in it. - libcrypto also has an X509_free function in it. >From your msg above, are you saying that this situation can't be resolved by >trying to change load order? And the only way is what you said in your last paragraph (find another libobccess.so)? Jim