You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Gordon Lack <gm...@ggr.co.uk> on 2005/08/18 20:17:48 UTC

make test fails (Solaris and Linux, same problem)

1. Problem Description:

   The server core dumps when running make test.

   This happens on both Solaris and Linux systems (with the equivalent
perl, Apache and mod_perl configurations).

   Having got the core dump info I added some printf statements to the
start of ap_pcw_walk_files_config in modperl_pcw.c to print the values
of dconf, dconf->sec_file and dconf->sec_file->elts.  

   This showed:

GML dconf: ab0e0
GML dconf->sec_file: 2

(and then a SIGSEGV trying to use this "2" as a point to get to
dconf->sec_file->elts).  

This 2 looks decidely unpointer-like.  Could Apache and mod_perl differ
over what they think is in a core_dir_config struct and hence
dconf->sec_file refer to a different offset?


2. Used Components and their Configuration:

*** mod_perl version 2.000001

*** using /local/GML/Apache2/mod_perl-2.0.1/lib/Apache2/BuildConfig.pm

*** Makefile.PL options:
  MP_APR_LIB     => aprext
  MP_AP_PREFIX   => /local/GML/install/apache2
  MP_COMPAT_1X   => 0
  MP_DEBUG       => 1
  MP_GENERATE_XS => 1
  MP_LIBNAME     => mod_perl
  MP_TRACE       => 1
  MP_USE_DSO     => 1


*** /local/GML/install/apache2/bin/httpd -V
Server version: Apache/2.0.54
Server built:   Aug 17 2005 18:25:24
Server's Module Magic Number: 20020903:9
Architecture:   32-bit
Server compiled with....
 -D BIG_SECURITY_HOLE
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FCNTL_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D HTTPD_ROOT="/local/GML/install/apache2"
 -D SUEXEC_BIN="/local/GML/install/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"


*** (apr|apu)-config linking info

 -L/local/GML/install/apache2/lib -laprutil-0 -lgdbm -ldb-4.2 -lexpat
 -L/local/GML/install/apache2/lib -lapr-0 -lrt -lm -lsocket -lnsl -lresolv  -lpthread -ldl



*** /GWD/bioinfo/tools/bin/perl -V
Summary of my perl5 (revision 5 version 8 subversion 5) configuration:
  Platform:
    osname=solaris, osvers=2.6, archname=sun4-solaris-thread-multi
    uname='sunos phu638.um.us.sbphrd.com 5.6 generic_105181-03 sun4u sparc sunw,ultra-4 '
    config_args='-dE'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='/opt/SUNWspro/bin/cc', ccflags ='-D_REENTRANT -I/GWD/bioinfo/tools/include -I/GWD/bioinfo/common/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O',
    cppflags='-D_REENTRANT -I/GWD/bioinfo/tools/include -I/GWD/bioinfo/common/include'
    ccversion='Forte Developer 7 C 5.4 2002/03/09', gccversion='', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='/opt/SUNWspro/bin/cc', ldflags ='-L/GWD/bioinfo/tools/lib -R/GWD/bioinfo/tools/lib -L/usr/ccs/lib '
    libpth=/GWD/bioinfo/tools/lib /lib /usr/lib /usr/ccs/lib
    libs=-lsocket -lnsl -lgdbm -ldb -ldl -lm -lpthread -lc
    perllibs=-lsocket -lnsl -ldl -lm -lpthread -lc
    libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-KPIC', lddlflags='-G -L/GWD/bioinfo/tools/lib -R/GWD/bioinfo/tools/lib -L/usr/ccs/lib'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
  Built under solaris
  Compiled at Jul 28 2004 07:08:42
  %ENV:
    PERL_LWP_USE_HTTP_10="1"
  @INC:
    /GWD/bioinfo/tools/lib/perl5/5.8.5
    /GWD/bioinfo/common/lib/perl5/5.8.5
    /GWD/bioinfo/tools/lib/perl5/site_perl/5.8.5
    /GWD/bioinfo/common/lib/perl5/site_perl/5.8.5
    /GWD/bioinfo/common/lib/perl5/site_perl
    .

*** Packages of interest status:

Apache2            : -
Apache2::Request   : -
CGI                : 3.05
ExtUtils::MakeMaker: 6.17
LWP                : 5.800
mod_perl           : -
mod_perl2          : -


3. This is the core dump trace: (if you get a core dump):

   Solaris version:

t@1 (l@1) terminated by signal BUS (invalid address alignment)
Current function is ap_pcw_walk_files_config
   67   ap_conf_vector_t **dirs = (ap_conf_vector_t **)dconf->sec_file->elts;

