You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Jeff Trawick <tr...@gmail.com> on 2014/02/20 13:52:34 UTC

modules calling ap_lingering_close()!!!

WSGI 3.4 daemon mode crashing with httpd 2.4.x...

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xaef17b70 (LWP 32761)]
0x08078a32 in update_child_status_internal ()
(gdb) where
#0  0x08078a32 in update_child_status_internal ()
#1  0x0809952d in ap_start_lingering_close ()
#2  0x080995a9 in ap_lingering_close ()
#3  0xb72d71c0 in wsgi_process_socket () from /usr/local/modules/mod_wsgi.so
#4  0xb72dadbd in wsgi_daemon_thread () from /usr/local/modules/mod_wsgi.so
#5  0xb772ec36 in dummy_worker () from /usr/local/lib/libapr-1.so.0
#6  0xb76b896e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#7  0xb7620ffe in clone () from /lib/tls/i686/cmov/libc.so.6

I'm just expressing surprise and giving a hint at the moment ;)  Maybe I'll
find time soon to look in detail.

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Re: modules calling ap_lingering_close()!!!

Posted by Jim Jagielski <ji...@jaguNET.com>.
Seems to me that they could also use that "slave" connection
just added to trunk ;)

That's 2 useful modules (mod_spdy and wsgi) that provide
some clues on what's needed to "break out" connections
from requests.

PS: An mpm should also provide an API to spin-out a thread...

On Feb 20, 2014, at 10:23 AM, Joe Orton <jo...@redhat.com> wrote:

> On Thu, Feb 20, 2014 at 07:52:34AM -0500, Jeff Trawick wrote:
>> WSGI 3.4 daemon mode crashing with httpd 2.4.x...
>> 
>> Program received signal SIGSEGV, Segmentation fault.
>> [Switching to Thread 0xaef17b70 (LWP 32761)]
>> 0x08078a32 in update_child_status_internal ()
>> (gdb) where
>> #0  0x08078a32 in update_child_status_internal ()
>> #1  0x0809952d in ap_start_lingering_close ()
>> #2  0x080995a9 in ap_lingering_close ()
> 
> Fixed in:
> 
> http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=bdbeacb88f348909845445e9d52eb7be401abaf1
> 
> mod_wsgi does some surprising things with httpd interfaces which should 
> probably be internal-only, or at least better documented API!
> 
> Regards, Joe
> 


Re: modules calling ap_lingering_close()!!!

Posted by Jeff Trawick <tr...@gmail.com>.
On Thu, Feb 20, 2014 at 10:23 AM, Joe Orton <jo...@redhat.com> wrote:

> On Thu, Feb 20, 2014 at 07:52:34AM -0500, Jeff Trawick wrote:
> > WSGI 3.4 daemon mode crashing with httpd 2.4.x...
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > [Switching to Thread 0xaef17b70 (LWP 32761)]
> > 0x08078a32 in update_child_status_internal ()
> > (gdb) where
> > #0  0x08078a32 in update_child_status_internal ()
> > #1  0x0809952d in ap_start_lingering_close ()
> > #2  0x080995a9 in ap_lingering_close ()
>
> Fixed in:
>
>
> http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=bdbeacb88f348909845445e9d52eb7be401abaf1
>
> mod_wsgi does some surprising things with httpd interfaces which should
> probably be internal-only, or at least better documented API!
>
> Regards, Joe
>

Thanks!

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Re: modules calling ap_lingering_close()!!!

Posted by Jeff Trawick <tr...@gmail.com>.
On Thu, Feb 20, 2014 at 6:24 PM, Graham Dumpleton <
graham.dumpleton@gmail.com> wrote:

