After serving up requests normally for some time, we get the following line in our error_log:
[Mon Nov 10 13:44:31 2003] [notice] child pid 24121 exit signal Segmentation fault (11) There aren't any other entries in the error log for the requests. We think that this is happening during the normal termination of the child process (after serving MaxRequestsPerChild requests, or exceeding GTopLimit limits). The segfaults were happening before we added the GTopLimit configuration. Has anybody seen this behavior before? I can send more information if needed. Thanks Useful information: perl -V reports: Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration: Platform: osname=linux, osvers=2.4.20-8smp, archname=i686-linux uname='linux ooghij 2.4.20-8smp #1 smp thu mar 13 17:45:54 est 2003 i686 i686 i386 gnulinux ' config_args='' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm', optimize='-O3', cppflags='-fno-strict-aliasing -I/usr/include/gdbm' ccversion='', gccversion='3.2.2 20030222 (Red Hat Linux 3.2.2-5)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -lgdbm -ldb -ldl -lm -lc -lcrypt -lutil perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil libc=/lib/libc-2.3.2.so, so=so, useshrplib=false, libperl=libperl.a gnulibc_version='2.3.2' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: USE_LARGE_FILES Built under linux Compiled at Jul 31 2003 13:36:56 @INC: /usr/local/lib/perl5/5.8.0/i686-linux /usr/local/lib/perl5/5.8.0 /usr/local/lib/perl5/site_perl/5.8.0/i686-linux /usr/local/lib/perl5/site_perl/5.8.0 /usr/local/lib/perl5/site_perl . The version of mod perl we are running is 1.28, with apache 1.28. We built mod_perl with: perl Makefile.PL \ APACHE_SRC=../apache_1.3.28/src \ APACHE_PREFIX=/usr/skynet \ DO_HTTPD=1 \ USE_APACI=1 \ EVERYTHING=1 \ APACI_ARGS='--disable-rule=EXPAT --disable-module=env --disable-module=negotiation --disable-module=status --disable-module=include --disable-module=autoindex --disable-module=asis --disable-module=imap --disable-module=actions --disable-module=userdir --disable-module=setenvif' The relevant portion of the httpd.conf file: <VirtualHost 192.168.1.x:80> ServerAdmin [EMAIL PROTECTED] DocumentRoot /usr/skynet/htdocs ServerName skynet.whapps.com Alias /icons/ "/usr/skynet/htdocs" PerlTransHandler Skynet::TransHandler ErrorDocument 401 /authfail.html <Directory /usr/skynet/htdocs> AuthName "Password Protected Area" AuthType Basic PerlAuthenHandler Skynet::AuthenHandler require valid-user PerlSetVar Apache::GTopLimit::DEBUG 1 PerlFixupHandler Apache::GTopLimit PerlHandler Skynet::Handler </Directory> </VirtualHost> The startup.pl file: #!/usr/bin/perl use strict; use Skynet::Util; use Apache::GTopLimit; use Skynet::Handler; use Apache::DBI; # Control the life based on memory size # in KB, so this is ~10MB $Apache::GTopLimit::MAX_PROCESS_SIZE = 20000; # Make sure we are in a sane environment. $ENV{MOD_PERL} or die "not running under mod_perl!"; # Initialize the database connections for each child #$Apache::DBI::DEBUG = "3"; my $Dbh=Apache::DBI->connect_on_init("dbi:mysql:dbname=skynet;host=x.com;","user","pass", {AutoCommit => 1, RaiseError => 1}); 1; A backtrace when the segfault occurs: GNU gdb Red Hat Linux (5.3post-0.20021129.18rh) This GDB was configured as "i386-redhat-linux-gnu"... (gdb) run -X -f /usr/skynet/conf/httpd.conf Starting program: /usr/skynet/bin/httpd -X -f /usr/skynet/conf/httpd.conf Program received signal SIGSEGV, Segmentation fault. 0x0807698b in hvrv2table (rv=0x0) at perl_util.c:101 101 return (table *)SvIV((SV*)SvRV(rv)); (gdb) bt #0 0x0807698b in hvrv2table (rv=0x0) at perl_util.c:101 #1 0x08088995 in XS_Apache__Table_DESTROY (cv=0x81ae5dc) at Table.c:149 #2 0x0810b6c9 in Perl_pp_entersub () #3 0x080ba314 in S_call_body () #4 0x080ba0ee in Perl_call_sv () #5 0x08112b2b in Perl_sv_clear () #6 0x08112d53 in Perl_sv_free () #7 0x08117995 in Perl_sv_clean_objs () #8 0x080b89f8 in perl_destruct () #9 0x0806bd6c in perl_shutdown (s=0x819e12c, p=0x8df749c) at mod_perl.c:294 #10 0x0806ff43 in perl_child_exit_cleanup (data=0x80000) at mod_perl.c:926 #11 0x0808a8e4 in run_cleanups (c=0x8df7634) at alloc.c:1745 #12 0x08089183 in ap_clear_pool (a=0x8df749c) at alloc.c:541 #13 0x08089200 in ap_destroy_pool (a=0x8df749c) at alloc.c:571 #14 0x080965ce in clean_child_exit (code=0) at http_main.c:528 #15 0x0809942d in child_main (child_num_arg=0) at http_main.c:4367 #16 0x080999ba in make_child (s=0x819e12c, slot=0, now=1068483979) at http_main.c:4768 #17 0x08099b20 in startup_children (number_to_start=5) at http_main.c:4850 #18 0x0809a1bd in standalone_main (argc=4, argv=0xbfffead4) at http_main.c:5169 #19 0x0809a9db in main (argc=4, argv=0xbfffead4) at http_main.c:5511 #20 0x420156a4 in __libc_start_main () from /lib/tls/libc.so.6 (gdb) list 5511 STANDALONE_MAIN(argc, argv); 5512 } 5513 #else 5514 if (!tpf_child) { 5515 memcpy(tpf_server_name, input_parms.parent.servname, 5516 INETD_SERVNAME_LENGTH); 5517 tpf_server_name[INETD_SERVNAME_LENGTH + 1] = '\0'; 5518 sprintf(tpf_mutex_key, "%.*x", TPF_MUTEX_KEY_SIZE - 1, getpid()); 5519 tpf_parent_pid = getppid(); 5520 ap_open_logs(server_conf, plog); (gdb) Marc Slagle Whapps, LLC -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html