summaryrefslogtreecommitdiffstats
path: root/debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch')
-rw-r--r--debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch b/debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch
new file mode 100644
index 0000000..e570fff
--- /dev/null
+++ b/debian/patches/debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch
@@ -0,0 +1,71 @@
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Sat, 27 Feb 2016 12:27:06 +0100
+Subject: Revert "core: set RLIMIT_CORE to unlimited by default"
+
+Partially revert commit 15a900327ab as this completely breaks core dumps
+without systemd-coredump. It's also contradicting core(8), and it's not
+systemd's place to redefine the kernel definitions of core files.
+
+Commit bdfd7b2c now honours the process' RLIMIT_CORE for systemd-coredump. This
+isn't what RLIMIT_CORE is supposed to do (it limits the size of the core
+*file*, but the kernel deliberately ignores it for piping), so set a static
+2^63 core size limit for systemd-coredump to go back to the previous behaviour
+(otherwise the change above would break systemd-coredump).
+
+Bug-Debian: https://bugs.debian.org/815020
+---
+ src/core/main.c | 20 --------------------
+ sysctl.d/50-coredump.conf.in | 2 +-
+ 2 files changed, 1 insertion(+), 21 deletions(-)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index 1c4b464..e84e7dd 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1650,24 +1650,6 @@ static void cmdline_take_random_seed(void) {
+ "This functionality should not be used outside of testing environments.");
+ }
+
+-static void initialize_coredump(bool skip_setup) {
+-#if ENABLE_COREDUMP
+- if (getpid_cached() != 1)
+- return;
+-
+- /* Don't limit the core dump size, so that coredump handlers such as systemd-coredump (which honour
+- * the limit) will process core dumps for system services by default. */
+- if (setrlimit(RLIMIT_CORE, &RLIMIT_MAKE_CONST(RLIM_INFINITY)) < 0)
+- log_warning_errno(errno, "Failed to set RLIMIT_CORE: %m");
+-
+- /* But at the same time, turn off the core_pattern logic by default, so that no coredumps are stored
+- * until the systemd-coredump tool is enabled via sysctl. However it can be changed via the kernel
+- * command line later so core dumps can still be generated during early startup and in initrd. */
+- if (!skip_setup)
+- disable_coredumps();
+-#endif
+-}
+-
+ static void initialize_core_pattern(bool skip_setup) {
+ int r;
+
+@@ -2814,8 +2796,6 @@ int main(int argc, char *argv[]) {
+ kernel_timestamp = DUAL_TIMESTAMP_NULL;
+ }
+
+- initialize_coredump(skip_setup);
+-
+ r = fixup_environment();
+ if (r < 0) {
+ log_emergency_errno(r, "Failed to fix up PID 1 environment: %m");
+diff --git a/sysctl.d/50-coredump.conf.in b/sysctl.d/50-coredump.conf.in
+index 5fb551a..13495f1 100644
+--- a/sysctl.d/50-coredump.conf.in
++++ b/sysctl.d/50-coredump.conf.in
+@@ -13,7 +13,7 @@
+ # the core dump.
+ #
+ # See systemd-coredump(8) and core(5).
+-kernel.core_pattern=|{{ROOTLIBEXECDIR}}/systemd-coredump %P %u %g %s %t %c %h
++kernel.core_pattern=|{{ROOTLIBEXECDIR}}/systemd-coredump %P %u %g %s %t 9223372036854775808 %h
+
+ # Allow 16 coredumps to be dispatched in parallel by the kernel.
+ # We collect metadata from /proc/%P/, and thus need to make sure the crashed