diff --git a/src/libloom/data/rawdata.cpp b/src/libloom/data/rawdata.cpp
index 1b89b49622bc5c602cd83cc8368de65b2bf87731..9ea0a42afc649fda4308e852939af2b2a7840fb0 100644
--- a/src/libloom/data/rawdata.cpp
+++ b/src/libloom/data/rawdata.cpp
@@ -23,12 +23,12 @@ RawData::RawData()
 
 RawData::~RawData()
 {
-    llog->debug("Disposing raw data filename={}", filename);
+    llog->debug("Disposing raw data filename={} size={}", filename, size);
 
     if (filename.empty()) {
         assert(data == nullptr);
     } else {
-        if (munmap(data, size)) {
+        if (size > 0 && munmap(data, size)) {
             log_errno_abort("munmap");
         }
         if (unlink(filename.c_str())) {
@@ -42,15 +42,6 @@ std::string RawData::get_type_name() const
     return RawDataUnpacker::get_type_name();
 }
 
-/*char* RawData::init_memonly(size_t size)
-{
-    assert(data == nullptr);
-    assert(file_id == 0);
-    this->size = size;
-    data = new char[size];
-    return data;
-}*/
-
 char* RawData::init_empty(Worker &worker, size_t size)
 {
     assert(data == nullptr);
@@ -125,6 +116,10 @@ void RawData::map(int fd, bool write)
     assert(!filename.empty());
     assert(fd >= 0);
 
+    if (size == 0) {
+       return;
+    }
+
     int flags = PROT_READ;
     if (write) {
         flags |= PROT_WRITE;
diff --git a/src/libloom/interconnect.cpp b/src/libloom/interconnect.cpp
index d418dff0021f8f887d39cdfb71a5db41428df02a..3fb594e3b1f6889cf538c8f725ebbddc983004d7 100644
--- a/src/libloom/interconnect.cpp
+++ b/src/libloom/interconnect.cpp
@@ -21,7 +21,7 @@ InterConnection::~InterConnection()
 
 void InterConnection::on_connection()
 {
-    llog->debug("Connected");
+    llog->info("Connected to {}", get_address());
     connection.start_read();
     loomcomm::Announce msg;
     msg.set_port(worker.get_listen_port());
diff --git a/src/libloom/utils.cpp b/src/libloom/utils.cpp
index b06bc2b69316e63a2f395c7ac2ee47925d23d307..774ecc55e919670429ec8a0e32ebe05d772d53ff 100644
--- a/src/libloom/utils.cpp
+++ b/src/libloom/utils.cpp
@@ -72,5 +72,11 @@ int loom::make_path(const char *path, mode_t mode)
 void loom::log_errno_abort(const char *tmp)
 {
     llog->critical("{}: {}", tmp, strerror(errno));
-    exit(1);
+    abort();
+}
+
+void loom::log_errno_abort(const char *tmp, const char *tmp2)
+{
+    llog->critical("{}: {} ({})", tmp, strerror(errno), tmp2);
+    abort();
 }
diff --git a/src/libloom/utils.h b/src/libloom/utils.h
index 52615188ec83658f2e366992af04cebcf2a99916..009faadfeb670fbcb0ffdaf8208b99669ff1191d 100644
--- a/src/libloom/utils.h
+++ b/src/libloom/utils.h
@@ -17,6 +17,8 @@ namespace loom {
 
 void report_uv_error(int error_code, int line_number, const char *filename) __attribute__ ((noreturn));
 void log_errno_abort(const char *tmp)  __attribute__ ((noreturn));
+void log_errno_abort(const char *tmp, const char *tmp2)  __attribute__ ((noreturn));
+
 
 int make_path(const char *path, mode_t mode);
 size_t file_size(const char *path);
diff --git a/src/libloom/worker.cpp b/src/libloom/worker.cpp
index 13414b7175e2293ae0b076dab7e2c5928b8fac97..09e025c678daa470874539e392c5774c282a0aa9 100644
--- a/src/libloom/worker.cpp
+++ b/src/libloom/worker.cpp
@@ -476,7 +476,7 @@ void ServerConnection::on_message(const char *data, size_t size)
         if (address.size() > 2 && address[0] == '!' && address[1] == ':') {
             msg.set_address(worker.get_server_address() + ":" + address.substr(2, std::string::npos));
         }
-        llog->debug("Sending data {} to {}", msg.id(), msg.address());
+        llog->debug("Sending data id={} to {}", msg.id(), msg.address());
         bool with_size = msg.has_with_size() && msg.with_size();
         assert(worker.send_data(msg.address(), msg.id(), with_size));
         break;
diff --git a/tests/client/loomenv.py b/tests/client/loomenv.py
index ca5676beb456de9750015ebf0dcaa1b0a7876dde..ef83841222049e134e041cce71a8c998a1ec7771 100644
--- a/tests/client/loomenv.py
+++ b/tests/client/loomenv.py
@@ -58,8 +58,9 @@ class LoomEnv(Env):
         server_args = (LOOM_SERVER_BIN,
                        "--debug",
                        "--port=" + str(self.PORT))
+        valgrind_args = ("valgrind", "--num-callers=40")
         if VALGRIND:
-            server_args = ("valgrind",) + server_args
+            server_args = valgrind_args + server_args
         server = self.start_process("server", server_args)
         time.sleep(0.1)
         assert not server.poll()
@@ -71,7 +72,7 @@ class LoomEnv(Env):
                        "localhost", str(self.PORT))
         if VALGRIND:
             time.sleep(2)
-            worker_args = ("valgrind",) + worker_args
+            worker_args = valgrind_args + worker_args
         for i in xrange(workers_count):
             w = self.start_process("worker{}".format(i), worker_args)
             workers.append(w)