You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by to...@apache.org on 2012/02/07 10:41:54 UTC

svn commit: r1241394 - in /perl/modperl/branches/threading: ./ lib/Apache2/ lib/ModPerl/ src/modules/perl/ t/response/TestDirective/

Author: torsten
Date: Tue Feb  7 09:41:53 2012
New Revision: 1241394

URL: http://svn.apache.org/viewvc?rev=1241394&view=rev
Log:
Merged revisions 1125476,1125479,1145161,1213838,1213841,1213902,1221285,1221359,1222775 via svnmerge from 
https://svn.eu.apache.org/repos/asf/perl/modperl/trunk

........
  r1125476 | torsten | 2011-05-20 19:22:24 +0200 (Fri, 20 May 2011) | 1 line
  
  adopt the Perl_sv_dup() changes in Perl 5.14
........
  r1125479 | torsten | 2011-05-20 19:32:03 +0200 (Fri, 20 May 2011) | 1 line
  
  again, forgot about Changes in commit 1125476
........
  r1145161 | torsten | 2011-07-11 15:07:46 +0200 (Mon, 11 Jul 2011) | 1 line
  
  move <LimitExcept> into a <Directory />. In httpd-2.3 it is not allowed in server config context
........
  r1213838 | gozer | 2011-12-13 19:33:18 +0100 (Tue, 13 Dec 2011) | 3 lines
  
  Avoid -Wall warning when mg_flags isn't used.
........
  r1213841 | gozer | 2011-12-13 19:34:16 +0100 (Tue, 13 Dec 2011) | 5 lines
  
  When generating XS code, include var = var; declarations on the arguments,
  since we don't know if they will be used, and we want to keep -Wall builds
  succeeding.
........
  r1213902 | gozer | 2011-12-13 21:04:15 +0100 (Tue, 13 Dec 2011) | 3 lines
  
  Silence a compiler warning when MP_TRACE is not enabled
........
  r1221285 | gozer | 2011-12-20 15:40:21 +0100 (Tue, 20 Dec 2011) | 6 lines
  
  Adjust for latest ExtUtils::MakeMaker internal change. We must call init_tools when
  it is available.
  
  Reference: https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/f4904b4ce499b7f0c420efae69f44e19fe7dd12f
........
  r1221359 | gozer | 2011-12-20 18:22:31 +0100 (Tue, 20 Dec 2011) | 7 lines
  
  Apache 2.4 and onwards doesn't require linking the MPM module directly in
  the httpd binary anymore. APXS lost the MPM_NAME query, so we can't assume
  a given MPM anymore. Introduce a fake MPM 'dynamic' to represent this. 
  
  Borrowed from the 2.4 branch
........
  r1222775 | gozer | 2011-12-23 19:20:27 +0100 (Fri, 23 Dec 2011) | 3 lines
  
  Discover apr-2-config from Apache 2.4 onwards.
........

Modified:
    perl/modperl/branches/threading/   (props changed)
    perl/modperl/branches/threading/Changes
    perl/modperl/branches/threading/lib/Apache2/Build.pm
    perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm
    perl/modperl/branches/threading/src/modules/perl/mod_perl.c
    perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c
    perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c
    perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm

Propchange: perl/modperl/branches/threading/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb  7 09:41:53 2012
@@ -1 +1 @@
-/perl/modperl/trunk:594682-672484,672819-681118,693357,700369,732889-736218,751909-752425,757553-774171,807116,807332-807649,907778-932879,933373-933563,935519,936643,940287,957309-983073,985740,987933-1023553,1029211-1052232,1062311-1062448,1066644-1074122,1076733,1083541,1089349-1096565,1124132
+/perl/modperl/trunk:594682-672484,672819-681118,693357,700369,732889-736218,751909-752425,757553-774171,807116,807332-807649,907778-932879,933373-933563,935519,936643,940287,957309-983073,985740,987933-1023553,1029211-1052232,1062311-1062448,1066644-1074122,1076733,1083541,1089349-1096565,1124132,1125476-1145161,1213838-1222775

Propchange: perl/modperl/branches/threading/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Feb  7 09:41:53 2012
@@ -1 +1 @@
-/perl/modperl/trunk:1-712967,712969-1125405
+/perl/modperl/trunk:1-712967,712969-1241385

