Return-Path: Delivered-To: apmail-perl-modperl-cvs-archive@www.apache.org Received: (qmail 28388 invoked from network); 5 Dec 2004 18:55:27 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 5 Dec 2004 18:55:27 -0000 Received: (qmail 69484 invoked by uid 500); 5 Dec 2004 18:55:27 -0000 Delivered-To: apmail-perl-modperl-cvs-archive@perl.apache.org Received: (qmail 69460 invoked by uid 500); 5 Dec 2004 18:55:26 -0000 Mailing-List: contact modperl-cvs-help@perl.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: dev@perl.apache.org Delivered-To: mailing list modperl-cvs@perl.apache.org Received: (qmail 69443 invoked by uid 99); 5 Dec 2004 18:55:26 -0000 X-ASF-Spam-Status: No, hits=-10.0 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Date: 5 Dec 2004 18:55:25 -0000 Message-ID: <20041205185525.28371.qmail@minotaur.apache.org> From: stas@apache.org To: modperl-cvs@perl.apache.org Subject: svn commit: r109900 - /perl/modperl/trunk/Changes /perl/modperl/trunk/src/modules/perl/mod_perl.c /perl/modperl/trunk/src/modules/perl/mod_perl.h /perl/modperl/trunk/xs/Apache/ServerUtil/Apache__ServerUtil.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Author: stas Date: Sun Dec 5 10:55:24 2004 New Revision: 109900 URL: http://svn.apache.org/viewcvs?view=rev&rev=109900 Log: create a new subpool modperl_server_user_pool (from modperl_server_pool), which is handed to users via Apache::ServerUtil::base_server_pool(). This ensures that user-registered cleanups are run *before* perl's internals cleanups are run. (previously there was a problem with non-threaded perls which were segfaulting on user cleanups, since perl was already gone by that time). Modified: perl/modperl/trunk/Changes perl/modperl/trunk/src/modules/perl/mod_perl.c perl/modperl/trunk/src/modules/perl/mod_perl.h perl/modperl/trunk/xs/Apache/ServerUtil/Apache__ServerUtil.h Modified: perl/modperl/trunk/Changes Url: http://svn.apache.org/viewcvs/perl/modperl/trunk/Changes?view=diff&rev=109900&p1=perl/modperl/trunk/Changes&r1=109899&p2=perl/modperl/trunk/Changes&r2=109900 ============================================================================== --- perl/modperl/trunk/Changes (original) +++ perl/modperl/trunk/Changes Sun Dec 5 10:55:24 2004 @@ -12,6 +12,14 @@ =item 1.99_18-dev +create a new subpool modperl_server_user_pool (from +modperl_server_pool), which is handed to users via +Apache::ServerUtil::base_server_pool(). This ensures that +user-registered cleanups are run *before* perl's internals cleanups +are run. (previously there was a problem with non-threaded perls which +were segfaulting on user cleanups, since perl was already gone by that +time). [Stas] + Starting from ExtUtils::MakeMaker 6.22 it no longer generates pm_to_blib target, but pm_to_blib.ts, so needed to fix the glue_pod target, so install will work correctly [Stas] Modified: perl/modperl/trunk/src/modules/perl/mod_perl.c Url: http://svn.apache.org/viewcvs/perl/modperl/trunk/src/modules/perl/mod_perl.c?view=diff&rev=109900&p1=perl/modperl/trunk/src/modules/perl/mod_perl.c&r1=109899&p2=perl/modperl/trunk/src/modules/perl/mod_perl.c&r2=109900 ============================================================================== --- perl/modperl/trunk/src/modules/perl/mod_perl.c (original) +++ perl/modperl/trunk/src/modules/perl/mod_perl.c Sun Dec 5 10:55:24 2004 @@ -130,14 +130,26 @@ * the parent process will run the cleanups since server_pool is a subpool * of pconf. we manually clear the server_pool to run cleanups in the * child processes + * + * the "server_user_pool" is a subpool of the "server_pool", this is + * the pool which is exposed to users, so that they can register + * cleanup callbacks. This is needed so that the perl cleanups won't + * be run before user cleanups are executed. + * */ static apr_pool_t *server_pool = NULL; +static apr_pool_t *server_user_pool = NULL; apr_pool_t *modperl_server_pool(void) { return server_pool; } +apr_pool_t *modperl_server_user_pool(void) +{ + return server_user_pool; +} + static void set_taint_var(PerlInterpreter *perl) { dTHXa(perl); @@ -553,6 +565,9 @@ apr_pool_create(&server_pool, pconf); apr_pool_tag(server_pool, "mod_perl server pool"); + + apr_pool_create(&server_user_pool, pconf); + apr_pool_tag(server_user_pool, "mod_perl server user pool"); modperl_sys_init(); apr_pool_cleanup_register(server_pool, NULL, Modified: perl/modperl/trunk/src/modules/perl/mod_perl.h Url: http://svn.apache.org/viewcvs/perl/modperl/trunk/src/modules/perl/mod_perl.h?view=diff&rev=109900&p1=perl/modperl/trunk/src/modules/perl/mod_perl.h&r1=109899&p2=perl/modperl/trunk/src/modules/perl/mod_perl.h&r2=109900 ============================================================================== --- perl/modperl/trunk/src/modules/perl/mod_perl.h (original) +++ perl/modperl/trunk/src/modules/perl/mod_perl.h Sun Dec 5 10:55:24 2004 @@ -120,6 +120,7 @@ apr_pool_t *ptemp); void modperl_register_hooks(apr_pool_t *p); apr_pool_t *modperl_server_pool(void); +apr_pool_t *modperl_server_user_pool(void); PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p); int modperl_perl_destruct_level(void); void xs_init(pTHX); Modified: perl/modperl/trunk/xs/Apache/ServerUtil/Apache__ServerUtil.h Url: http://svn.apache.org/viewcvs/perl/modperl/trunk/xs/Apache/ServerUtil/Apache__ServerUtil.h?view=diff&rev=109900&p1=perl/modperl/trunk/xs/Apache/ServerUtil/Apache__ServerUtil.h&r1=109899&p2=perl/modperl/trunk/xs/Apache/ServerUtil/Apache__ServerUtil.h&r2=109900 ============================================================================== --- perl/modperl/trunk/xs/Apache/ServerUtil/Apache__ServerUtil.h (original) +++ perl/modperl/trunk/xs/Apache/ServerUtil/Apache__ServerUtil.h Sun Dec 5 10:55:24 2004 @@ -15,7 +15,7 @@ #define mpxs_Apache__ServerUtil_restart_count modperl_restart_count -#define mpxs_Apache__ServerUtil_base_server_pool modperl_server_pool +#define mpxs_Apache__ServerUtil_base_server_pool modperl_server_user_pool #define mpxs_Apache__ServerRec_method_register(s, methname) \ ap_method_register(s->process->pconf, methname);