You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Laurent Simonneau <ls...@corp.free.fr> on 2011/11/15 11:09:45 UTC

mod_perl SegFault in RequestRec::print after sending 32kB of data

Hi,

Apache process is segfaulting when I use mod_perl.

It seems to occure when a process send more than 32kB of data in the 
RequestRec::print method (not really sure of the 32k limit).

Anybody with the same problem ?

Full bug report with core trace below.

Thanks !

Laurent.

-------------8<---------- Start Bug Report ------------8<----------
1. Problem Description:

Apache segfault when using mod_perl.

Seems to occures when a process send more than 32kB of data.

2. Used Components and their Configuration:

*** mod_perl version 2.000005

*** using /tmp/libapache2-mod-perl2-2.0.5/lib/Apache2/BuildConfig.pm

*** Makefile.PL options:
   MP_APR_LIB     => aprext
   MP_APXS        => /usr/bin/apxs2
   MP_CCOPTS      => -g -O2 -Wall
   MP_COMPAT_1X   => 1
   MP_DEBUG       => 1
   MP_GENERATE_XS => 1
   MP_INCLUDE_DIR => /usr/include/apache2 /usr/include/apr-1.0
   MP_LIBNAME     => mod_perl
   MP_TRACE       => 1
   MP_USE_DSO     => 1
   MP_USE_GTOP    => 1
   MP_USE_STATIC  => 0


*** /usr/sbin/apache2 -V
Server version: Apache/2.2.20 (Ubuntu)
Server built:   Nov  7 2011 22:45:46
Server's Module Magic Number: 20051115:28
Server loaded:  APR 1.4.5, APR-Util 1.3.12
Compiled using: APR 1.4.5, APR-Util 1.3.12
Architecture:   64-bit
Server MPM:     Prefork
   threaded:     no
     forked:     yes (variable process count)
Server compiled with....
  -D APACHE_MPM_DIR="server/mpm/prefork"
  -D APR_HAS_SENDFILE
  -D APR_HAS_MMAP
  -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
  -D APR_USE_SYSVSEM_SERIALIZE
  -D APR_USE_PTHREAD_SERIALIZE
  -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
  -D APR_HAS_OTHER_CHILD
  -D AP_HAVE_RELIABLE_PIPED_LOGS
  -D DYNAMIC_MODULE_LIMIT=128
  -D HTTPD_ROOT="/etc/apache2"
  -D SUEXEC_BIN="/usr/lib/apache2/suexec"
  -D DEFAULT_PIDLOG="/var/run/apache2.pid"
  -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
  -D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
  -D DEFAULT_ERRORLOG="logs/error_log"
  -D AP_TYPES_CONFIG_FILE="mime.types"
  -D SERVER_CONFIG_FILE="apache2.conf"

*** /usr/bin/ldd /usr/sbin/apache2
   linux-vdso.so.1 =>  (0x00007fff1c1ff000)
   libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f41bb502000)
   libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0x00007f41bb2df000)
   libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0x00007f41bb0a5000)
   libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007f41bae88000)
   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f41baae9000)
   libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f41ba8af000)
   libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f41ba685000)
   libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f41ba480000)
   libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f41ba27b000)
   /lib64/ld-linux-x86-64.so.2 (0x00007f41bb9dd000)


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

  -L/usr/lib -laprutil-1
  -L/usr/lib -lapr-1



*** /usr/bin/perl -V
Summary of my perl5 (revision 5 version 12 subversion 4) configuration:

   Platform:
     osname=linux, osvers=2.6.24-28-server, 
archname=x86_64-linux-gnu-thread-multi
     uname='linux allspice 2.6.24-28-server #1 smp wed aug 18 21:17:51 
utc 2010 x86_64 x86_64 x86_64 gnulinux '
     config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN 
-Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr 
-Dprivlib=/usr/share/perl/5.12 -Darchlib=/usr/lib/perl/5.12 
-Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 
-Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local 
-Dsitelib=/usr/local/share/perl/5.12.4 
-Dsitearch=/usr/local/lib/perl/5.12.4 -Dman1dir=/usr/share/man/man1 
-Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 
-Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 
-Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm 
-Uusesfio -Uusenm -Ui_libutil -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib 
-Dlibperl=libperl.so.5.12.4 -des'
     hint=recommended, useposix=true, d_sigaction=define
     useithreads=define, usemultiplicity=define
     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
     use64bitint=define, use64bitall=define, uselongdouble=undef
     usemymalloc=n, bincompat5005=undef
   Compiler:
     cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN 
-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include 
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
     optimize='-O2 -g',
     cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing 
-pipe -fstack-protector -I/usr/local/include'
     ccversion='', gccversion='4.6.1', gccosandvers=''
     intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
     ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', 
lseeksize=8
     alignbytes=8, prototype=define
   Linker and Libraries:
     ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
     libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib 
/usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
     libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
     perllibs=-ldl -lm -lpthread -lc -lcrypt
     libc=, so=so, useshrplib=true, libperl=libperl.so.5.12.4
     gnulibc_version='2.13'
   Dynamic Linking:
     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
     cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib 
-fstack-protector'


Characteristics of this binary (from libperl):
   Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                         PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP 
USE_64_BIT_ALL
                         USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
                         USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API
   Locally applied patches:
   DEBPKG:debian/arm_thread_stress_timeout - 
http://bugs.debian.org/501970 Raise the timeout of 
ext/threads/shared/t/stress.t to accommodate
   DEBPKG:debian/cpan_config_path - Set location of CPAN::Config to 
/etc/perl as /usr may not be
   DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS 
default for modules installed from
   DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove 
overly restrictive DB_File version check.
   DEBPKG:debian/doc_info - Replace generic man(1) instructions with 
Debian-specific
   DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs 
to follow symlinks and ignore missing @INC directories.
   DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno 
version check due to upgrade problems with long-running
   DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note 
that libperl-dev package is required for embedded linking
   DEBPKG:fixes/respect_umask - Respect umask during installation
   DEBPKG:debian/writable_site_dirs - Set umask approproately for site 
install directories
   DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of 
libperl.a to /usr/lib
   DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or 
perllocal.pod for perl or vendor
   DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables 
written to the makefile
   DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the 
binary targets.
   DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist 
files for core or vendor.
   DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as 
per Debian policy.
   DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to 
/etc/perl/Net as /usr may not be
   DEBPKG:debian/m68k_thread_stress - http://bugs.debian.org/517938 
http://bugs.debian.org/495826 Disable some threads tests on m68k for now 
due to missing TLS.
   DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
   DEBPKG:debian/module_build_man_extensions - 
http://bugs.debian.org/479460 Adjust Module::Build manual page 
extensions for the Debian Perl
   DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the 
list of libraries wanted to what we actually need.
   DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] 
http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option
   DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp 
skip include directories in /usr/local
   DEBPKG:debian/disable-zlib-bundling - Disable zlib bundling in 
Compress::Raw::Zlib
   DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 
Configure CPANPLUS to use the site directories by default.
   DEBPKG:debian/cpanplus_config_path - Save local versions of 
CPANPLUS::Config::System into /etc/perl.
   DEBPKG:fixes/autodie-flock - http://bugs.debian.org/543731 Allow for 
flock returning EAGAIN instead of EWOULDBLOCK on
   DEBPKG:fixes/cpanplus-without-home - http://bugs.debian.org/577011 