Modified: perl/modperl/branches/threading/Changes
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/Changes?rev=1241394&r1=1241393&r2=1241394&view=diff
==============================================================================
--- perl/modperl/branches/threading/Changes (original)
+++ perl/modperl/branches/threading/Changes Tue Feb  7 09:41:53 2012
@@ -31,6 +31,17 @@ Expose modperl_interp_t via ModPerl::Int
 
 =item 2.0.6-dev
 
+Discover apr-2-config from Apache 2.4 onwards. [Gozer]
+
+Apache 2.4 and onwards doesn't require linking the MPM module directly in
+the httpd binary anymore. APXS lost the MPM_NAME query, so we can't assume
+a given MPM anymore. Introduce a fake MPM 'dynamic' to represent this. 
+[Torsten Foertsch, Gozer]
+
+Perl 5.14 brought a few changes in Perl_sv_dup() that made a threaded apache
+segfault while cloning interpreters.
+[Torsten Foertsch]
+
 PerlIOApache_flush() and mpxs_Apache2__RequestRec_rflush() now no longer throw
 exceptions when modperl_wbucket_flush() fails if the failure was just a reset
 connection or an aborted connection. The failure is simply logged to the error

Modified: perl/modperl/branches/threading/lib/Apache2/Build.pm
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/lib/Apache2/Build.pm?rev=1241394&r1=1241393&r2=1241394&view=diff
==============================================================================
--- perl/modperl/branches/threading/lib/Apache2/Build.pm (original)
+++ perl/modperl/branches/threading/lib/Apache2/Build.pm Tue Feb  7 09:41:53 2012
@@ -277,7 +277,8 @@ sub caller_package {
 }
 
 my %threaded_mpms = map { $_ => 1 }
