---- 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

Reply via email to