=>[1] ap_pcw_walk_files_config(pconf = 0x90818, s = 0xaa9f8,
         dconf = 0xab0e0, modp = 0xfdf59048, dir_cb = 0xfde18dd8 =
            &`mod_perl.so`modperl_mgv.c`modperl_hash_handlers_dir(),
         data = (nil)),
      line 67 in "modperl_pcw.c"
  [2] ap_pcw_walk_config(pconf = 0x90818, s = 0xaa9f8, modp = 0xfdf59048,
         data = (nil), dir_cb = 0xfde18dd8 = 
            &`mod_perl.so`modperl_mgv.c`modperl_hash_handlers_dir(),
         srv_cb = 0xfde18f60 =
            &`mod_perl.so`modperl_mgv.c`modperl_hash_handlers_srv()),
      line 121 in "modperl_pcw.c"
  [3] modperl_mgv_hash_handlers(p = 0x90818, s = 0xaa9f8),
      line 522 in "modperl_mgv.c"
  [4] modperl_hook_post_config_last(pconf = 0x90818, plog = 0xba8c0,
         ptemp = 0xbc8c8, s = 0xaa9f8),
      line 701 in "mod_perl.c"
  [5] ap_run_post_config(0x90818, 0xba8c0, 0xbc8c8, 0xaa9f8, 0x14930e0, 0xa)
      at 0x3597c
  [6] main(0xffbef61b, 0xffbef5f4, 0xffbef464, 0xaa9f8, 0x90818, 0x8e890)
      at 0x3d214


Linux version:

t@1 (l@1) terminated by signal BUS (invalid address alignment)
Current function is ap_pcw_walk_files_config
   67   ap_conf_vector_t **dirs = (ap_conf_vector_t **)dconf->sec_file->elts;

=>[1] ap_pcw_walk_files_config(pconf = 0x90818, s = 0xaa9f8,
         dconf = 0xab0e0, modp = 0xfdf59048, dir_cb = 0xfde18dd8 =
            &`mod_perl.so`modperl_mgv.c`modperl_hash_handlers_dir(),
         data = (nil)),
      line 67 in "modperl_pcw.c"
  [2] ap_pcw_walk_config(pconf = 0x90818, s = 0xaa9f8, modp = 0xfdf59048,
         data = (nil), dir_cb = 0xfde18dd8 = 
            &`mod_perl.so`modperl_mgv.c`modperl_hash_handlers_dir(),
         srv_cb = 0xfde18f60 =
            &`mod_perl.so`modperl_mgv.c`modperl_hash_handlers_srv()),
      line 121 in "modperl_pcw.c"
  [3] modperl_mgv_hash_handlers(p = 0x90818, s = 0xaa9f8),
      line 522 in "modperl_mgv.c"
  [4] modperl_hook_post_config_last(pconf = 0x90818, plog = 0xba8c0,
         ptemp = 0xbc8c8, s = 0xaa9f8),
      line 701 in "mod_perl.c"
  [5] ap_run_post_config(0x90818, 0xba8c0, 0xbc8c8, 0xaa9f8, 0x14930e0, 0xa)
      at 0x3597c
  [6] main(0xffbef61b, 0xffbef5f4, 0xffbef464, 0xaa9f8, 0x90818, 0x8e890)
      at 0x3d214



This report was generated by t/REPORT on Thu Aug 18 18:01:14 2005 GMT.


Re: make test fails (Solaris and Linux, same problem)

Posted by "Philippe M. Chiasson" <go...@ectoplasm.org>.
Gordon Lack wrote:
> 1. Problem Description:
> 
>    The server core dumps when running make test.
> 
>    This happens on both Solaris and Linux systems (with the equivalent
> perl, Apache and mod_perl configurations).
> 
>    Having got the core dump info I added some printf statements to the
> start of ap_pcw_walk_files_config in modperl_pcw.c to print the values
> of dconf, dconf->sec_file and dconf->sec_file->elts.  
> 
>    This showed:
> 
> GML dconf: ab0e0
> GML dconf->sec_file: 2
> 
> (and then a SIGSEGV trying to use this "2" as a point to get to
> dconf->sec_file->elts).  
> 
> This 2 looks decidely unpointer-like.  Could Apache and mod_perl differ
> over what they think is in a core_dir_config struct and hence
> dconf->sec_file refer to a different offset?

This strange kind of segfaults is usually the syptoms of disagreements in
large-file support in httpd/apr/perl.

Detecting these kind of configuration problems has been discussed before, but
it's not quite as easy as it sounds ;-)

You can see one of the original discussions about this here:
  http://marc.theaimsgroup.com/?t=111686169600002&r=1&w=2

And it's evolution into a solution here:
  http://marc.theaimsgroup.com/?l=apache-modperl-dev&w=2&r=1&s=segfaulting+apache+in+ap_pcw_walk_files_&q=t

--------------------------------------------------------------------------------
Philippe M. Chiasson m/gozer\@(apache|cpan|ectoplasm)\.org/ GPG KeyID : 88C3A5A5
http://gozer.ectoplasm.org/     F9BF E0C2 480E 7680 1AE5 3631 CB32 A107 88C3A5A5