>
>
>
> On 21 February 2014 02:23, Joe Orton <jo...@redhat.com> wrote:
>
>> On Thu, Feb 20, 2014 at 07:52:34AM -0500, Jeff Trawick wrote:
>> > WSGI 3.4 daemon mode crashing with httpd 2.4.x...
>> >
>> > Program received signal SIGSEGV, Segmentation fault.
>> > [Switching to Thread 0xaef17b70 (LWP 32761)]
>> > 0x08078a32 in update_child_status_internal ()
>> > (gdb) where
>> > #0  0x08078a32 in update_child_status_internal ()
>> > #1  0x0809952d in ap_start_lingering_close ()
>> > #2  0x080995a9 in ap_lingering_close ()
>>
>> Fixed in:
>>
>>
>> http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=bdbeacb88f348909845445e9d52eb7be401abaf1
>>
>> mod_wsgi does some surprising things with httpd interfaces which should
>> probably be internal-only, or at least better documented API!
>>
>
> Crap. I thought those httpd 2.4 fixes were already in mod_wsgi 3.4.
>
> Another reason I have to get off my backside and release an updated
> version. Has been too long.
>

<2.4-nag>https://code.google.com/p/modwsgi/issues/detail?id=292</2.4-nag> (
:) )

>
> And yes mod_wsgi does lots of evil things which no doubt would be regarded
> as evil. Most come from daemon mode. One day I will simply rewrite daemon
> mode request handling to not be dependent on Apache request structures and
> then it will not be so bad.
>
> Graham
>
>


-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Re: modules calling ap_lingering_close()!!!

Posted by Joe Orton <jo...@redhat.com>.
On Fri, Feb 21, 2014 at 10:24:25AM +1100, Graham Dumpleton wrote:
> Crap. I thought those httpd 2.4 fixes were already in mod_wsgi 3.4.
> 
> Another reason I have to get off my backside and release an updated
> version. Has been too long.

That would be very useful!

> And yes mod_wsgi does lots of evil things which no doubt would be regarded
> as evil. Most come from daemon mode. One day I will simply rewrite daemon
> mode request handling to not be dependent on Apache request structures and
> then it will not be so bad.

I don't think it is that bad, but since few other third-party modules 
use the API like that, it's a going to be a bit fragile.

Regards, Joe

Re: modules calling ap_lingering_close()!!!

Posted by Graham Dumpleton <gr...@gmail.com>.
On 21 February 2014 02:23, Joe Orton <jo...@redhat.com> wrote:

> On Thu, Feb 20, 2014 at 07:52:34AM -0500, Jeff Trawick wrote:
> > WSGI 3.4 daemon mode crashing with httpd 2.4.x...
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > [Switching to Thread 0xaef17b70 (LWP 32761)]
> > 0x08078a32 in update_child_status_internal ()
> > (gdb) where
> > #0  0x08078a32 in update_child_status_internal ()
> > #1  0x0809952d in ap_start_lingering_close ()
> > #2  0x080995a9 in ap_lingering_close ()
>
> Fixed in:
>
>
> http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=bdbeacb88f348909845445e9d52eb7be401abaf1
>
> mod_wsgi does some surprising things with httpd interfaces which should
> probably be internal-only, or at least better documented API!
>

Crap. I thought those httpd 2.4 fixes were already in mod_wsgi 3.4.

Another reason I have to get off my backside and release an updated
version. Has been too long.

And yes mod_wsgi does lots of evil things which no doubt would be regarded
as evil. Most come from daemon mode. One day I will simply rewrite daemon
mode request handling to not be dependent on Apache request structures and
then it will not be so bad.

Graham

Re: modules calling ap_lingering_close()!!!

Posted by Rainer Jung <ra...@kippdata.de>.
On 20.02.2014 18:24, Jeff Trawick wrote:

> BTW, do you know if there's a known collection of patches for 2.4
> support or for other critical fixes?  

mod_wsgi is running on eos and reliably serves wiki.apache.org using the
following patch on top of 3.4 in combination with 2.4.4, 2.4.6 and 2.4.6
(over the months):

--- mod_wsgi.c     2012-08-23 03:10:44.000000000 +0000
+++ mod_wsgi.c  2013-05-01 17:40:01.083241157 +0000
@@ -10600,7 +10600,13 @@
      * will add their own input/output filters to the chain.
      */

+#if AP_MODULE_MAGIC_AT_LEAST(20110619,0)
+    /* For 2.4 a NULL sbh pointer should work. */
+    sbh = NULL;
+#else
+    /* For 2.2 a dummy sbh pointer is needed. */
     ap_create_sb_handle(&sbh, p, -1, 0);
