chiark / gitweb /
systemd-coredump: Ignore coredumps larger than COREDUMP_MAX
authorAndrew Cook <ariscop@gmail.com>
Wed, 4 Sep 2013 13:27:40 +0000 (23:27 +1000)
committerHarald Hoyer <harald@redhat.com>
Fri, 6 Sep 2013 08:09:54 +0000 (10:09 +0200)
Currently this check happens when the coredump has been collected in
it's entirety and being received by journald. this is not ideal
behaviour when the crashing process is consuming significant percentage
of physical memory such as a large instance of firefox or a java
application.

src/journal/coredump.c

index fd03e389bb332a53e44584eecfef37fb00613908..a7d3c34fe4c7881eecbc0a62e617122433e19708 100644 (file)
@@ -41,7 +41,7 @@
 #define COREDUMP_MIN_START (3*1024*1024)
 /* Make sure to not make this larger than the maximum journal entry
  * size. See ENTRY_SIZE_MAX in journald-native.c. */
-#define COREDUMP_MAX (768*1024*1024)
+#define COREDUMP_MAX (767*1024*1024)
 
 enum {
         ARG_PID = 1,
@@ -258,6 +258,12 @@ int main(int argc, char* argv[]) {
                         break;
 
                 coredump_size += n;
+
+                if(coredump_size > COREDUMP_MAX) {
+                        log_error("Coredump too large, ignoring");
+                        goto finish;
+                }
+
                 if (!GREEDY_REALLOC(coredump_data, coredump_bufsize, coredump_size + 1)) {
                         r = log_oom();
                         goto finish;