-        qw(worker winnt beos mpmt_os2 netware leader perchild threadpool);
+        qw(worker winnt beos mpmt_os2 netware leader perchild threadpool
+           dynamic);
 sub mpm_is_threaded {
     my $self = shift;
     my $mpm_name = $self->mpm_name();
@@ -292,7 +293,15 @@ sub mpm_name {
     # XXX: hopefully apxs will work on win32 one day
     return $self->{mpm_name} = 'winnt' if WIN32;
 
-    my $mpm_name = $self->apxs('-q' => 'MPM_NAME');
+    my $mpm_name;
+
+    # httpd >= 2.3
+    if ($self->httpd_version_as_int =~ m/^2[3-9]\d+/) {
+        $mpm_name = 'dynamic';
+    }
+    else {
+        $mpm_name = $self->apxs('-q' => 'MPM_NAME');
+    }
 
     # building against the httpd source dir
     unless (($mpm_name and $self->httpd_is_source_tree)) {
@@ -1145,7 +1154,18 @@ sub apr_bindir {
 
 sub apr_generation {
     my ($self) = @_;
-    return $self->httpd_version_as_int =~ m/2[1-9]\d+/ ? 1 : 0;
+
+    my $httpd_v = $self->httpd_version_as_int;
+
+    if ($httpd_v =~ m/2[4-9]\d+/) {
+        return 2;
+    }
+    elsif ($httpd_v =~ m/2[1-3]\d+/) {
+        return 1;
+    }
+    else {
+        return;
+    }
 }
 
 # returns an array of apr/apu linking flags (--link-ld --libs) if found
@@ -1205,7 +1225,8 @@ sub apru_config_path {
         $self->{$key} = $self->{$mp_key};
     }
 
-    my $config = $self->apr_generation ? "$what-1-config" : "$what-config";
+    my $apr_generation = $self->apr_generation;
+    my $config = $apr_generation ? "$what-${apr_generation}-config" : "$what-config";
 
     if (!$self->{$key}) {
         my @tries = ();
@@ -1573,8 +1594,11 @@ sub make_tools {
 
     require ExtUtils::MakeMaker;
     my $mm = bless { @mm_init_vars }, 'MM';
-    $mm->init_main;
-    $mm->init_others;
+
+    # Fake initialize MakeMaker
+    foreach my $m (qw(init_main init_others init_tools)) {
+        $mm->$m() if $mm->can($m);
+    }
 
     for (qw(rm_f mv ld ar cp test_f)) {
         my $val = $mm->{"\U$_"};

Modified: perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm?rev=1241394&r1=1241393&r2=1241394&view=diff
==============================================================================
--- perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm (original)
+++ perl/modperl/branches/threading/lib/ModPerl/WrapXS.pm Tue Feb  7 09:41:53 2012
@@ -156,9 +156,16 @@ EOF
 
             my $retval = $return_type eq 'void' ?
               ["", ""] : ["RETVAL = ", "OUTPUT:\n    RETVAL\n"];
-
+            
+            my $avoid_warning = "";
+            if (@$args and not $passthru) {
+                $avoid_warning = "    /* avoiding -Wall warnings */\n";
+                $avoid_warning .= join "\n",
+                    (map "    $_->{name} = $_->{name};", @$args), "";
+            }
             $code .= <<EOF;
     CODE:
+$avoid_warning
     $retval->[0]$dispatch($thx$parms);
 
     $retval->[1]

Modified: perl/modperl/branches/threading/src/modules/perl/mod_perl.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/mod_perl.c?rev=1241394&r1=1241393&r2=1241394&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/mod_perl.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/mod_perl.c Tue Feb  7 09:41:53 2012
@@ -440,13 +440,13 @@ int modperl_init_vhost(server_rec *s, ap
 void modperl_init(server_rec *base_server, apr_pool_t *p)
 {
     server_rec *s;
-    modperl_config_srv_t *base_scfg;
     PerlInterpreter *base_perl;
-
-    base_scfg = modperl_config_srv_get(base_server);
+#ifdef MP_TRACE
+    modperl_config_srv_t *base_scfg = modperl_config_srv_get(base_server);
 
     MP_TRACE_d_do(MpSrv_dump_flags(base_scfg,
                                    base_server->server_hostname));
+#endif /* MP_TRACE */
 
 #ifndef USE_ITHREADS
     if (modperl_threaded_mpm()) {

Modified: perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c?rev=1241394&r1=1241393&r2=1241394&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_perl_global.c Tue Feb  7 09:41:53 2012
@@ -338,6 +338,9 @@ modperl_perl_global_gvhv_restore(pTHX_ m
      */
     MP_magical_untie(gvhv->tmphv, mg_flags);
     SvREFCNT_dec(gvhv->tmphv);
+
+    /* avoiding -Wall warning */
+    mg_flags = mg_flags;
 }
 
 static void

Modified: perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c?rev=1241394&r1=1241393&r2=1241394&view=diff
==============================================================================
--- perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c (original)
+++ perl/modperl/branches/threading/src/modules/perl/modperl_svptr_table.c Tue Feb  7 09:41:53 2012
@@ -30,7 +30,7 @@
 #ifdef USE_ITHREADS
 
 #if MP_PERL_BRANCH(5, 6)
-#   define my_sv_dup(s, p) sv_dup(s)
+#   define my_sv_dup(s, p) SvREFCNT_inc(sv_dup(s))
 
 typedef struct {
     AV *stashes;
@@ -39,7 +39,11 @@ typedef struct {
 } CLONE_PARAMS;
 
 #else
-#   define my_sv_dup(s, p) sv_dup(s, p)
+#   ifdef sv_dup_inc
+#       define my_sv_dup(s, p) sv_dup_inc(s, p)
+#   else
+#       define my_sv_dup(s, p) SvREFCNT_inc(sv_dup(s, p))
+#   endif
 #endif
 
 /*
@@ -89,8 +93,7 @@ PTR_TBL_t *modperl_svptr_table_clone(pTH
             /* key is just a pointer we do not modify, no need to copy */
             dst_ent->oldval = src_ent->oldval;
 
-            dst_ent->newval =
-                SvREFCNT_inc(my_sv_dup((SV*)src_ent->newval, &parms));
+            dst_ent->newval = my_sv_dup((SV*)src_ent->newval, &parms);
         }
     }
 

Modified: perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm?rev=1241394&r1=1241393&r2=1241394&view=diff
==============================================================================
--- perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm (original)
+++ perl/modperl/branches/threading/t/response/TestDirective/cmdparms.pm Tue Feb  7 09:41:53 2012
@@ -135,6 +135,8 @@ TestCmdParms "Vhost"
 
 TestCmdParms "Location"
 
-<LimitExcept GET>
-    TestCmdParms "Limit"
-</LimitExcept>
+<Directory />
+    <LimitExcept GET>
+        TestCmdParms "Limit"
+    </LimitExcept>
+</Directory>