[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#697929: marked as done (unblock: libapache2-mod-perl2/2.0.7-2)



Your message dated Fri, 11 Jan 2013 14:12:36 +0000
with message-id <1357913556.32456.11.camel@jacala.jungle.funky-badger.org>
and subject line Re: Bug#697929: unblock: libapache2-mod-perl2/2.0.7-2
has caused the Debian Bug report #697929,
regarding unblock: libapache2-mod-perl2/2.0.7-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
697929: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=697929
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package libapache2-mod-perl2

This fixes a sporadic FTBFS bug. I assume you'd like to have this in
wheezy to avoid it causing problems during security updates/point releases.

Patch attached

unblock libapache2-mod-perl2/2.0.7-2
diff -Nru libapache2-mod-perl2-2.0.7/debian/changelog libapache2-mod-perl2-2.0.7/debian/changelog
--- libapache2-mod-perl2-2.0.7/debian/changelog	2012-06-07 18:51:39.000000000 +0100
+++ libapache2-mod-perl2-2.0.7/debian/changelog	2013-01-05 18:27:30.000000000 +0000
@@ -1,3 +1,10 @@
+libapache2-mod-perl2 (2.0.7-2) unstable; urgency=low
+
+  * Apply patch from Zefram fixing occasional FTBFS due to
+    pipelined response deadlock (Closes: #676754)
+
+ -- Dominic Hargreaves <dom@earth.li>  Sat, 05 Jan 2013 18:27:29 +0000
+
 libapache2-mod-perl2 (2.0.7-1) unstable; urgency=low
 
   * New upstream release
diff -Nru libapache2-mod-perl2-2.0.7/debian/patches/260_fix_pipelined_response_deadlock.patch libapache2-mod-perl2-2.0.7/debian/patches/260_fix_pipelined_response_deadlock.patch
--- libapache2-mod-perl2-2.0.7/debian/patches/260_fix_pipelined_response_deadlock.patch	1970-01-01 01:00:00.000000000 +0100
+++ libapache2-mod-perl2-2.0.7/debian/patches/260_fix_pipelined_response_deadlock.patch	2013-01-04 23:47:05.000000000 +0000
@@ -0,0 +1,111 @@
+Subject: pipelined response deadlock
+Date: Fri, 4 Jan 2013 16:27:07 +0000
+From:  Zefram <zefram [...] fysh.org>
+
+There's a race condition that can cause mod_perl's test suite to hang
+in t/filter/in_str_declined.t.  The problem is that the response handler
+starts generating response body, and so triggers header output, before
+it reads the request body.  If LWP::Protocol::http, which is the client
+for this test, receives a complete set of response headers, it will stop
+sending the request body.  (However, if the request body is no more than
+8192 octets then it will send the whole body before it starts looking
+for a response.  The failure only shows up with an appreciably large
+request body.)
+
+RFC 2616 doesn't explicitly address this sort of pipelining, but the
+start of section 6 does say "After receiving and interpreting a request
+message, a server responds with an HTTP response message.", which can be
+read as prohibiting sending any part of the response before the entire
+request has been received.
+
+The attached patch fixes this issue by making all the POST handlers in
+the test suite read the body before doing anything that generates output
+(specifically plan()).
+
+-zefram
+
+Bug-Debian: http://bugs.debian.org/676754
+Bug: https://rt.cpan.org/Public/Bug/Display.html?id=82409
+Origin: https://rt.cpan.org/Public/Bug/Display.html?id=82409
+
+--- a/t/filter/TestFilter/in_str_declined.pm	2011-02-08 02:00:11.000000000 +0000
++++ b/t/filter/TestFilter/in_str_declined.pm	2013-01-04 16:08:14.000000000 +0000
+@@ -35,13 +35,17 @@
+ sub response {
+     my $r = shift;
+ 
++    my $data;
++    if ($r->method_number == Apache2::Const::M_POST) {
++        # consume the data so the input filter is invoked
++        $data = TestCommon::Utils::read_post($r);
++    }
++
+     plan $r, tests => 2;
+ 
+     $r->content_type('text/plain');
+ 
+     if ($r->method_number == Apache2::Const::M_POST) {
+-        # consume the data so the input filter is invoked
+-        my $data = TestCommon::Utils::read_post($r);
+         ok t_cmp(length $data, 20000, "the request body received ok");
+     }
+ 
+--- a/t/filter/TestFilter/in_str_declined_read.pm	2011-02-08 02:00:11.000000000 +0000
++++ b/t/filter/TestFilter/in_str_declined_read.pm	2013-01-04 16:06:28.000000000 +0000
+@@ -31,14 +31,19 @@
+ sub response {
+     my $r = shift;
+ 
++    my $err;
++    if ($r->method_number == Apache2::Const::M_POST) {
++        # this should fail, because of the failing filter
++        eval { TestCommon::Utils::read_post($r) };
++        $err = $@;
++    }
++
+     plan $r, tests => 1;
+ 
+     $r->content_type('text/plain');
+ 
+     if ($r->method_number == Apache2::Const::M_POST) {
+-        # this should fail, because of the failing filter
+-        eval { TestCommon::Utils::read_post($r) };
+-        ok $@;
++        ok $err;
+     }
+ 
+     Apache2::Const::OK;
+--- a/t/filter/TestFilter/in_str_msg.pm	2011-02-08 02:00:11.000000000 +0000
++++ b/t/filter/TestFilter/in_str_msg.pm	2013-01-04 16:08:27.000000000 +0000
+@@ -76,10 +76,10 @@
+ sub response {
+     my $r = shift;
+ 
+-    plan $r, tests => 1;
+-
+     my $received = TestCommon::Utils::read_post($r);
+ 
++    plan $r, tests => 1;
++
+     ok t_cmp($received, $expected,
+              "request filter must have upcased the data");
+ 
+--- a/t/response/TestModperl/post_utf8.pm	2011-02-08 02:00:12.000000000 +0000
++++ b/t/response/TestModperl/post_utf8.pm	2013-01-04 16:04:39.000000000 +0000
+@@ -29,14 +29,14 @@
+ #    $r->content_type("text/plain; charset=utf-8");
+ #    $r->print("expected: $expected_utf8\n");
+ 
++    my $received = TestCommon::Utils::read_post($r) || "";
++
+     # utf encode/decode was added only in 5.8.0
+     # XXX: currently binmode is only available with perlio (used on the
+     # server side on the tied/perlio STDOUT)
+     plan $r, tests => 2,
+         need need_min_perl_version(5.008), need_perl('perlio');
+ 
+-    my $received = TestCommon::Utils::read_post($r) || "";
+-
+     # workaround for perl-5.8.0, which doesn't decode correctly a
+     # tainted variable
+     require ModPerl::Util;
diff -Nru libapache2-mod-perl2-2.0.7/debian/patches/series libapache2-mod-perl2-2.0.7/debian/patches/series
--- libapache2-mod-perl2-2.0.7/debian/patches/series	2012-05-19 18:38:42.000000000 +0100
+++ libapache2-mod-perl2-2.0.7/debian/patches/series	2013-01-05 18:20:16.000000000 +0000
@@ -10,3 +10,4 @@
 210_fix-pod-errors.patch
 220_fix-bad-whatis-entry.patch
 250-lfs-perl-5.14.patch
+260_fix_pipelined_response_deadlock.patch

--- End Message ---
--- Begin Message ---
On Fri, 2013-01-11 at 13:52 +0000, Dominic Hargreaves wrote:
> Please unblock package libapache2-mod-perl2
> 
> This fixes a sporadic FTBFS bug. I assume you'd like to have this in
> wheezy to avoid it causing problems during security updates/point releases.

Unblocked; thanks.

Regards,

Adam

--- End Message ---

Reply to: