From c41720fd32ea5074637f892ffaee7b5867a40006 Mon Sep 17 00:00:00 2001
From: lhausamm <loic_hausammann@hotmail.com>
Date: Thu, 23 Nov 2017 12:59:11 +0100
Subject: [PATCH] Remove bug with mmap (offset is now a multiple of pagesize)

---
 src/dump.c   | 3 ++-
 src/engine.c | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/dump.c b/src/dump.c
index 44991aa7ea..51fceb641f 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -83,9 +83,10 @@ void dump_ensure(struct dump *d, size_t size) {
   }
 
   /* Re-map starting at the end of the file. */
+  d->file_offset = d->file_offset / getpagesize() + 1;
+  d->file_offset *= getpagesize();
   if ((d->data = mmap(NULL, d->size, PROT_WRITE, MAP_SHARED, d->fd,
                       d->file_offset)) == MAP_FAILED) {
-    message("Offset %lu, size %lu", d->file_offset, d->size);
     size_t mega = 1e6;
     if (d->size > mega)
       error("Failed to allocate map of size %zi Mbytes (%s).", d->size / mega,
diff --git a/src/engine.c b/src/engine.c
index eebc1bc1c5..e1249c9cc4 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -5469,8 +5469,8 @@ void engine_step(struct engine *e) {
 #ifdef WITH_LOGGER
   logger_log_timestamp(e->ti_old, &e->logger_time_offset,
 		       e->logger_dump);
-  dump_ensure(e->logger_dump, e->logger_size);
   logger_ensure_size(e->total_nr_parts, e->logger_size);
+  dump_ensure(e->logger_dump, e->logger_size);
 #endif
 
   /* Are we drifting everything (a la Gadget/GIZMO) ? */
-- 
GitLab