+#endif

     c = (conn_rec *)apr_pcalloc(p, sizeof(conn_rec));

@@ -12873,8 +12879,10 @@
      * here for status but Apache 2.4 prohibits it now.
      */

-    if (r->status == 200 && !strcmp(r->status_line, "200 Error"))
+    if (r->status == 200 && !strcmp(r->status_line, "200 Error")) {
+        r->status_line = NULL;
         return HTTP_INTERNAL_SERVER_ERROR;
+    }

     /*
      * Look for 'Location' header and if an internal


Regards,

Rainer

Re: modules calling ap_lingering_close()!!!

Posted by Joe Orton <jo...@redhat.com>.
On Thu, Feb 20, 2014 at 12:24:23PM -0500, Jeff Trawick wrote:
> BTW, do you know if there's a known collection of patches for 2.4 support
> or for other critical fixes?

This shows what we have in Fedora, FWIW:

http://pkgs.fedoraproject.org/cgit/mod_wsgi.git/tree/

... all of which are in the upstream hg tree, except for the Python3 
change which might not be.

Regards, Joe

Re: modules calling ap_lingering_close()!!!

Posted by Jeff Trawick <tr...@gmail.com>.
On Thu, Feb 20, 2014 at 10:23 AM, Joe Orton <jo...@redhat.com> wrote:

> On Thu, Feb 20, 2014 at 07:52:34AM -0500, Jeff Trawick wrote:
> > WSGI 3.4 daemon mode crashing with httpd 2.4.x...
> >
> > Program received signal SIGSEGV, Segmentation fault.
> > [Switching to Thread 0xaef17b70 (LWP 32761)]
> > 0x08078a32 in update_child_status_internal ()
> > (gdb) where
> > #0  0x08078a32 in update_child_status_internal ()
> > #1  0x0809952d in ap_start_lingering_close ()
> > #2  0x080995a9 in ap_lingering_close ()
>
> Fixed in:
>
>
> http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=bdbeacb88f348909845445e9d52eb7be401abaf1
>
> mod_wsgi does some surprising things with httpd interfaces which should
> probably be internal-only, or at least better documented API!
>
> Regards, Joe
>

BTW, do you know if there's a known collection of patches for 2.4 support
or for other critical fixes?

-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Re: modules calling ap_lingering_close()!!!

Posted by Jim Jagielski <ji...@jaguNET.com>.
That looks like an *old* diff/patch, fwiw.

On Feb 20, 2014, at 10:23 AM, Joe Orton <jo...@redhat.com> wrote:

> On Thu, Feb 20, 2014 at 07:52:34AM -0500, Jeff Trawick wrote:
>> WSGI 3.4 daemon mode crashing with httpd 2.4.x...
>> 
>> Program received signal SIGSEGV, Segmentation fault.
>> [Switching to Thread 0xaef17b70 (LWP 32761)]
>> 0x08078a32 in update_child_status_internal ()
>> (gdb) where
>> #0  0x08078a32 in update_child_status_internal ()
>> #1  0x0809952d in ap_start_lingering_close ()
>> #2  0x080995a9 in ap_lingering_close ()
> 
> Fixed in:
> 
> http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=bdbeacb88f348909845445e9d52eb7be401abaf1
> 
> mod_wsgi does some surprising things with httpd interfaces which should 
> probably be internal-only, or at least better documented API!
> 
> Regards, Joe
> 


Re: modules calling ap_lingering_close()!!!

Posted by Joe Orton <jo...@redhat.com>.
On Thu, Feb 20, 2014 at 07:52:34AM -0500, Jeff Trawick wrote:
> WSGI 3.4 daemon mode crashing with httpd 2.4.x...
> 
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0xaef17b70 (LWP 32761)]
> 0x08078a32 in update_child_status_internal ()
> (gdb) where
> #0  0x08078a32 in update_child_status_internal ()
> #1  0x0809952d in ap_start_lingering_close ()
> #2  0x080995a9 in ap_lingering_close ()

Fixed in:

http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=bdbeacb88f348909845445e9d52eb7be401abaf1

mod_wsgi does some surprising things with httpd interfaces which should 
probably be internal-only, or at least better documented API!

Regards, Joe