[rt.cpan.org #52988] Fix CPANPLUS test failures when HOME doesn't exist
   DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/580034 
Point users to Debian packages of deprecated core modules
   DEBPKG:fixes/hurd-ccflags - [a190e64] http://bugs.debian.org/587901 
[perl #92244] Make hints/gnu.sh append to $ccflags rather than 
overriding them
   DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 
Squelch locale warnings in Debian package maintainer scripts
   DEBPKG:fixes/lc-numeric-docs - [903eb63] [perl #78452] 
http://bugs.debian.org/379329 LC_NUMERIC documentation fixes
   DEBPKG:fixes/lc-numeric-sprintf - [b3fd614] [perl #78632] 
http://bugs.debian.org/601549 Fix sprintf not to ignore LC_NUMERIC with 
constants
   DEBPKG:fixes/concat-stack-corruption - [e3393f5] [perl #78674] 
http://bugs.debian.org/596105 Fix stack pointer corruption in 
pp_concat() with 'use encoding'
   DEBPKG:fixes/h2ph-gcc-4.5 - [8d66b3f] http://bugs.debian.org/599933 
h2ph fix for gcc 4.5
   DEBPKG:fixes/module-build-home-directory - 
http://bugs.debian.org/624850 [rt.cpan.org #67893] Fix failing tilde 
test when run under a UID without a passwd entry
   DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List 
packaged patches for 5.12.4-4 in patchlevel.h
   DEBPKG:fixes/h2ph-multiarch - [e7ec705] http://bugs.debian.org/625808 
[perl #90122] Make h2ph correctly search gcc include directories
   DEBPKG:fixes/odbm-multiarch - [3c998e0] http://bugs.debian.org/625634 
[perl #90106] Fix ODBM_File failures on Ubuntu natty [multiarch]
   DEBPKG:fixes/re.t_sh4_timeout - [7c47ab2] [perl #92226] 
http://bugs.debian.org/626125 Update lengthen time-out time for t/re/re.t.
   DEBPKG:fixes/index-tainting - [3b36395] http://bugs.debian.org/291450 
[perl #64804] RT 64804: tainting with index() of a constant
   DEBPKG:fixes/document_makemaker_ccflags - 
http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS 
should include $Config{ccflags}
   DEBPKG:fixes/sys-syslog-socket-timeout-kfreebsd.patch - 
http://bugs.debian.org/627821 [rt.cpan.org #69997] Use a socket timeout 
on GNU/kFreeBSD to catch ICMP port unreachable
   DEBPKG:fixes/hurd-hints - http://bugs.debian.org/636609 Improve 
general GNU hints, needed for GNU/Hurd.
   DEBPKG:fixes/encode-heap-overflow - [e46d973] 
http://bugs.debian.org/637376 Fix decode_xs n-byte heap-overflow 
security bug in Unicode.xs
   Built under linux
   Compiled at Sep  6 2011 08:09:36
   %ENV:
     PERL_LWP_USE_HTTP_10="1"
   @INC:
     /etc/perl
     /usr/local/lib/perl/5.12.4
     /usr/local/share/perl/5.12.4
     /usr/lib/perl5
     /usr/share/perl5
     /usr/lib/perl/5.12
     /usr/share/perl/5.12
     /usr/local/lib/site_perl
     .

*** Packages of interest status:

Apache2            : -
Apache2::Request   : 2.13
CGI                : 3.49
ExtUtils::MakeMaker: 6.56
LWP                : 6.02
mod_perl           : -
mod_perl2          : 2.000005


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

#0  0x00007f92c67bf538 in ?? () from 
/usr/lib/perl5/auto/Apache2/RequestIO/RequestIO.so
#1  0x00007f92c67bf860 in XS_Apache2__RequestRec_print () from 
/usr/lib/perl5/auto/Apache2/RequestIO/RequestIO.so
#2  0x00007f92cff3246d in Perl_pp_entersub () from /usr/lib/libperl.so.5.12
#3  0x00007f92cff29c10 in Perl_runops_standard () from 
/usr/lib/libperl.so.5.12
#4  0x00007f92cfecdcc3 in Perl_call_sv () from /usr/lib/libperl.so.5.12
#5  0x00007f92d0210d51 in modperl_callback () from 
/usr/lib/apache2/modules/mod_perl.so
#6  0x00007f92d0211904 in modperl_callback_run_handlers () from 
/usr/lib/apache2/modules/mod_perl.so
#7  0x00007f92d02120af in modperl_callback_per_dir () from 
/usr/lib/apache2/modules/mod_perl.so
#8  0x00007f92d020a8cb in ?? () from /usr/lib/apache2/modules/mod_perl.so
#9  0x00007f92d020abe1 in modperl_response_handler () from 
/usr/lib/apache2/modules/mod_perl.so
#10 0x00007f92d5d362d8 in ap_run_handler (r=0x7f92d41eb0a0) at 
/build/buildd/apache2-2.2.20/server/config.c:159
#11 0x00007f92d5d3674e in ap_invoke_handler (r=0x7f92d41eb0a0) at 
/build/buildd/apache2-2.2.20/server/config.c:377
#12 0x00007f92d5d462c0 in ap_process_request (r=0x7f92d41eb0a0) at 
/build/buildd/apache2-2.2.20/modules/http/http_request.c:282
#13 0x00007f92d5d43138 in ap_process_http_connection (c=0x7f92d41f3290) 
at /build/buildd/apache2-2.2.20/modules/http/http_core.c:190
#14 0x00007f92d5d3cd78 in ap_run_process_connection (c=0x7f92d41f3290) 
at /build/buildd/apache2-2.2.20/server/connection.c:43
#15 0x00007f92d5d4aec0 in child_main (child_num_arg=<optimized out>) at 
/build/buildd/apache2-2.2.20/server/mpm/prefork/prefork.c:667
#16 0x00007f92d5d4b62a in make_child (slot=3, s=0x7f92d5ce27f8) at 
/build/buildd/apache2-2.2.20/server/mpm/prefork/prefork.c:768
#17 make_child (s=0x7f92d5ce27f8, slot=3) at 
/build/buildd/apache2-2.2.20/server/mpm/prefork/prefork.c:696
#18 0x00007f92d5d4b6e7 in startup_children (number_to_start=2) at 
/build/buildd/apache2-2.2.20/server/mpm/prefork/prefork.c:786
#19 0x00007f92d5d4c064 in ap_mpm_run (_pconf=<optimized out>, 
plog=<optimized out>, s=<optimized out>)
     at /build/buildd/apache2-2.2.20/server/mpm/prefork/prefork.c:1007
#20 0x00007f92d5d213ca in main (argc=3, argv=0x7fff4ac7fc28) at 
/build/buildd/apache2-2.2.20/server/main.c:741


This report was generated by /usr/share/libapache2-mod-perl2/mp2bug on 
Tue Nov 15 09:48:54 2011 GMT.

-------------8<---------- End Bug Report --------------8<----------