]> AND Private Git Repository - loba.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
There is a bug...
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Tue, 18 Jan 2011 21:51:47 +0000 (22:51 +0100)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Tue, 18 Jan 2011 21:51:47 +0000 (22:51 +0100)
TODO
process.cpp

diff --git a/TODO b/TODO
index 30586a5efde0489a5a7d404a82cf4746d1a59a71..3152ad98d5d06b57c2cffa912612468d1d610318 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,5 +1,16 @@
 * segfault with ./loba cluster1000.xml -N64 -a fairstrategy
 
 * segfault with ./loba cluster1000.xml -N64 -a fairstrategy
 
+    this is a deadlock occuring when:
+    - a process is in the finalize stage;
+    - all processes  but one are blocked on receive;
+    - the process that is still running owns all the remaining load,
+      and sends it all to the finalizing process, and then goes in
+      blocking receive.
+    The finalizing process receives the load, and blocks again,
+    waiting for a close message.
+    All processes are then blocked, and non-one is able to see that
+    there is no more load in the system!
+
 * verify bookkeeping version.
 
 * add several metrics
 * verify bookkeeping version.
 
 * add several metrics
index 95ba1f9a24b4276528a5556cc23a7d69eba9ccca..0544b21d9e5b62b08a6a09a25618386913c0d377 100644 (file)
@@ -145,6 +145,8 @@ int process::run()
             opt::load_ratio_threshold) {
             VERB0("No more load to balance in system.");
             break;
             opt::load_ratio_threshold) {
             VERB0("No more load to balance in system.");
             break;
+        } else {
+            DEBUG1("still %g load to balance, continuing...", total_load_running);
         }
     }
     VERB0("Going to finalize...");
         }
     }
     VERB0("Going to finalize...");
@@ -264,6 +266,7 @@ void process::receive(bool wait)
     message* msg;
     m_host_t from;
 
     message* msg;
     m_host_t from;
 
+    DEBUG1("%sblocking receive", "\0non-" + !wait);
     while (may_receive() && comm.recv(msg, from, wait)) {
         switch (msg->get_type()) {
         case message::INFO: {
     while (may_receive() && comm.recv(msg, from, wait)) {
         switch (msg->get_type()) {
         case message::INFO: {