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)