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

Laurent Simonneau <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
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<----------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.