-------------8<---------- Start Bug Report ------------8<---------- 1. Problem Description:
MP_CODE_ATTRS() doesn't work under perl 5.10.0. I discovered this when trying to use a PerlOutputFilterHandler and upgraded from 5.8.8 to 5.10.0. Under 5.10.0, sometimes the filter would run, sometimes not. When the filter would not run, MP_TRACE messages showed that mod_perl thought it was not a perl filter handler. I tracked this problem down to the fact that the filter h->attrs were getting corrupted sometime after the filter was loaded, but before the request was run. The culprit appears to be in modperl_mgv.c, line 276: handler->attrs = (U32)MP_CODE_ATTRS(cv); I added MP_TRACE() lines before and after this call. When running under perl 5.8.8, the MP_TRACE()'s output: modperl_mgv_resolve: pre MP_CODE_ATTRS attrs: 0 modperl_mgv_resolve: post MP_CODE_ATTRS attrs: 0 However, when running under perl 5.10.0, the MP_TRACE()'s look like this: modperl_mgv_resolve: pre MP_CODE_ATTRS attrs: 0 modperl_mgv_resolve: post MP_CODE_ATTRS attrs: 9905fb8 The actual value returned by MP_CODE_ATTRS() varies. Looking at mod_perl.h, where MP_CODE_ATTRS() is defined: /* betting on Perl*Handlers not using CvXSUBANY * mod_perl reuses this field for handler attributes */ #define MP_CODE_ATTRS(cv) (CvXSUBANY((CV*)cv).any_i32) Apparently this is not a safe assumption for perl 5.10.0... 2. Used Components and their Configuration: *** mod_perl version 2.000003 *** using /home/mschout/build/lib/perl5/site_perl/arch/Apache2/BuildConfig.pm *** Makefile.PL options: MP_APR_LIB => aprext MP_APXS => /home/mschout/core/src/mod_perl/../../build/bin/apxs MP_COMPAT_1X => 1 MP_GENERATE_XS => 1 MP_LIBNAME => mod_perl MP_TRACE => 1 MP_USE_DSO => 1 *** The httpd binary was not found *** (apr|apu)-config linking info -L/home/mschout/core/src/apache/../../build/lib -laprutil-1 -lpq -lexpat· -L/home/mschout/core/src/apache/../../build/lib -lapr-1 -luuid -lrt -lcrypt -lpthread -ldl· *** /home/mschout/core/src/perl/../../build/bin/perl -V Summary of my perl5 (revision 5 version 10 subversion 0) configuration: Platform: osname=linux, osvers=2.4.21-53.elsmp, archname=i686-linux uname='linux testbed 2.4.21-53.elsmp #1 smp mon dec 3 13:34:41 est 2007 i686 i686 i386 gnulinux ' config_args='-Dprefix=/home/mschout/core/src/../build -Dprivlib=/home/mschout/core/src/../build/lib/perl5 -Darchlib=/home/mschout/core/src/../build/lib/perl5/arch -Dsitelib=/home/mschout/core/src/../build/lib/perl5/site_perl -Dsitearch=/home/mschout/core/src/../build/lib/perl5/site_perl/arch -Dman3dir=/home/mschout/core/src/../build/man/man3 -Ui_db -de' hint=previous, useposix=true, d_sigaction=define 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 -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm', optimize='-O2', cppflags='-fno-strict-aliasing -pipe -I/usr/local/include -I/usr/include/gdbm -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm' ccversion='', gccversion='3.2.3 20030502 (Red Hat Linux 3.2.3-59)', 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 -lcrypt -lutil -lc perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc 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='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib' Characteristics of this binary (from libperl):· Compile-time options: PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP USE_LARGE_FILES USE_PERLIO Built under linux Compiled at Dec 19 2007 12:10:30 %ENV: PERL5LIB="/home/mschout/build/lib/perl5/arch:/home/mschout/build/lib/perl5:/home/mschout/build/lib/perl5/site_perl/arch:/home/mschout/build/lib/perl5/site_perl" PERL_LWP_USE_HTTP_10="1" @INC: /home/mschout/build/lib/perl5/arch /home/mschout/build/lib/perl5 /home/mschout/build/lib/perl5/site_perl/arch /home/mschout/build/lib/perl5/site_perl . *** Packages of interest status: Apache2 : - Apache2::Request : - CGI : 3.29, 3.29 ExtUtils::MakeMaker: 6.42, 6.42 LWP : 5.803, 5.803 mod_perl : - mod_perl2 : 2.000003, 2.000003 3. This is the core dump trace: (if you get a core dump): n/a This report was generated by /home/mschout/build/bin/mp2bug on Fri Dec 21 20:48:20 2007 GMT. -------------8<---------- End Bug Report --------------8<----------