perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: per-server cleanups core dump? geoff?
Date Wed, 01 Dec 2004 01:31:25 GMT
Geoffrey Young wrote:

>>So may be your orig patch from:
>>http://thread.gmane.org/gmane.comp.apache.mod-perl.devel/730
>>is the way to go,
> 
> 
> well, if you mean the patch that started the thread, I seem to say there
> that the patch keeps things from segfaulting, but that the callback isn't
> actually run.  in other words, the patch didn't really work, but was
> probably meant to be a starting point to something better.

Actually your patch, Geoff, was perfectly fine. It wasn't supposed to work 
for cleanups registered from the child processes, because child processes 
don't run cleanup handlers, because server_pool is cleaned internally w/o 
letting the parent pool destroy it (child_exit is a special case). But it 
works perfectly fine for parent process cleanup, but you need to register 
that in the parent process (i.e. at the server startup). See the 
modperl_extra.pl addition in the patch below. it logs the date twice on 
server start, i.e. every time server_pool is recreated.

So let me know where are we on this story.

Index: xs/maps/modperl_functions.map
===================================================================
--- xs/maps/modperl_functions.map	(revision 109257)
+++ xs/maps/modperl_functions.map	(working copy)
@@ -78,6 +78,7 @@

  MODULE=Apache::ServerUtil  PACKAGE=Apache::ServerRec
   SV *:DEFINE_dir_config | | server_rec *:s, char *:key=NULL, SV 
*:sv_val=Nullsv
+ apr_pool_t:DEFINE_pool

  MODULE=Apache::ServerUtil PACKAGE=Apache::ServerUtil
   mpxs_Apache__ServerUtil_server_root_relative | | p, fname=""
Index: xs/Apache/ServerUtil/Apache__ServerUtil.h
===================================================================
--- xs/Apache/ServerUtil/Apache__ServerUtil.h	(revision 109257)
+++ xs/Apache/ServerUtil/Apache__ServerUtil.h	(working copy)
@@ -13,6 +13,8 @@
   * limitations under the License.
   */

+#define mpxs_Apache__ServerRec_pool modperl_server_pool
+
  #define mpxs_Apache__ServerRec_method_register(s, methname)    \
      ap_method_register(s->process->pconf, methname);

Index: t/conf/modperl_extra.pl
===================================================================
--- t/conf/modperl_extra.pl	(revision 109257)
+++ t/conf/modperl_extra.pl	(working copy)
@@ -49,8 +49,14 @@

  test_perl_ithreads();

+my $server_pool = Apache::ServerRec::pool();
+$server_pool->cleanup_register(
+    sub {
+        local %ENV;
+        qx[/bin/date >> /tmp/date];
+        Apache::OK;
+    });

-
  ### only subs below this line ###

  sub reorg_INC {
Index: t/response/TestAPI/server_util.pm
===================================================================
--- t/response/TestAPI/server_util.pm	(revision 109257)
+++ t/response/TestAPI/server_util.pm	(working copy)
@@ -29,7 +29,7 @@
  sub handler {
      my $r = shift;

-    plan $r, tests => 15;
+    plan $r, tests => 17;

      {
          my $s = $r->server;
@@ -48,6 +48,14 @@

      server_root_relative_tests($r);

+    my $server_pool = Apache::ServerRec::pool();
+    ok $server_pool->isa('APR::Pool');
+
+    # this will never run since it's not registered in the parent
+    # process
+    $server_pool->cleanup_register(sub { Apache::OK });
+    ok 1;
+
      Apache::OK;
  }



-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org


Mime
View raw message