aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeterminant <tederminant@gmail.com>2018-07-19 14:43:35 -0400
committerDeterminant <tederminant@gmail.com>2018-07-19 14:43:35 -0400
commit95316118206aeed718ae6260ef9b5a1a4a6dacd8 (patch)
treec0b2df4c8f020bb076c276069da066a4f43c32f8
parent9e745354fe10f31b829f0c02a2aa464f391ffd19 (diff)
fix mem leak
-rw-r--r--include/hotstuff/consensus.h8
-rw-r--r--include/hotstuff/entity.h2
-rwxr-xr-xrun_replicas.sh4
m---------salticidae0
-rw-r--r--src/consensus.cpp2
-rw-r--r--src/hotstuff.cpp2
-rw-r--r--src/hotstuff_client.cpp4
7 files changed, 13 insertions, 9 deletions
diff --git a/include/hotstuff/consensus.h b/include/hotstuff/consensus.h
index 1f1e6ea..a3a1f25 100644
--- a/include/hotstuff/consensus.h
+++ b/include/hotstuff/consensus.h
@@ -45,7 +45,9 @@ class HotStuffCore {
BoxObj<EntityStorage> storage;
HotStuffCore(ReplicaID id, privkey_bt &&priv_key);
- virtual ~HotStuffCore() = default;
+ virtual ~HotStuffCore() {
+ b0->qc_ref = nullptr;
+ }
/* Inputs of the state machine triggered by external events, should called
* by the class user, with proper invariants. */
@@ -173,7 +175,7 @@ struct Proposal: public Serializable {
<< "rid=" << std::to_string(proposer) << " "
<< "bqc=" << get_hex10(bqc_hash) << " "
<< "blk=" << get_hex10(blk->get_hash()) << ">";
- return std::string(std::move(s));
+ return std::move(s);
}
};
@@ -243,7 +245,7 @@ struct Vote: public Serializable {
<< "bqc=" << get_hex10(bqc_hash) << " "
<< "blk=" << get_hex10(blk_hash) << " "
<< "cert=" << (cert ? "yes" : "no") << ">";
- return std::string(std::move(s));
+ return std::move(s);
}
};
diff --git a/include/hotstuff/entity.h b/include/hotstuff/entity.h
index 03aff06..28b5148 100644
--- a/include/hotstuff/entity.h
+++ b/include/hotstuff/entity.h
@@ -184,7 +184,7 @@ class Block {
<< "id=" << get_hex10(hash) << " "
<< "height=" << std::to_string(height) << " "
<< "parent=" << get_hex10(parent_hashes[0]) << ">";
- return std::string(std::move(s));
+ return std::move(s);
}
};
diff --git a/run_replicas.sh b/run_replicas.sh
index 213b6b7..450dac3 100755
--- a/run_replicas.sh
+++ b/run_replicas.sh
@@ -5,7 +5,7 @@ if [[ $# -gt 0 ]]; then
fi
for i in "${rep[@]}"; do
echo "starting replica $i"
- #valgrind ./hotstuff-app --conf hotstuff-sec${i}.conf > log${i} 2>&1 &
- ./hotstuff-app --conf hotstuff-sec${i}.conf > log${i} 2>&1 &
+ valgrind --leak-check=full ./hotstuff-app --conf hotstuff-sec${i}.conf > log${i} 2>&1 &
+ #./hotstuff-app --conf hotstuff-sec${i}.conf > log${i} 2>&1 &
done
wait
diff --git a/salticidae b/salticidae
-Subproject a75778995a4e0742f244670e9cc02a56611ccfe
+Subproject b4bf23c07601560d708fbdd7c20aca20b630c98
diff --git a/src/consensus.cpp b/src/consensus.cpp
index bf4868d..6b8b398 100644
--- a/src/consensus.cpp
+++ b/src/consensus.cpp
@@ -287,7 +287,7 @@ HotStuffCore::operator std::string () const {
<< "bexec=" << get_hex10(bqc->get_hash()) << " "
<< "vheight=" << std::to_string(vheight) << " "
<< "tails=" << std::to_string(tails.size()) << ">";
- return std::string(std::move(s));
+ return std::move(s);
}
}
diff --git a/src/hotstuff.cpp b/src/hotstuff.cpp
index 6230d06..a37e872 100644
--- a/src/hotstuff.cpp
+++ b/src/hotstuff.cpp
@@ -334,6 +334,7 @@ void HotStuffBase::print_stat() const {
part_delivery_time = 0;
part_delivery_time_min = double_inf;
part_delivery_time_max = 0;
+#ifdef HOTSTUFF_MSG_STAT
LOG_INFO("-- sent opcode (10s) --");
auto &sent_op = pn.get_sent_by_opcode();
for (auto &op: sent_op)
@@ -376,6 +377,7 @@ void HotStuffBase::print_stat() const {
LOG_INFO("sent: %lu", nsent);
LOG_INFO("recv: %lu", nrecv);
LOG_INFO("====== end stats ======");
+#endif
}
promise_t HotStuffBase::async_decide(const uint256_t &cmd_hash) {
diff --git a/src/hotstuff_client.cpp b/src/hotstuff_client.cpp
index f9bfb94..bee60c3 100644
--- a/src/hotstuff_client.cpp
+++ b/src/hotstuff_client.cpp
@@ -39,7 +39,7 @@ struct Request {
std::unordered_map<int, salticidae::RingBuffer> buffers;
std::unordered_map<const uint256_t, Request> waiting;
-MsgNetwork<MsgClient> mn(eb, 10, 0, 2, 4096);
+MsgNetwork<MsgClient> mn(eb, 10, 10, 4096);
std::unordered_map<ReplicaID, MsgNetwork<MsgClient>::conn_t> conns;
std::vector<NetAddr> replicas;
@@ -48,7 +48,7 @@ void set_proposer(ReplicaID rid) {
proposer = rid;
auto it = conns.find(rid);
if (it == conns.end())
- conns.insert(std::make_pair(rid, mn.create_conn(replicas[rid])));
+ conns.insert(std::make_pair(rid, mn.connect(replicas[rid])));
}
void try_send() {