Package: apache2 User: [EMAIL PROTECTED] Usertags: origin-ubuntu hardy ubuntu-patch Version: 2.2.8-4 Severity: important Tags: patch
When torture testing an apache2-mpm-worker I get numerous segmentation faults and sigbus errors: [Tue May 27 14:16:40 2008] [notice] child pid 8848 exit signal Segmentation fault (11) [Tue May 27 14:18:35 2008] [notice] child pid 9075 exit signal Segmentation fault (11) [Tue May 27 14:19:37 2008] [notice] child pid 9159 exit signal Segmentation fault (11) [Tue May 27 14:19:37 2008] [notice] child pid 9215 exit signal Segmentation fault (11) [Tue May 27 14:20:19 2008] [notice] child pid 9495 exit signal Segmentation fault (11) [Tue May 27 14:22:52 2008] [notice] child pid 9523 exit signal Segmentation fault (11) See: * https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/235294 Fix is commited in the apache cvs and in Ubuntu, we've applied the attached patch to achieve the following: * debian/patches/100_mpm_wokers_crash.dpatch - Fix for segmentation fault with mpm-worker is under load. Backported from http://svn.apache.org/viewvc?view=rev&revision=631362. (LP: #235294) We thought you might be interested in doing the same. -- System Information: Debian Release: lenny/sid APT prefers hardy-updates APT policy: (500, 'hardy-updates'), (500, 'hardy-security'), (500, 'hardy') Architecture: amd64 (x86_64) Kernel: Linux 2.6.24-18-generic (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash -- :-Dustin Dustin Kirkland Ubuntu Server Developer Canonical, LTD [EMAIL PROTECTED] GPG: 1024D/83A61194
diff -u apache2-2.2.8/debian/patches/00list apache2-2.2.8/debian/patches/00list --- apache2-2.2.8/debian/patches/00list +++ apache2-2.2.8/debian/patches/00list @@ -24,0 +25 @@ +100_mpm_wokers_crash.dpatch only in patch2: unchanged: --- apache2-2.2.8.orig/debian/patches/100_mpm_wokers_crash.dpatch +++ apache2-2.2.8/debian/patches/100_mpm_wokers_crash.dpatch @@ -0,0 +1,46 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run + [EMAIL PROTECTED]@ +diff -Naur httpd-2.2.8.orig/server/mpm/experimental/event/fdqueue.c httpd-2.2.8/server/mpm/experimental/event/fdqueue.c +--- httpd-2.2.8.orig/server/mpm/experimental/event/fdqueue.c 2007-07-25 09:13:49.000000000 -0400 ++++ httpd-2.2.8/server/mpm/experimental/event/fdqueue.c 2008-05-20 03:18:03.000000000 -0400 +@@ -194,10 +194,16 @@ + (*new_recycle)); + new_recycle->pool = pool_to_recycle; + for (;;) { +- new_recycle->next = queue_info->recycled_pools; ++ /* ++ * Save queue_info->recycled_pool in local varaible next because ++ * new_recycle->next can be changed after apr_atomic_casptr ++ * function call. For gory details see PR 4402. ++ */ ++ struct recycled_pool *next = queue_info->recycled_pools; ++ new_recycle->next = next; + if (apr_atomic_casptr + ((volatile void **) &(queue_info->recycled_pools), +- new_recycle, new_recycle->next) == new_recycle->next) { ++ new_recycle, next) == next) { + break; + } + } +diff -Naur httpd-2.2.8.orig/server/mpm/worker/fdqueue.c httpd-2.2.8/server/mpm/worker/fdqueue.c +--- httpd-2.2.8.orig/server/mpm/worker/fdqueue.c 2007-07-25 09:13:49.000000000 -0400 ++++ httpd-2.2.8/server/mpm/worker/fdqueue.c 2008-05-20 03:12:43.000000000 -0400 +@@ -94,10 +94,14 @@ + sizeof(*new_recycle)); + new_recycle->pool = pool_to_recycle; + for (;;) { +- new_recycle->next = queue_info->recycled_pools; ++ /* Save queue_info->recycled_pool in local variable next because ++ * new_recycle->next can be changed after apr_atomic_casptr ++ * function call. For gory details see PR 44402. ++ */ ++ struct recycled_pool *next = queue_info->recycled_pools; ++ new_recycle->next = next; + if (apr_atomic_casptr((volatile void**)&(queue_info->recycled_pools), +- new_recycle, new_recycle->next) == +- new_recycle->next) { ++ new_recycle, next) == next) { + break; + } + }
signature.asc
Description: This is a digitally signed message part