diff --git a/mod_wsgi-3.4-coredump.patch b/mod_wsgi-3.4-coredump.patch new file mode 100644 index 0000000..58b67e4 --- /dev/null +++ b/mod_wsgi-3.4-coredump.patch @@ -0,0 +1,42 @@ +--- mod_wsgi-3.4/configure.ac.dumpcore ++++ mod_wsgi-3.4/configure.ac +@@ -39,6 +39,8 @@ fi + + AC_SUBST(APXS) + ++AC_CHECK_FUNCS(prctl) ++ + AC_MSG_CHECKING(Apache version) + HTTPD="`${APXS} -q SBINDIR`/`${APXS} -q TARGET`" + HTTPD_INCLUDEDIR="`${APXS} -q INCLUDEDIR`" +--- mod_wsgi-3.4/mod_wsgi.c.coredump ++++ mod_wsgi-3.4/mod_wsgi.c +@@ -139,6 +139,10 @@ typedef regmatch_t ap_regmatch_t; + #include + #endif + ++#ifdef HAVE_SYS_PRCTL_H ++#include ++#endif ++ + #include "Python.h" + + #if !defined(PY_VERSION_HEX) +@@ -10485,6 +10489,17 @@ static void wsgi_setup_access(WSGIDaemon + "mod_wsgi (pid=%d): Unable to change to uid=%ld.", + getpid(), (long)daemon->group->uid); + } ++ ++#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE) ++ /* this applies to Linux 2.4+ */ ++ if (ap_coredumpdir_configured) { ++ if (prctl(PR_SET_DUMPABLE, 1)) { ++ ap_log_error(APLOG_MARK, WSGI_LOG_ALERT(errno), wsgi_server, ++ "mod_wsgi (pid=%d): set dumpable failed - this child will not coredump" ++ " after software errors", getpid()); ++ } ++ } ++#endif + } + + static int wsgi_setup_socket(WSGIProcessGroup *process) diff --git a/mod_wsgi-3.4-procexit.patch b/mod_wsgi-3.4-procexit.patch index 6737f2c..fc23c96 100644 --- a/mod_wsgi-3.4-procexit.patch +++ b/mod_wsgi-3.4-procexit.patch @@ -5,14 +5,14 @@ "Process '%s' has died, restarting.", daemon->process.pid, daemon->group->name); + if (WIFEXITED(status)) { -+ ap_log_error(APLOG_MARK, WSGI_LOG_DEBUG(0), ++ ap_log_error(APLOG_MARK, WSGI_LOG_INFO(0), + wsgi_server, "mod_wsgi (pid=%d): " + "Process '%s' terminated normally, exit code %d", + daemon->process.pid, daemon->group->name, + WEXITSTATUS(status)); + } + else if (WIFSIGNALED(status)) { -+ ap_log_error(APLOG_MARK, WSGI_LOG_DEBUG(0), ++ ap_log_error(APLOG_MARK, WSGI_LOG_INFO(0), + wsgi_server, "mod_wsgi (pid=%d): " + "Process '%s' terminated by signal %d", + daemon->process.pid, daemon->group->name, diff --git a/mod_wsgi.spec b/mod_wsgi.spec index e58c345..683b0c5 100644 --- a/mod_wsgi.spec +++ b/mod_wsgi.spec @@ -6,7 +6,7 @@ Name: mod_wsgi Version: 3.4 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A WSGI interface for Python web applications in Apache Group: System Environment/Libraries @@ -16,10 +16,10 @@ Source0: http://modwsgi.googlecode.com/files/%{name}-%{version}.tar.gz Source1: wsgi.conf Patch0: mod_wsgi-3.4-connsbh.patch Patch1: mod_wsgi-3.4-procexit.patch +Patch2: mod_wsgi-3.4-coredump.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: httpd-devel -BuildRequires: python-devel +BuildRequires: httpd-devel, python-devel, autoconf Requires: httpd-mmn = %{_httpd_mmn} %description @@ -34,8 +34,10 @@ existing WSGI adapters for mod_python or CGI. %setup -q %patch0 -p1 -b .connsbh %patch1 -p1 -b .procexit +%patch2 -p1 -b .coredump %build +autoconf export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}" %configure --enable-shared --with-apxs=%{_httpd_apxs} make %{?_smp_mflags} @@ -65,6 +67,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Oct 17 2012 Joe Orton - 3.4-4 +- enable PR_SET_DUMPABLE in daemon process to enable core dumps + * Wed Oct 17 2012 Joe Orton - 3.4-3 - use a NULL c->sbh pointer with httpd 2.4 (possible fix for #867276) - add logging for unexpected daemon process loss