Java Mailing List Archive

http://www.apache-httpd.com/

Home » modperl.perl »

[mp2] sendfile() bug report with Apache-Test test attached

Adriano Caloiaro

2009-06-25


Author LoginPost Reply
Hello,

From what I've read, Apache should understand that it needs to apply the byterange filter whenever $r->sendfile is called and the Range: header is present in the incoming request.  However what I'm seeing is that the entire file is returned for each byte range requested by the client.

Access log serving off disk in Apache2:

*.*.*.* - - [17/Jun/2009:19:50:30 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 206 1 "-" "-"
*.*.*.* - - [17/Jun/2009:19:50:31 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 206 435996 "-" "-"
*.*.*.* - - [17/Jun/2009:19:50:30 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 206 2097152 "-" "-"

Serving from perl handler:

*.*.*.* - - [18/Jun/2009:10:11:43 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 200 2533148 "-" "-"
*.*.*.* - - [18/Jun/2009:10:11:45 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 200 2533148 "-" "-"
*.*.*.* - - [18/Jun/2009:10:11:45 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 200 2533148 "-" "-"
-------------8<---------- Start Bug Report ------------8<----------
1. Problem Description:


Hello,

From what I've read, Apache should understand that it needs to apply the byterange filter whenever $r->sendfile is called and the Range: header is present in the incoming request. However what I'm seeing is that the entire file is returned for each byte range requested by the client.

Access log serving off disk in Apache2:

*.*.*.* - - [17/Jun/2009:19:50:30 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 206 1 "-" "-"
*.*.*.* - - [17/Jun/2009:19:50:31 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 206 435996 "-" "-"
*.*.*.* - - [17/Jun/2009:19:50:30 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 206 2097152 "-" "-"

Serving from perl handler:

*.*.*.* - - [18/Jun/2009:10:11:43 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 200 2533148 "-" "-"
*.*.*.* - - [18/Jun/2009:10:11:45 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 200 2533148 "-" "-"
*.*.*.* - - [18/Jun/2009:10:11:45 -0400] "GET /mygcx/test/flvplayernew17.flv HTTP/1.1" 200 2533148 "-" "-"

2. Used Components and their Configuration:

*** mod_perl version 2.000004

*** using /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/Apache2/BuildConfig.pm

*** Makefile.PL options:
MP_APR_CONFIG => /usr/bin/apr-1-config
MP_APR_LIB   => aprext
MP_APXS     => /usr/sbin/apxs
MP_COMPAT_1X  => 1
MP_GENERATE_XS => 1
MP_LIBNAME   => mod_perl
MP_USE_DSO   => 1


*** httpd
Server version: Apache/2.2.3
Server built:  May 10 2009 11:14:09
Server's Module Magic Number: 20051115:3
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:  32-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/httpd"
-D SUEXEC_BIN="/usr/sbin/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

-laprutil-1 -lldap -llber -ldb-4.3 -lexpat
-lapr-1 -lpthread -ldl



*** /usr/bin/perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
  osname=linux, osvers=2.6.18-128.1.1.el5, archname=i386-linux-thread-multi
  uname='linux hs20-bc2-5.build.redhat.com 2.6.18-128.1.1.el5 #1 smp mon jan 26 13:58:24 est 2009 i686 i686 i386 gnulinux '
  config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Dversion=5.8.8 -Dmyhostname=localhost -Dperladmin=root@(protected)'
  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='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
  optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
  ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-44)', 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='gcc', ldflags =' -L/usr/local/lib'
  libpth=/usr/local/lib /lib /usr/lib
  libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
  perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
  libc=/lib/libc-2.5.so, so=so, useshrplib=true, libperl=libperl.so
  gnulibc_version='2.5'
Dynamic Linking:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -L/usr/local/lib'


Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
               PERL_MALLOC_WRAP USE_ITHREADS USE_LARGE_FILES
               USE_PERLIO USE_REENTRANT_API
Built under linux
Compiled at Mar 25 2009 11:14:47
%ENV:
  PERL_LWP_USE_HTTP_10="1"
@INC:
  /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
  /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi
  /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi
  /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
  /usr/lib/perl5/site_perl/5.8.8
  /usr/lib/perl5/site_perl/5.8.7
  /usr/lib/perl5/site_perl/5.8.6
  /usr/lib/perl5/site_perl/5.8.5
  /usr/lib/perl5/site_perl
  /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
  /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi
  /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi
  /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi
  /usr/lib/perl5/vendor_perl/5.8.8
  /usr/lib/perl5/vendor_perl/5.8.7
  /usr/lib/perl5/vendor_perl/5.8.6
  /usr/lib/perl5/vendor_perl/5.8.5
  /usr/lib/perl5/vendor_perl
  /usr/lib/perl5/5.8.8/i386-linux-thread-multi
  /usr/lib/perl5/5.8.8
  .

*** Packages of interest status:

Apache2        : -
Apache2::Request  : -
CGI           : 3.15
ExtUtils::MakeMaker: 6.52
LWP           : 5.805
mod_perl       : -
mod_perl2       : 2.000004


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

[CORE TRACE COMES HERE]

This report was generated by /usr/bin/mp2bug on Thu Jun 25 17:58:16 2009 GMT.

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

Note: Complete the rest of the details and post this bug report to
modperl <at> perl.apache.org. To subscribe to the list send an empty
email to modperl-subscribe@(protected).



Attachment: mod_perl2-sendfile-bug.tar.gz (zipped)
©2008 apache-httpd.com - Jax Systems, LLC, U.S.A.