summaryrefslogtreecommitdiffstats
path: root/mod_wsgi-3.4-coredump.patch
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2012-11-17 07:18:22 +0100
committerRemi Collet <fedora@famillecollet.com>2012-11-17 07:18:22 +0100
commit158ceac655218cac0bb8c87c328453862f315254 (patch)
tree1b56c0e879e2a7cddbdfd2c549962101835e627f /mod_wsgi-3.4-coredump.patch
parent63b4c5113a0e771efc03a9edd08211723d5c6c59 (diff)
mod_wsgi: backport
Diffstat (limited to 'mod_wsgi-3.4-coredump.patch')
-rw-r--r--mod_wsgi-3.4-coredump.patch42
1 files changed, 42 insertions, 0 deletions
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 <pwd.h>
+ #endif
+
++#ifdef HAVE_SYS_PRCTL_H
++#include <sys/prctl.h>
++#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)