The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#################
# mod_perl bugs #
#################

* local %ENV doesn't work, see t/modperl/local_ent.

* PerlOptions None needs to be implemented, see t/modperl/perl_options2.t

* PerlIOApache_flush() 
  Setting local $| = 0 doesn't work with regular print statements under ModPerl::*
  
  http://p6m7g8.net/MP2/84625
  http://www.gossamer-threads.com/lists/modperl/dev/85365
  [pgollucci volunteers]

* $r->rflush doesn't work. see:
  http://marc.theaimsgroup.com/?l=apache-modperl&m=103847990813285&w=2
  I also see a weird behavior where it does sends FLUSH buckets but
  they all seem to fall through the data, thus not really flushing
  anything. this can be easily reproduced with MyApache::FilterSnoop.

  See also
  http://www.gossamer-threads.com/lists/modperl/dev/84744?search_string=%23%7C%2C%20flushing%2C%20etc;#84743
  for a related $| but not the same issue.
  [pgollucci volunteers]

* early pool destruction issues
  http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=108872944815382&w=2

* PassEnv/SetEnv propogation in <Perl> section 
  http://www.gossamer-threads.com/archive/mod_perl_C1/dev_F4/%5BMP2_BUG%5D_PerlPassEnv_issues_P70500/

* there was a report about PerlRun leaking memory. the reporter didn't
  give any more details, but I suspect that it's due to
  ModPerl::Util::unload_package() which perfectly fits the timing when
  the leak was introduced (when PerlRun started to use unload_package).
  
  Report: http://gossamer-threads.com/lists/modperl/modperl/77162

* most of the xs wrappers print no "Usage: " when wrong args/wrong
  number of args are passed, would be nice to add the usage message
  whenever incorrect arguments error is logged. e.g., when
  APR::URI->parse() gets the wrong first arg (non-pool) it prints:

    p is not of type APR::Pool at ...

  whereas it's not so obvious that the function expected the pool
  object, neither it specifies which ("arg number") of the arguments
  is wrong.

  possible solution: add a new field to the map files, which will be
  used as a usage message whenever an argument error occurs.

* 'SetHandler modperl' doesn't reset $|, so if anything turns it on
  anywhere, it's going to stay that way. Meaning excessive flushing
  probably causing a performance hit. I've tried to add the code to
  reset it, but this requires getting a perl interpreter at the early
  stage and it breaks several filter tests, which has relied before on
  the coincidence that both the response handler and the filter were
  run by the same interpreter (in particular this breaks the code
  where push_handlers() uses a string as a handler, rather a CODE
  reference, see t/filter/TestFilter/both_str_rec_add.pm, to
  reproduce the problem, simply s/modperl/perl-script/)


* Apache::PerlSection->dump() will not preserve tied'edness. This is
  handled proprely in Storable, so either switch dump/restore to
  non-human readable (-0.5) or borrow the same logic to dump/restore
  tied objects.



* Apache::Log compat issues:

  Apache->warn, Apache::warn, Apache::Server->warn and
  Apache->Apache::Server->log_error are all doing:
     s = modperl_global_get_server_rec();
  and this function is thread safe only during the startup.

  possible solutions:

  1) enforce that these functions are used only at the server startup

  2) require +GlobalRequest, which gives us r->server, now thread
     safe (though slow).

  3) drop them all from the API and move to compat. 
     [remember that Apache::warn is needed for registry scripts to
     override warn()]

  For Apache::warn and registry, the solution is to supply
  GLOBAL::CORE::warn for the current request and get $r inside of it
  and]

  Report: Message-ID: <Pine.LNX.4.33.0206201011070.2590-100000@mako.covalent.net>
  Status: <img alt="Doug, contemplating">

* see if we can avoid touching environ[] until a fork() from Perl
  happens

* Apache::Status prints a bogus filename via B::CV (e.g. from the test
  suite)

    http://localhost:8529/status/perl/APR::Brigade::bootstrap/FUNCTION?cv_dump
    Subroutine info for APR::Brigade::bootstrap
    File: xYµ
    Package: APR::Brigade
    ...

  notice the bogus filename. For some reason this problem doesn't
  exist with APR::Bucket:

    http://localhost:8529/status/perl/APR::Bucket::bootstrap/FUNCTION?cv_dump

  I have tested that the bogus filename comes from $obj->FILE in
  Apache::Stats::cv_file, where $obj is blessed into B::CV.

  The problem has been noticed with threaded 5.8.1 perl, didn't test
  any other builds.

  Apparently it's a known to p5p problem:
  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2003-08/msg00514.html
  http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2003-11/msg01126.html

  Report:   
  http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=106893251911930&w=2
  Priority: Low 

* mpxs_Apache2__RequestRec_GETC in Apache_RequestIO.h is out to be
  reimplemented similar to read() w/o using the deprecated
  client_block interface

* Segfaults under Apache::Reload (could be uncovering a bug in mp):
  http://marc.theaimsgroup.com/?t=111145169900002&r=1&w=2
  owner: gozer
-