Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge remote-tracking branch 'origin/libdw2'
authorMarion Guthmuller <marion.guthmuller@loria.fr>
Fri, 17 Jan 2014 12:15:58 +0000 (13:15 +0100)
committerMarion Guthmuller <marion.guthmuller@loria.fr>
Fri, 17 Jan 2014 12:15:58 +0000 (13:15 +0100)
269 files changed:
CMakeLists.txt
ChangeLog
INSTALL
NEWS
buildtools/Cmake/AddTests.cmake
buildtools/Cmake/CompleteInFiles.cmake
buildtools/Cmake/DefinePackages.cmake
buildtools/Cmake/Distrib.cmake
buildtools/Cmake/Flags.cmake
buildtools/Cmake/MakeExe.cmake
buildtools/Cmake/MakeJava.cmake
buildtools/Cmake/MakeLib.cmake
buildtools/Cmake/Modules/FindF2c.cmake
buildtools/Cmake/Modules/FindGFortran.cmake [new file with mode: 0644]
buildtools/Cmake/Modules/FindLibdw.cmake [new file with mode: 0644]
buildtools/Cmake/Modules/FindLibunwind.cmake
buildtools/Cmake/PrintArgs.cmake
buildtools/Cmake/Scripts/tesh.pl
buildtools/Cmake/Supernovae.cmake
buildtools/Cmake/src/simgrid.nsi.in
buildtools/jenkins/run.sh
doc/doxygen/bindings.doc
doc/doxygen/inside_release.doc
doc/doxygen/introduction.doc
doc/doxygen/options.doc
doc/doxygen/tracing.doc
examples/java/async/CMakeLists.txt
examples/java/async/async.tesh
examples/java/bittorrent/CMakeLists.txt
examples/java/bittorrent/bittorrent.tesh
examples/java/chord/CMakeLists.txt
examples/java/chord/chord.tesh
examples/java/cloud/CMakeLists.txt
examples/java/cloud/cloud.tesh
examples/java/commTime/CMakeLists.txt
examples/java/commTime/commtime.tesh
examples/java/io/CMakeLists.txt
examples/java/kademlia/CMakeLists.txt
examples/java/kademlia/kademlia.tesh
examples/java/master_slave_bypass/CMakeLists.txt
examples/java/master_slave_bypass/bypass.tesh
examples/java/master_slave_kill/CMakeLists.txt
examples/java/master_slave_kill/kill.tesh
examples/java/masterslave/CMakeLists.txt
examples/java/masterslave/masterslave.tesh
examples/java/migration/CMakeLists.txt
examples/java/migration/migration.tesh
examples/java/mutualExclusion/CMakeLists.txt
examples/java/mutualExclusion/mutualexclusion.tesh
examples/java/pingPong/CMakeLists.txt
examples/java/pingPong/pingpong.tesh
examples/java/priority/CMakeLists.txt
examples/java/priority/priority.tesh
examples/java/startKillTime/CMakeLists.txt
examples/java/startKillTime/startKillTime.tesh
examples/java/suspend/CMakeLists.txt
examples/java/suspend/suspend.tesh
examples/java/tracing/CMakeLists.txt
examples/java/tracing/tracingPingPong.tesh
examples/msg/actions/NAS_LU_S_4/instr_actions.tesh
examples/msg/chord/chord.c
examples/msg/chord/chord.tesh
examples/msg/chord/chord_crosstraffic.tesh
examples/msg/energy/e2/energy_consumption.tesh
examples/msg/energy/e3/concurrent_tasks.tesh
examples/msg/gtnets/tracing-gtnets-dogbone-gtnets.tesh
examples/msg/gtnets/tracing-gtnets-dogbone-lv08.tesh
examples/msg/gtnets/tracing-gtnets-onelink-gtnets.tesh
examples/msg/gtnets/tracing-gtnets-onelink-lv08.tesh
examples/msg/gtnets/tracing-gtnets-waxman.tesh
examples/msg/mc/bugged1.tesh
examples/msg/mc/bugged2.tesh
examples/msg/sendrecv/sendrecv_CLM03.tesh
examples/msg/tracing/categories.c
examples/msg/tracing/categories.tesh
examples/msg/tracing/link_srcdst_user_variables.c
examples/msg/tracing/link_srcdst_user_variables.tesh
examples/msg/tracing/link_user_variables.c
examples/msg/tracing/link_user_variables.tesh
examples/msg/tracing/ms.c
examples/msg/tracing/ms.tesh
examples/msg/tracing/procmig.c
examples/msg/tracing/procmig.tesh
examples/msg/tracing/simple.c
examples/msg/tracing/trace_platform.c
examples/msg/tracing/trace_platform.tesh
examples/msg/tracing/user_variables.c
examples/msg/tracing/user_variables.tesh
examples/scala/master_slave_bypass/CMakeLists.txt
examples/scala/master_slave_bypass/bypass.tesh
examples/scala/master_slave_kill/CMakeLists.txt
examples/scala/master_slave_kill/kill.tesh
examples/scala/masterslave/CMakeLists.txt
examples/scala/masterslave/masterslave.tesh
examples/simdag/test_simdag_tracing.tesh
examples/smpi/MM/Summa.c
examples/smpi/NAS/FT/ft.f
examples/smpi/energy/CMakeLists.txt [new file with mode: 0644]
examples/smpi/energy/energy.tesh [new file with mode: 0644]
examples/smpi/energy/f77/CMakeLists.txt [new file with mode: 0644]
examples/smpi/energy/f77/energy.tesh [new file with mode: 0644]
examples/smpi/energy/f77/sef.f [new file with mode: 0644]
examples/smpi/energy/f90/CMakeLists.txt [new file with mode: 0644]
examples/smpi/energy/f90/energy.tesh [new file with mode: 0644]
examples/smpi/energy/f90/sef90.f90 [new file with mode: 0644]
examples/smpi/energy/hostfile [new file with mode: 0644]
examples/smpi/energy/platform.xml [new file with mode: 0644]
examples/smpi/energy/se.c [new file with mode: 0644]
examples/smpi/replay/actions_allReduce.txt
examples/smpi/replay/actions_bcast.txt
examples/smpi/replay/actions_bcast_reduce_datatypes.txt
examples/smpi/replay/actions_reducescatter.txt
examples/smpi/replay/actions_with_isend.txt
examples/smpi/replay/smpi_replay.tesh
examples/smpi/tracing/smpi_traced.tesh
generate.sh [new file with mode: 0755]
include/msg/msg.h
include/simgrid/modelchecker.h
include/simgrid_config.h.in
include/smpi/mpif.h.in
include/smpi/smpi.h
include/smpi/smpif.h.in
include/xbt/ex.h
src/bindings/java/org/simgrid/msg/Msg.java
src/include/mc/datatypes.h
src/include/smpi/smpi_interface.h
src/include/surf/maxmin.h
src/instr/instr_TI_trace.c [new file with mode: 0644]
src/instr/instr_config.c
src/instr/instr_paje_trace.c
src/instr/instr_private.h
src/instr/instr_trace.c [new file with mode: 0644]
src/mc/mc_checkpoint.c
src/mc/mc_compare.c
src/mc/mc_dwarf.c [new file with mode: 0644]
src/mc/mc_dwarf_attrnames.h [new file with mode: 0644]
src/mc/mc_dwarf_tagnames.h [new file with mode: 0644]
src/mc/mc_global.c
src/mc/mc_memory.c
src/mc/mc_private.h
src/msg/msg_io.c
src/simdag/sd_daxloader.c
src/simgrid/sg_config.c
src/simix/smx_context.c
src/simix/smx_network.c
src/simix/smx_network_private.h
src/smpi/colls/allgather-SMP-NTS.c
src/smpi/colls/allgatherv-mpich-rdb.c
src/smpi/colls/reduce-scatter-gather.c
src/smpi/colls/scatter-ompi.c
src/smpi/colls/smpi_automatic_selector.c
src/smpi/instr_smpi.c
src/smpi/private.h
src/smpi/smpi_base.c
src/smpi/smpi_bench.c
src/smpi/smpi_coll.c
src/smpi/smpi_dvfs.c [new file with mode: 0644]
src/smpi/smpi_f77.c
src/smpi/smpi_global.c
src/smpi/smpi_pmpi.c
src/smpi/smpi_replay.c
src/smpi/smpicc.in
src/smpi/smpif90.in
src/smpi/smpiff.in
src/smpi/smpirun.in
src/surf/maxmin.c
src/surf/surf.c
src/xbt/dict.c
src/xbt/dict_cursor.c
src/xbt/dynar.c
src/xbt/fifo.c
src/xbt/log.c
src/xbt/mmalloc/mm_diff.c
src/xbt/mmalloc/mm_legacy.c
src/xbt/xbt_os_thread.c
src/xbt/xbt_os_time.c
src/xbt/xbt_replay.c
teshsuite/smpi/CMakeLists.txt
teshsuite/smpi/TI_output.tesh [new file with mode: 0644]
teshsuite/smpi/alltoall_basic.c
teshsuite/smpi/mpich3-test/attr/attrerr.c
teshsuite/smpi/mpich3-test/attr/attrerrcomm.c
teshsuite/smpi/mpich3-test/attr/attrerrtype.c
teshsuite/smpi/mpich3-test/attr/attric.c
teshsuite/smpi/mpich3-test/attr/attrt.c
teshsuite/smpi/mpich3-test/coll/allgatherv4.c
teshsuite/smpi/mpich3-test/coll/allred.c
teshsuite/smpi/mpich3-test/coll/allred3.c
teshsuite/smpi/mpich3-test/coll/allred4.c
teshsuite/smpi/mpich3-test/coll/allred5.c
teshsuite/smpi/mpich3-test/coll/alltoall1.c
teshsuite/smpi/mpich3-test/coll/alltoallv.c
teshsuite/smpi/mpich3-test/coll/alltoallv0.c
teshsuite/smpi/mpich3-test/coll/alltoallw2.c
teshsuite/smpi/mpich3-test/coll/bcastzerotype.c
teshsuite/smpi/mpich3-test/coll/coll13.c
teshsuite/smpi/mpich3-test/coll/coll2.c
teshsuite/smpi/mpich3-test/coll/coll3.c
teshsuite/smpi/mpich3-test/coll/coll6.c
teshsuite/smpi/mpich3-test/coll/coll7.c
teshsuite/smpi/mpich3-test/coll/icalltoallv.c
teshsuite/smpi/mpich3-test/coll/icalltoallw.c
teshsuite/smpi/mpich3-test/coll/nonblocking.c
teshsuite/smpi/mpich3-test/coll/nonblocking2.c
teshsuite/smpi/mpich3-test/coll/nonblocking3.c
teshsuite/smpi/mpich3-test/coll/red3.c
teshsuite/smpi/mpich3-test/coll/red4.c
teshsuite/smpi/mpich3-test/coll/red_scat_block.c
teshsuite/smpi/mpich3-test/coll/redscat3.c
teshsuite/smpi/mpich3-test/coll/redscatbkinter.c
teshsuite/smpi/mpich3-test/coll/redscatblk3.c
teshsuite/smpi/mpich3-test/coll/redscatinter.c
teshsuite/smpi/mpich3-test/coll/scatterv.c
teshsuite/smpi/mpich3-test/coll/uoplong.c
teshsuite/smpi/mpich3-test/comm/cmfree.c
teshsuite/smpi/mpich3-test/comm/cmsplit.c
teshsuite/smpi/mpich3-test/comm/comm_create_group.c
teshsuite/smpi/mpich3-test/comm/comm_idup.c
teshsuite/smpi/mpich3-test/comm/commcreate1.c
teshsuite/smpi/mpich3-test/comm/ic1.c
teshsuite/smpi/mpich3-test/comm/ic2.c
teshsuite/smpi/mpich3-test/comm/iccreate.c
teshsuite/smpi/mpich3-test/comm/icsplit.c
teshsuite/smpi/mpich3-test/comm/probe-intercomm.c
teshsuite/smpi/mpich3-test/datatype/darray-cyclic.c
teshsuite/smpi/mpich3-test/datatype/getpartelm.c
teshsuite/smpi/mpich3-test/datatype/large-count.c
teshsuite/smpi/mpich3-test/datatype/struct-ezhov.c
teshsuite/smpi/mpich3-test/datatype/tfree.c
teshsuite/smpi/mpich3-test/datatype/tresized.c
teshsuite/smpi/mpich3-test/datatype/tresized2.c
teshsuite/smpi/mpich3-test/f90/coll/CMakeLists.txt
teshsuite/smpi/mpich3-test/f90/datatype/CMakeLists.txt
teshsuite/smpi/mpich3-test/f90/datatype/indtype.f90
teshsuite/smpi/mpich3-test/f90/datatype/structf.f90
teshsuite/smpi/mpich3-test/f90/init/CMakeLists.txt
teshsuite/smpi/mpich3-test/f90/pt2pt/CMakeLists.txt
teshsuite/smpi/mpich3-test/group/gtranks.c
teshsuite/smpi/mpich3-test/group/gtranksperf.c
teshsuite/smpi/mpich3-test/pt2pt/bottom.c
teshsuite/smpi/mpich3-test/pt2pt/bsendfrag.c
teshsuite/smpi/mpich3-test/pt2pt/bsendpending.c
teshsuite/smpi/mpich3-test/pt2pt/cancelrecv.c
teshsuite/smpi/mpich3-test/pt2pt/eagerdt.c
teshsuite/smpi/mpich3-test/pt2pt/large_message.c
teshsuite/smpi/mpich3-test/pt2pt/mprobe.c
teshsuite/smpi/mpich3-test/pt2pt/pscancel.c
teshsuite/smpi/mpich3-test/pt2pt/rqfreeb.c
teshsuite/smpi/mpich3-test/pt2pt/scancel.c
teshsuite/smpi/mpich3-test/pt2pt/scancel2.c
teshsuite/smpi/mpich3-test/pt2pt/sendall.c
teshsuite/smpi/mpich3-test/pt2pt/sendrecv3.c
teshsuite/smpi/mpich3-test/util/mtest.c
teshsuite/smpi/pt2pt.tesh
teshsuite/smpi/reduce.tesh
teshsuite/smpi/reduce_scatter_coll.tesh
teshsuite/xbt/mmalloc_test.c
tools/graphicator/graphicator.c
tools/graphicator/graphicator.tesh
tools/simgrid.supp
tools/tesh/CMakeLists.txt
tools/tesh/IO-bigsize.tesh
tools/tesh/basic.tesh
tools/tesh/catch-return.tesh
tools/tesh/catch-signal.tesh
tools/tesh/run_context.c
tools/tesh/set-output-ignore.tesh [moved from tools/tesh/set-ignore-output.tesh with 100% similarity]
tools/tesh/set-output-sort-1.tesh [moved from tools/tesh/basic2.tesh with 98% similarity]
tools/tesh/set-output-sort.tesh [new file with mode: 0644]

index d4d633c..a21be2a 100644 (file)
@@ -45,22 +45,27 @@ set(CMAKE_Fortran_LINK_FLAGS "" CACHE TYPE INTERNAL FORCE)
 # 3.7.{0,1} -> release 3.7, 3.7.1
 # 3.8.{0,1} -> release 3.8, 3.8.1
 # 3.9.0 -> release 3.9
-
 # 3.9.90 -> release 3.10pre1
 # 3.10.0 -> release 3.10
 
 set(SIMGRID_VERSION_MAJOR "3")
-set(SIMGRID_VERSION_MINOR "9")
-set(SIMGRID_VERSION_PATCH "90")
+set(SIMGRID_VERSION_MINOR "10")
+set(SIMGRID_VERSION_PATCH "0")
+set(SIMGRID_VERSION_EXTRA "-rc2") # Extra words to add to version string (e.g. -rc1)
+
+set(SIMGRID_VERSION_DATE  "2013") # Year for copyright information
 
 if(${SIMGRID_VERSION_PATCH} EQUAL "0")
   set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}")
 else()
   set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}.${SIMGRID_VERSION_PATCH}")
 endif()
+
+set(SIMGRID_VERSION_STRING
+  "SimGrid version ${release_version}${SIMGRID_VERSION_EXTRA}\\nCopyright (c) ${SIMGRID_VERSION_DATE}. The Simgrid Team.")
+
 set(libsimgrid_version "${release_version}")
-set(libsmpi_version "${release_version}")
-set(libSG_java_version "${release_version}")
+set(libsimgrid-java_version "${release_version}")
 set(GCC_NEED_VERSION "4.0")
 set(APPLE_NEED_GCC_VERSION "4.6")
 
index 2afb0d3..0b9ae9e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,12 @@
-SimGrid (3.10pre1) unstable; urgency=low
+SimGrid (3.10-rc2) unstable; urgency=low
+
+ The Clean Diaper Release, a.k.a. SimGrid is leak-free.
 
  Java:
  * Reintegrate Java to the main archive as desynchronizing these
    package is not acceptable anymore (Java is now considered stable)
  * Add explicit synchronization facilities through semaphores
- * Bugfix: Task.setDataSize() only changed the C world, not the value
+ * Bug fix: Task.setDataSize() only changed the C world, not the value
    cached in the Java world
 
  MSG:
@@ -12,7 +14,7 @@ SimGrid (3.10pre1) unstable; urgency=low
    this part of MSG was not considered as production grade either.
  * Add explicit synchronization facilities through semaphores
  * Add a new function MSG_host_get_process_list()
- * Preliminary DVFS support (see /examples/msg/energy for details)
+ * Preliminary DVFS support (see examples/msg/energy/ for details)
 
  SMPI:
  * SMPI is now included directly in the libsimgrid as the windows
@@ -25,7 +27,13 @@ SimGrid (3.10pre1) unstable; urgency=low
    - The replay tool now supports traces produce either by TAU or a modified
      version of MPE.
    - Bug Fix: the compute part of the reduce action is now taken into account.
- * smpirun generates the hostfile if needed (with given hostcount and platform)
+   - Gatherv collective is now supported
+   - SimGrid (SMPI for now) can generate replay traces as well. Option -trace-ti
+     of smpirun outputs time independent traces for the current run. One file
+     is created per process. If too many processes are simulated, this behavior
+     can be changed to one file for all processes by using the
+     tracing/smpi/format/ti_one_file flag
+ * smpirun generates the host file if needed (with given host count and platform)
  * Integration of more than 100 STAR-MPI, MPICH, OpenMPI collective algorithms
    - allows to select one in particular with --cfg=smpi/coll_name:algorithm
    - allows to use the decision logic of OpenMPI(1.7) or MPICH(3.0.4) by setting
@@ -34,11 +42,13 @@ SimGrid (3.10pre1) unstable; urgency=low
    Reduce
  * Add a --cfg:tracing/smpi/internals option, to trace internal communications
    happening inside a collective SMPI call.
- * Fix the behavior of complex data types handling
- * replace MPICH-1 test suite by the one from MPICH 3.0.4. Can be built using
+ * Fix the behavior of complex data types handling.
+ * Make MPI_Wtime another synchronization point to take computations into account.
+ * Replace MPICH-1 test suite by the one from MPICH 3.0.4. Can be built using
    enable_smpi_MPICH3_testsuite flag in cmake. Run with ctest.
  * Add all missing Fortran bindings, SMPI should work with Fortran 90
    (no privatization of global variables yet)
+ * Preliminary DVFS support (see examples/smpi/energy/ for details)
 
  Model-Checking;
  * Verification of liveness properties is now available for SMPI applications
@@ -68,14 +78,23 @@ SimGrid (3.10pre1) unstable; urgency=low
  * Our own implementation of getline is renamed xbt_getline, and gets
    used even if the OS provide a getline(). This should reduce the
    configuration complexity by using the same code on all platforms.
- * new xbt_cfg_elm_boolean type
+ * New type: xbt_cfg_elm_boolean.
+ * Allow to use yes/no for boolean configuration options in the command line.
  * Allow to disable SimGrid cleanups at exit from command line option.
    There are situations where one may want a simulation to end with an exit.
    Unfortunately, calling exit may cause SimGrid to segfault, which is quite
    annoying when scripting around the simulator. Adding a
-   --cfg=clean_atexit:yes allows to circumvent this issue.
+   --cfg=clean_atexit:no allows to circumvent this issue.
+
+ Build System:
+ * Lots of memory leaks were corrected in this release.
+ * New command line option --version, to get SimGrid version information.
+   Packagers may want to add extra words to SIMGRID_VERSION_EXTRA defined in
+   CMakeLists.txt.
+ * Supernovae builds are deprecated, and expected to be removed in the next
+   version of SimGrid.
 
--- Mon Oct 7 2013 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+ -- Fri Nov  8 23:54:56 CET 2013 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
 
 SimGrid (3.9) stable; urgency=low
 
@@ -151,7 +170,7 @@ SimGrid (3.9) stable; urgency=low
  TRACING:
  * Transfer the tracing files into the corresponding modules.
 
- -- Tue Feb 5 11:31:43 CET 2013 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+ -- Tue Feb  5 11:31:43 CET 2013 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
 
 SimGrid (3.8.1) stable; urgency=low
 
@@ -451,7 +470,7 @@ SimGrid (3.7) stable; urgency=low
       Turn model-checking OFF if simulation performance matters to you.
       Not enabling it at runtime is not enough, disable it in cmake.
 
 -- Tue May 15 11:30:19 UTC 2012 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+ -- Tue May 15 11:30:19 UTC 2012 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
 
 SimGrid (3.6.2) stable; urgency=low
 
diff --git a/INSTALL b/INSTALL
index bb8150c..cc31a6f 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -11,20 +11,21 @@ Quick way to compile
 ====================
 
 In short, the way to compile SimGrid depends on whether you are compiling a
-tar.gz archive or directly from the SVN.
+tar.gz archive or directly from the Git.
 
-(1) configure SimGrid (both in SVN and archives)
+(1) configure SimGrid (both in Git and archives)
 $ cmake <all options> ./
 
 Main options are:
   -DCMAKE_INSTALL_PREFIX=<path>: specify where to install SimGrid
   -Denable_maintainer_mode=on/off: get the maintainer files regenerated
                                    automatically
-  -Denable_compile_optimizations=on/off: compile or not with -O0 instead of -O3
-  -Denable_java=on/off: enable or not binding java
-  -Denable_lua=on/off: enable or not binding lua
-  -Denable_ruby=on/off: enable or not binding ruby
+  -Denable_compile_optimizations=on/off: compile or not with optimizations
+  -Denable_java=on/off: enable or not the Java bindings
+  -Denable_scala=on/off: enable or not the Scala bindings
+  -Denable_lua=on/off: enable or not the lua bindings
   -Denable_smpi=on/off: enable or not smpi
+  -Denable_model-checking=on/off: enable or not the model-checker
 See below for other configure options which are common to any project,
 not only SimGrid related.
 
@@ -52,10 +53,7 @@ the jni.h header file (available from the JDK).
 If you want to compile the lua bindings, you have to have lua5.1 executable and
 liblua5.1-dev.
 
-If you want to compile the ruby bindings, you have to install ruby executable
-and ruby-dev version 1.9.
-
-If you want to compile smpi, you should install f2c for use Fortran code.
+If you want to compile smpi, you should install f2c to use Fortran code.
 
 If you want to compile the GTNetS backend, you have to have a patched version of
-GTNetS installed. The patch lives in the contrib section of the SVN.
+GTNetS installed. The patch lives in the contrib section of the Git.
diff --git a/NEWS b/NEWS
index c658b01..d601309 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,16 +4,17 @@ __   _____ _ __ ___(_) ___  _ __   |___ / / |/ _ \
  \ V /  __/ |  \__ \ | (_) | | | |  ___) || | |_| |
   \_/ \___|_|  |___/_|\___/|_| |_| |____(_)_|\___/
 
-The "to be named" release. Major changes:
+The Clean Diaper Release, a.k.a. SimGrid is leak-free. Major changes:
 
  * Preliminary DVFS support to track the energy consumption
  * Java is back in the main package (and is very stable).
  * The storage sub-modules is now believed to be usable.
  * SMPI is now very stable (we pass most MPICH tests).
- * Verification and model checking further improved: 
+ * Lots of memory leaks were corrected in this release.
+ * Verification and model checking further improved:
    liveness+SMPI works; reduction through state equality detection
  Plus the usual load of bug fixes and small improvements
+
                     _               _____ ___
 __   _____ _ __ ___(_) ___  _ __   |___ // _ \
 \ \ / / _ \ '__/ __| |/ _ \| '_ \    |_ \ (_) |
index bc9cff0..ee959c3 100644 (file)
@@ -32,24 +32,25 @@ INCLUDE(CTest)
 ENABLE_TESTING()
 
 if(NOT enable_memcheck)
-  ADD_TEST(tesh-self-basic                      ${TESH_COMMAND} ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" basic.tesh)
+  ADD_TEST(tesh-self-basic                      ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/basic.tesh)
   ADD_TEST(tesh-self-cd                         ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/cd.tesh)
-  ADD_TEST(tesh-self-IO-broken-pipe             ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" IO-broken-pipe.tesh)
+  ADD_TEST(tesh-self-IO-broken-pipe             ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/IO-broken-pipe.tesh)
   ADD_TEST(tesh-self-IO-orders                  ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/IO-orders.tesh)
-  ADD_TEST(tesh-self-IO-bigsize                 ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" IO-bigsize.tesh)
-  ADD_TEST(tesh-self-set-return                 ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" set-return.tesh)
-  ADD_TEST(tesh-self-set-timeout                ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" set-timeout.tesh)
-  ADD_TEST(tesh-self-set-ignore-output          ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-ignore-output.tesh)
+  ADD_TEST(tesh-self-IO-bigsize                 ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/IO-bigsize.tesh)
+  ADD_TEST(tesh-self-set-return                 ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-return.tesh)
+  ADD_TEST(tesh-self-set-timeout                ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-timeout.tesh)
+  ADD_TEST(tesh-self-set-output-ignore          ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-output-ignore.tesh)
+  ADD_TEST(tesh-self-set-output-sort            ${TESH_COMMAND} ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" set-output-sort.tesh)
   ADD_TEST(tesh-self-catch-return               ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-return.tesh)
   ADD_TEST(tesh-self-catch-timeout              ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-timeout.tesh)
   ADD_TEST(tesh-self-catch-wrong-output         ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-wrong-output.tesh)
-  ADD_TEST(tesh-self-bg-basic                   ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" bg-basic.tesh)
-  ADD_TEST(tesh-self-background                 ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" background.tesh)
+  ADD_TEST(tesh-self-bg-basic                   ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/bg-basic.tesh)
+  ADD_TEST(tesh-self-background                 ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/background.tesh)
 
   if(NOT WIN32)
-    ADD_TEST(tesh-self-set-signal                 ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" set-signal.tesh)
-    ADD_TEST(tesh-self-bg-set-signal              ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" bg-set-signal.tesh)
-    ADD_TEST(tesh-self-catch-signal               ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-signal.tesh)
+    ADD_TEST(tesh-self-set-signal               ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-signal.tesh)
+    ADD_TEST(tesh-self-bg-set-signal            ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/bg-set-signal.tesh)
+    ADD_TEST(tesh-self-catch-signal             ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-signal.tesh)
   endif()
 
   # BEGIN TESH TESTS
@@ -102,8 +103,9 @@ if(NOT enable_memcheck)
     ADD_TEST(tesh-msg-pid-ucontext              ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/pid.tesh)
   endif()
 
-
-  IF(enable_debug) # these tests need the assertion mechanism
+  # these tests need the assertion mechanism
+  # exclude them from memcheck, as they normally die, leaving lots of unfree'd objects
+  IF(enable_debug AND NOT enable_memcheck)
     ADD_TEST(tesh-simdag-parser-bogus-symmetric ${TESH_COMMAND} ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simdag/platforms --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/platforms two_hosts_asymetric.tesh)
   ENDIF()
 
@@ -159,13 +161,10 @@ if(NOT enable_memcheck)
   ADD_TEST(msg-masterslave-mailbox-thread       ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_mailbox_crosstraffic.tesh)
   ADD_TEST(msg-masterslave-cpu-ti-thread        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/masterslave --cd ${CMAKE_HOME_DIRECTORY}/examples/msg masterslave/masterslave_cpu_ti_crosstraffic.tesh)
 
-  ADD_TEST(msg-masterslave-virtual-machines     ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
+  ADD_TEST(msg-masterslave-vivaldi-thread       ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
+
+  ADD_TEST(msg-masterslave-virtual-machines-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
 
-  ADD_TEST(msg-energy-pstates                   ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
-  ADD_TEST(msg-energy-consumption               ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
-  ADD_TEST(msg-energy-concurrent-tasks          ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
-  ADD_TEST(msg-storage                          ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/storage/storage.tesh)
-  
   if(CONTEXT_UCONTEXT)
     ADD_TEST(msg-sendrecv-CLM03-ucontext        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv/sendrecv_CLM03.tesh)
     ADD_TEST(msg-sendrecv-Vegas-ucontext        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv/sendrecv_Vegas.tesh)
@@ -186,10 +185,9 @@ if(NOT enable_memcheck)
     ADD_TEST(msg-masterslave-mailbox-ucontext   ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_mailbox_crosstraffic.tesh)
     ADD_TEST(msg-masterslave-cpu-ti-ucontext    ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/masterslave --cd ${CMAKE_HOME_DIRECTORY}/examples/msg masterslave/masterslave_cpu_ti_crosstraffic.tesh)
 
-    ADD_TEST(msg-energy-pstates-ucontext                ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
-    ADD_TEST(msg-energy-consumption-ucontext            ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
-    ADD_TEST(msg-energy-concurrent-tasks-ucontext       ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
+    ADD_TEST(msg-masterslave-vivaldi-ucontext   ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
 
+    ADD_TEST(msg-masterslave-virtual-machines-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
   endif()
 
   if(HAVE_RAWCTX)
@@ -212,22 +210,42 @@ if(NOT enable_memcheck)
     ADD_TEST(msg-masterslave-mailbox-raw        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_mailbox_crosstraffic.tesh)
     ADD_TEST(msg-masterslave-cpu-ti-raw         ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/masterslave --cd ${CMAKE_HOME_DIRECTORY}/examples/msg masterslave/masterslave_cpu_ti_crosstraffic.tesh)
 
+    ADD_TEST(msg-masterslave-vivaldi-raw        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
+
+    ADD_TEST(msg-masterslave-virtual-machines-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
+  endif()
+
+  ADD_TEST(msg-energy-pstates-thread            ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
+  ADD_TEST(msg-energy-consumption-thread        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
+  ADD_TEST(msg-energy-concurrent-tasks-thread   ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
+
+  if(CONTEXT_UCONTEXT)
+    ADD_TEST(msg-energy-pstates-ucontext        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
+    ADD_TEST(msg-energy-consumption-ucontext    ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
+    ADD_TEST(msg-energy-concurrent-tasks-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
+  endif()
+
+  if(HAVE_RAWCTX)
     ADD_TEST(msg-energy-pstates-raw             ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
     ADD_TEST(msg-energy-consumption-raw         ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
     ADD_TEST(msg-energy-concurrent-tasks-raw    ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
-
   endif()
 
-  ADD_TEST(msg-masterslave-vivaldi-thread       ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
-  ADD_TEST(msg-token-ring-thread                ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
+  ADD_TEST(msg-storage-thread                   ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/storage/storage.tesh)
+  if(CONTEXT_UCONTEXT)
+    ADD_TEST(msg-storage-ucontext               ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/storage/storage.tesh)
+  endif()
   if(HAVE_RAWCTX)
-    ADD_TEST(msg-masterslave-vivaldi-raw        ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
-    ADD_TEST(msg-token-ring-raw                 ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
+    ADD_TEST(msg-storage-raw                    ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/storage/storage.tesh)
   endif()
+
+  ADD_TEST(msg-token-ring-thread                ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
   if(CONTEXT_UCONTEXT)
-    ADD_TEST(msg-masterslave-vivaldi-ucontext   ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
     ADD_TEST(msg-token-ring-ucontext            ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
   endif()
+  if(HAVE_RAWCTX)
+    ADD_TEST(msg-token-ring-raw                 ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
+  endif()
 
   ADD_TEST(msg-migration-thread                 ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/migration/migration.tesh)
   ADD_TEST(msg-ptask-thread                     ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/parallel_task/parallel_task.tesh)
@@ -400,7 +418,7 @@ if(NOT enable_memcheck)
       ADD_TEST(smpi-pt2pt-ucontext              ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/pt2pt.tesh)
       ADD_TEST(smpi-compute-ucontext            ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/compute.tesh)
       if (NOT WIN32)
-        ADD_TEST(smpi-shared-ucontext             ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/shared.tesh)
+        ADD_TEST(smpi-shared-ucontext           ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/shared.tesh)
       endif()
     endif()
     if(HAVE_RAWCTX)
@@ -413,12 +431,22 @@ if(NOT enable_memcheck)
       ADD_TEST(smpi-pt2pt-raw                   ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/pt2pt.tesh)
       ADD_TEST(smpi-compute-raw                 ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/compute.tesh)
       if (NOT WIN32)
-        ADD_TEST(smpi-shared-raw                  ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/shared.tesh)
+        ADD_TEST(smpi-shared-raw                ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/shared.tesh)
       endif()
     endif()
+
+    ADD_TEST(smpi-energy                        ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/energy.tesh)
+    if(SMPI_F2C)
+      ADD_TEST(smpi-energy-f77                  ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f77/energy.tesh)
+    endif()
+    if(SMPI_F90)
+      ADD_TEST(smpi-energy-f90                  ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f90/energy.tesh)
+    endif()
+
     if(HAVE_TRACING)
       ADD_TEST(smpi-tracing-ptp                 ${TESH_COMMAND} ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/tracing/smpi_traced.tesh)
       ADD_TEST(smpi-replay                      ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/replay/smpi_replay.tesh)
+      ADD_TEST(smpi-replay-ti-tracing           ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/TI_output.tesh)
     endif()
 
     FOREACH (GATHER_COLL default ompi mpich ompi_basic_linear ompi_linear_sync ompi_binomial)
@@ -502,10 +530,10 @@ if(NOT enable_memcheck)
     if(SMPI_F2C)
       ADD_TEST(smpi-mpich3-thread-f77           ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f77/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f77/ -tests=testlist -execarg=--cfg=contexts/factory:thread -execarg=--cfg=contexts/stack_size:8000)
       set_tests_properties(smpi-mpich3-thread-f77 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!")
-      if(NOT HAVE_MC)
-        ADD_TEST(smpi-mpich3-thread-f90         ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f90/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f90/ -tests=testlist -execarg=--cfg=contexts/factory:thread)
-        set_tests_properties(smpi-mpich3-thread-f90 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!")
-      endif()
+    endif()
+    if(SMPI_F90)
+      ADD_TEST(smpi-mpich3-thread-f90           ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f90/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f90/ -tests=testlist -execarg=--cfg=contexts/factory:thread)
+      set_tests_properties(smpi-mpich3-thread-f90 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!")
     endif()
   endif()
 
index 846f9ea..16f8dba 100644 (file)
@@ -78,10 +78,6 @@ set(HAVE_GTNETS 0)
 if(enable_gtnets)
   include(FindGTnets)
 endif()
-if(enable_smpi)
-  include(FindF2c)
-  SET(HAVE_SMPI 1)
-endif()
 if(enable_java)
   find_package(Java REQUIRED COMPONENTS Runtime Development)
   find_package(JNI REQUIRED)
@@ -216,11 +212,19 @@ if(enable_model-checking AND HAVE_MMAP)
   SET(HAVE_MC 1)
   SET(MMALLOC_WANT_OVERRIDE_LEGACY 1)
   include(FindLibunwind)
+  include(FindLibdw)
 else()
   SET(HAVE_MC 0)
   SET(MMALLOC_WANT_OVERRIDE_LEGACY 0)
 endif()
 
+if(enable_smpi)
+  include(FindF2c)
+  # FindGFortran must come after FindF2C, and after having set HAVE_MC
+  include(FindGFortran)
+  SET(HAVE_SMPI 1)
+endif()
+
 #--------------------------------------------------------------------------------------------------
 ### Check for some architecture dependent values
 CHECK_TYPE_SIZE(int SIZEOF_INT)
@@ -511,12 +515,20 @@ if(EXISTS ${CMAKE_HOME_DIRECTORY}/.git/ AND NOT WIN32)
     string(REPLACE "\n" "" GIT_DATE "${GIT_DATE}")
     message(STATUS "Git date: ${GIT_DATE}")
     string(REGEX REPLACE " .*" "" GIT_VERSION "${GIT_VERSION}")
-    STRING(REPLACE " +0000" "" GIT_DATE "${GIT_DATE}")
-    STRING(REPLACE " " "~" GIT_DATE "${GIT_DATE}")
-    STRING(REPLACE ":" "-" GIT_DATE "${GIT_DATE}")
   endif()
 endif()
 
+if(release)
+  set(SIMGRID_VERSION_STRING "${SIMGRID_VERSION_STRING}\\nRelease build")
+else()
+  set(SIMGRID_VERSION_STRING "${SIMGRID_VERSION_STRING}\\nDevelopment build")
+endif()
+if(GIT_VERSION)
+  set(SIMGRID_VERSION_STRING "${SIMGRID_VERSION_STRING} at commit ${GIT_VERSION}")
+endif()
+if(GIT_DATE)
+  set(SIMGRID_VERSION_STRING "${SIMGRID_VERSION_STRING} (${GIT_DATE})")
+endif()
 #--------------------------------------------------------------------------------------------------
 
 set(makecontext_CPPFLAGS_2 "")
index 8629c55..b9854a6 100644 (file)
@@ -105,6 +105,7 @@ set(SMPI_SRC
   src/smpi/smpi_c99.c
   src/smpi/smpi_coll.c
   src/smpi/smpi_comm.c
+  src/smpi/smpi_dvfs.c
   src/smpi/smpi_global.c
   src/smpi/smpi_group.c
   src/smpi/smpi_mpi.c
@@ -490,7 +491,9 @@ set(TRACING_SRC
   src/instr/instr_config.c
   src/instr/instr_interface.c
   src/instr/instr_paje_containers.c
+  src/instr/instr_TI_trace.c
   src/instr/instr_paje_trace.c
+  src/instr/instr_trace.c
   src/instr/instr_paje_header.c
   src/instr/instr_paje_types.c
   src/instr/instr_paje_values.c
@@ -514,6 +517,7 @@ set(MC_SRC
   src/mc/mc_compare.c
   src/mc/mc_dpor.c
   src/mc/mc_global.c
+  src/mc/mc_dwarf.c
   src/mc/mc_liveness.c
   src/mc/mc_memory.c
   src/mc/mc_private.h
@@ -898,6 +902,9 @@ set(EXAMPLES_CMAKEFILES_TXT
   examples/simdag/scheduling/CMakeLists.txt
   examples/smpi/CMakeLists.txt
   examples/smpi/MM/CMakeLists.txt
+  examples/smpi/energy/CMakeLists.txt
+  examples/smpi/energy/f77/CMakeLists.txt
+  examples/smpi/energy/f90/CMakeLists.txt
   examples/xbt/CMakeLists.txt
   )
 
@@ -964,9 +971,11 @@ set(CMAKE_SOURCE_FILES
   buildtools/Cmake/MakeLib.cmake
   buildtools/Cmake/MakeLibWin.cmake
   buildtools/Cmake/Modules/FindF2c.cmake
+  buildtools/Cmake/Modules/FindGFortran.cmake
   buildtools/Cmake/Modules/FindGTnets.cmake
   buildtools/Cmake/Modules/FindGraphviz.cmake
   buildtools/Cmake/Modules/FindLibunwind.cmake
+  buildtools/Cmake/Modules/FindLibdw.cmake
   buildtools/Cmake/Modules/FindLua51Simgrid.cmake
   buildtools/Cmake/Modules/FindNS3.cmake
   buildtools/Cmake/Modules/FindRngStream.cmake
index 7c9a201..775512c 100644 (file)
@@ -67,7 +67,7 @@ if(enable_lib_static AND NOT WIN32)
 endif()
 
 if(enable_java)
-  install(TARGETS SG_java
+  install(TARGETS simgrid-java
       DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/)
   install(FILES ${SIMGRID_JAR}
       DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/java/)
index 68cae01..058ea2d 100644 (file)
@@ -11,12 +11,12 @@ else()
 endif()
 
 if(enable_compile_warnings)
-  set(warnCFLAGS "-fno-common -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wclobbered -Wno-unused-function -Wno-unused-parameter -Wno-strict-aliasing -Wno-format-nonliteral -Werror -Wno-error=clobbered ")
-  if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.5")
-    set(warnCFLAGS "${warnCFLAGS}-Wno-error=unused-but-set-variable ")
-  endif()
-  if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
-    string(REPLACE "-Wclobbered " "" warnCFLAGS "${warnCFLAGS}")
+  set(warnCFLAGS "-fno-common -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wno-unused-function -Wno-unused-parameter -Wno-strict-aliasing -Wno-format-nonliteral -Werror ")
+  if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
+    set(warnCFLAGS "${warnCFLAGS}-Wclobbered -Wno-error=clobbered ")
+    if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.5")
+      set(warnCFLAGS "${warnCFLAGS}-Wno-error=unused-but-set-variable ")
+    endif()
   endif()
 
   set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wall") # FIXME: Q&D hack
@@ -26,15 +26,17 @@ endif()
 
 if(enable_compile_optimizations)
   set(optCFLAGS "-O3 -finline-functions -funroll-loops -fno-strict-aliasing ")
-  if(WIN32)
-    if (COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.7")
-    # On windows, we need 4.8 or higher to enable lto because of http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50293
-      set(optCFLAGS "${optCFLAGS} -flto ")
-    endif()
-  else()    
-    # On non-windows, 4.6 is enough for that
-    if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.5")
-      set(optCFLAGS "${optCFLAGS} -flto ")
+  if(CMAKE_COMPILER_IS_GNUCC)
+    if(WIN32)
+      if (COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.7")
+      # On windows, we need 4.8 or higher to enable lto because of http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50293
+        set(optCFLAGS "${optCFLAGS} -flto ")
+      endif()
+    else()    
+      # On non-windows, 4.6 is enough for that
+      if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.5")
+        set(optCFLAGS "${optCFLAGS} -flto ")
+      endif()
     endif()
   endif()
 else()
index 51fb860..4c6d9d2 100644 (file)
@@ -69,6 +69,9 @@ add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/simdag/scheduling)
 
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/MM)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/energy)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f77)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f90)
 
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/xbt)
 
index c6a77b7..f7c69b4 100644 (file)
@@ -2,31 +2,31 @@ cmake_minimum_required(VERSION 2.8.6)
 
 include(UseJava)
 
-# Rules to build libSG_java
+# Rules to build libsimgrid-java
 #
-add_library(SG_java SHARED ${JMSG_C_SRC})
-set_target_properties(SG_java PROPERTIES VERSION ${libSG_java_version})
+add_library(simgrid-java SHARED ${JMSG_C_SRC})
+set_target_properties(simgrid-java PROPERTIES VERSION ${libsimgrid-java_version})
 if (CMAKE_VERSION VERSION_LESS "2.8.8")
   include_directories(${JNI_INCLUDE_DIRS})
 
   message(WARNING "[Java] Try to workaround missing feature in older CMake.  You should better update CMake to version 2.8.8 or above.")
   get_directory_property(CHECK_INCLUDES INCLUDE_DIRECTORIES)
 else()
-  get_target_property(COMMON_INCLUDES SG_java INCLUDE_DIRECTORIES)
+  get_target_property(COMMON_INCLUDES simgrid-java INCLUDE_DIRECTORIES)
   if (COMMON_INCLUDES)
-    set_target_properties(SG_java PROPERTIES
+    set_target_properties(simgrid-java PROPERTIES
       INCLUDE_DIRECTORIES "${COMMON_INCLUDES};${JNI_INCLUDE_DIRS}")
   else()
-    set_target_properties(SG_java PROPERTIES
+    set_target_properties(simgrid-java PROPERTIES
       INCLUDE_DIRECTORIES "${JNI_INCLUDE_DIRS}")
   endif()
-  add_dependencies(SG_java simgrid)
+  add_dependencies(simgrid-java simgrid)
 
-  get_target_property(CHECK_INCLUDES SG_java INCLUDE_DIRECTORIES)
+  get_target_property(CHECK_INCLUDES simgrid-java INCLUDE_DIRECTORIES)
 endif()
-message("-- [Java] SG_java includes: ${CHECK_INCLUDES}")
+message("-- [Java] simgrid-java includes: ${CHECK_INCLUDES}")
 
-target_link_libraries(SG_java simgrid)
+target_link_libraries(simgrid-java simgrid)
 
 
 
@@ -39,14 +39,14 @@ if(WIN32)
     message(FATAL_ERROR "Java JVM needs to be 32 bits to be able to run with Simgrid on Windows for now")
   endif()
 
-  set_target_properties(SG_java PROPERTIES
+  set_target_properties(simgrid-java PROPERTIES
     LINK_FLAGS "-Wl,--subsystem,windows,--kill-at"
     PREFIX "")
   find_path(PEXPORTS_PATH NAMES pexports.exe PATHS NO_DEFAULT_PATHS)
   message(STATUS "pexports: ${PEXPORTS_PATH}")
   if(PEXPORTS_PATH)
-    add_custom_command(TARGET SG_java POST_BUILD
-      COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/lib/SG_java.dll > ${CMAKE_BINARY_DIR}/lib/SG_java.def)
+    add_custom_command(TARGET simgrid-java POST_BUILD
+      COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/lib/simgrid-java.dll > ${CMAKE_BINARY_DIR}/lib/simgrid-java.def)
   endif(PEXPORTS_PATH)
 endif()
 
@@ -59,8 +59,8 @@ set(SIMGRID_JAR "${CMAKE_BINARY_DIR}/simgrid.jar")
 set(MANIFEST_FILE "${CMAKE_HOME_DIRECTORY}/src/bindings/java/MANIFEST.MF")
 set(LIBSIMGRID_SO
   libsimgrid${CMAKE_SHARED_LIBRARY_SUFFIX})
-set(LIBSG_JAVA_SO
-  ${CMAKE_SHARED_LIBRARY_PREFIX}SG_java${CMAKE_SHARED_LIBRARY_SUFFIX})
+set(LIBSIMGRID_JAVA_SO
+  ${CMAKE_SHARED_LIBRARY_PREFIX}simgrid-java${CMAKE_SHARED_LIBRARY_SUFFIX})
 
 ## Name of the "NATIVE" folder in simgrid.jar
 ##
@@ -86,16 +86,20 @@ endif()
 
 ## Here is how to build simgrid.jar
 ##
-set(CMAKE_JAVA_TARGET_OUTPUT_NAME simgrid)
-add_jar(SG_java_pre_jar ${JMSG_JAVA_SRC})
+if(CMAKE_VERSION VERSION_LESS "2.8.12")
+  set(CMAKE_JAVA_TARGET_OUTPUT_NAME simgrid)
+  add_jar(simgrid-java_pre_jar ${JMSG_JAVA_SRC})
+else()
+  add_jar(simgrid-java_pre_jar ${JMSG_JAVA_SRC} OUTPUT_NAME simgrid)
+endif()
 
 add_custom_command(
   COMMENT "Finalize simgrid.jar..."
   OUTPUT ${SIMGRID_JAR}_finalized
-  DEPENDS simgrid SG_java SG_java_pre_jar
+  DEPENDS simgrid simgrid-java simgrid-java_pre_jar
           ${SIMGRID_JAR} ${MANIFEST_FILE}
           ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO}
-          ${CMAKE_BINARY_DIR}/lib/${LIBSG_JAVA_SO}
+          ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO}
           ${CMAKE_HOME_DIRECTORY}/COPYING
           ${CMAKE_HOME_DIRECTORY}/ChangeLog
           ${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java
@@ -104,8 +108,8 @@ add_custom_command(
   COMMAND ${CMAKE_COMMAND} -E make_directory "${JSG_BUNDLE}"
   COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO}" "${JSG_BUNDLE}"
   COMMAND ${STRIP_COMMAND} -S "${JSG_BUNDLE}/${LIBSIMGRID_SO}"
-  COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/lib/${LIBSG_JAVA_SO}" "${JSG_BUNDLE}"
-  COMMAND ${STRIP_COMMAND} -S "${JSG_BUNDLE}/${LIBSG_JAVA_SO}"
+  COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO}" "${JSG_BUNDLE}"
+  COMMAND ${STRIP_COMMAND} -S "${JSG_BUNDLE}/${LIBSIMGRID_JAVA_SO}"
   COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/COPYING" "${JSG_BUNDLE}"
   COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/ChangeLog" "${JSG_BUNDLE}"
   COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java" "${JSG_BUNDLE}"
@@ -114,4 +118,4 @@ add_custom_command(
   COMMAND ${CMAKE_COMMAND} -E remove ${SIMGRID_JAR}_finalized
   COMMAND ${CMAKE_COMMAND} -E touch ${SIMGRID_JAR}_finalized
   )
-add_custom_target(SG_java_jar ALL DEPENDS ${SIMGRID_JAR}_finalized)
+add_custom_target(simgrid-java_jar ALL DEPENDS ${SIMGRID_JAR}_finalized)
index 93ace1d..2f81c23 100644 (file)
@@ -91,6 +91,9 @@ if(HAVE_MC)
   #   (that includes FindLibunwind.cmake), so simply load it now.
   
   SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind")
+
+  # Same for libdw
+  SET(SIMGRID_DEP "${SIMGRID_DEP} -ldw")
   # This supposes that the host machine is either an AMD or a X86.
   # This is deeply wrong, and should be fixed by manually loading -lunwind-PLAT (FIXME)
   if(PROCESSOR_x86_64)
index efe8df6..611e765 100644 (file)
@@ -56,20 +56,18 @@ message(STATUS "Looking for bin f2c")
 if(F2C_EXE)
   message(STATUS "Found F2C: ${F2C_EXE}")
 else()
-  message(STATUS "Looking for bin f2c - not found")
+  message(STATUS "Looking for bin f2c - not found (http://www.netlib.org/f2c/)")
 endif()
 
 mark_as_advanced(HAVE_F2C_H)
 mark_as_advanced(F2C_EXE)
 mark_as_advanced(HAVE_F2C_LIB)
 
-if(HAVE_F2C_H)
-  include_directories(${HAVE_F2C_H})
-else()
-    message("-- Fortran for smpi is not installed (http://www.netlib.org/f2c/).")
+if(HAVE_F2C_LIB)
+  get_filename_component(F2C_LIBRARY_PATH "${HAVE_F2C_LIB}" PATH)
+  file(TO_NATIVE_PATH "${F2C_LIBRARY_PATH}" F2C_LIBRARY_PATH)
 endif()
 
-
 #Some old versions of 64 bits systems seem to have a different size between C and Fortran Datatypes
 #Deactivate F2C with these versions, in order to avoid breaking test cases in legacy systems (as Fedora 13)
 set(COMPILER_OK 1)
@@ -82,3 +80,9 @@ set(SMPI_F2C 0)
 if(HAVE_F2C_H AND F2C_EXE AND HAVE_F2C_LIB AND COMPILER_OK)
   set(SMPI_F2C 1)
 endif()
+
+if(SMPI_F2C)
+  include_directories(${HAVE_F2C_H})
+else()
+  message("-- Fortran 77 support for smpi is disabled.")
+endif()
diff --git a/buildtools/Cmake/Modules/FindGFortran.cmake b/buildtools/Cmake/Modules/FindGFortran.cmake
new file mode 100644 (file)
index 0000000..f034577
--- /dev/null
@@ -0,0 +1,34 @@
+find_program(GFORTRAN_EXE
+  NAME gfortran
+  PATH_SUFFIXES bin/
+  PATHS
+  /opt
+  /opt/local
+  /opt/csw
+  /sw
+  /usr
+  )
+
+mark_as_advanced(GFORTRAN_EXE)
+
+message(STATUS "Looking for bin gfortran")
+if(GFORTRAN_EXE)
+  message(STATUS "Found gfortran: ${GFORTRAN_EXE}")
+else()
+  message(STATUS "Looking for bin gfortran - not found")
+endif()
+
+set(SMPI_F90 0)
+if(GFORTRAN_EXE)
+  if(NOT SMPI_F2C)
+    message("-- Fortran 90 support for smpi also needs f2c.")
+  elseif(HAVE_MC)
+    message("-- Fortran 90 support for smpi is currently not compatible with model checking.")
+  else()
+    set(SMPI_F90 1)
+  endif()
+endif()
+
+if(NOT SMPI_F90)
+  message("-- Fortran 90 support for smpi is disabled.")
+endif()
diff --git a/buildtools/Cmake/Modules/FindLibdw.cmake b/buildtools/Cmake/Modules/FindLibdw.cmake
new file mode 100644 (file)
index 0000000..9e07a38
--- /dev/null
@@ -0,0 +1,55 @@
+find_library(PATH_LIBDW_LIB
+  NAMES dw
+  HINTS
+  $ENV{SIMGRID_LIBDW_LIBRARY_PATH}
+  $ENV{LD_LIBRARY_PATH}
+  $ENV{LIBDW_LIBRARY_PATH}
+  PATH_SUFFIXES lib/ GnuWin32/lib
+  PATHS
+  /opt
+  /opt/local
+  /opt/csw
+  /sw
+  /usr)
+
+
+find_path(PATH_LIBDW_H "elfutils/libdw.h"
+  HINTS
+  $ENV{SIMGRID_LIBDW_LIBRARY_PATH}
+  $ENV{LD_LIBRARY_PATH}
+  $ENV{LIBDW_LIBRARY_PATH}
+  PATH_SUFFIXES include/ GnuWin32/include
+  PATHS
+  /opt
+  /opt/local
+  /opt/csw
+  /sw
+  /usr)
+
+message(STATUS "Looking for libdw.h")
+if(PATH_LIBDW_H)
+  message(STATUS "Looking for libdw.h - found")
+else()
+  message(STATUS "Looking for libdw.h - not found")
+endif()
+
+message(STATUS "Looking for libdw")
+if(PATH_LIBDW_LIB)
+  message(STATUS "Looking for libdw - found")
+else()
+  message(STATUS "Looking for libdw - not found")
+endif()
+
+if(PATH_LIBDW_LIB AND PATH_LIBDW_H)
+  string(REGEX REPLACE "/libdw.*[.]${LIB_EXE}$" "" PATH_LIBDW_LIB "${PATH_LIBDW_LIB}")
+  string(REGEX REPLACE "/libdw.h"               "" PATH_LIBDW_H   "${PATH_LIBDW_H}")
+
+  include_directories(${PATH_LIBDW_H})
+  link_directories(${PATH_LIBDW_LIB})
+
+else()
+  message(FATAL_ERROR "Please either install the libdw-dev package (or equivalent) or turn off the model-checking option of SimGrid.")
+endif()
+
+mark_as_advanced(PATH_LIBDW_H)
+mark_as_advanced(PATH_LIBDW_LIB)
index 56de1f7..03bbed9 100644 (file)
@@ -66,5 +66,5 @@ else()
   message(FATAL_ERROR "Please either install the libunwind7-dev package (or equivalent) or turn off the model-checking option of SimGrid.")
 endif()
 
-mark_as_advanced(PATH_LIBUNWIND_H)
-mark_as_advanced(PATH_LIBUNWIND_LIB)
\ No newline at end of file
+mark_as_advanced(PATH_LIBDW_H)
+mark_as_advanced(PATH_LIBDW_LIB)
index d15127a..054222c 100644 (file)
@@ -74,9 +74,9 @@ message("\nConfiguration of package `simgrid':")
 message("        BUILDNAME ...........: ${BUILDNAME}")
 message("        SITE ................: ${SITE}")
 if(release)
-  message("        Release .............: simgrid-${release_version} (release build)")
+  message("        Release .............: simgrid-${release_version}${SIMGRID_VERSION_EXTRA} (release build)")
 else()
-  message("        Release .............: simgrid-${release_version} (development build)")
+  message("        Release .............: simgrid-${release_version}${SIMGRID_VERSION_EXTRA} (development build)")
 endif()
 message("")
 message("        Compiler: C .........: ${CMAKE_C_COMPILER} (${CMAKE_C_COMPILER_ID})")
@@ -111,6 +111,7 @@ message("        Compile Lua .........: ${HAVE_LUA}")
 message("        Compile Smpi ........: ${HAVE_SMPI}")
 message("        Compile MPI testsuite: ${enable_smpi_MPICH3_testsuite}")
 message("        Compile Smpi f77 ....: ${SMPI_F2C}")
+message("        Compile Smpi f90 ....: ${SMPI_F90}")
 message("        Compile Static ......: ${enable_lib_static}")
 message("")
 message("        Maintainer mode .....: ${enable_maintainer_mode}")
index 9170663..e103a8f 100755 (executable)
@@ -20,6 +20,7 @@ my($time_to_wait)=0;
 my $path = $0;
 my $OS;
 my $enable_coverage=0;
+my $sort_prefix = 19;
 my $tesh_file;
 my $tesh_name;
 my $error=0;
@@ -43,18 +44,6 @@ else{
     $ENV{"PRINTF_EXPONENT_DIGITS"} = "2"; 
 }
 
-
-sub trim($)
-{
-    my $string = shift;
-    $string =~ s/^\s+//;
-    $string =~ s/\s+$//;
-    return $string;
-}
-
-# make sure we received a tesh file
-scalar @ARGV > 0 || die "Usage:\n  tesh [*options*] *tesh_file*\n";
-
 #Add current directory to path
 $ENV{PATH} = "$ENV{PATH}:.";
 
@@ -309,25 +298,28 @@ sub parse_out {
   my @got;
   while(defined(my $got=<got>)) {
     $got =~ s/\r//g;
-    $got =~ s/^( )*//g;
     chomp $got;
-    $got=trim($got);
-    if( $got ne ""){
-        if (!($enable_coverage and $got=~ /^profiling:/)){    
-        push @got, "$got";
-     }
-  }
+    if (!($enable_coverage and $got=~ /^profiling:/)){
+      push @got, $got;
+    }
   }    
 
   if ($cmd{'sort'}){   
     sub mysort{
-    $a cmp $b
+        substr($a, 0, $sort_prefix) cmp substr($b, 0, $sort_prefix)
     }
-    use sort qw(defaults _quicksort); # force quicksort
+    use sort 'stable';
     @got = sort mysort @got;
+    while (@got and $got[0] eq "") {
+      shift @got;
+    }
+
     #also resort the other one, as perl sort is not the same as the C one used to generate teshes
     if(defined($cmd{'out'})){
       @{$cmd{'out'}}=sort mysort @{$cmd{'out'}};
+      while (@{$cmd{'out'}} and ${$cmd{'out'}}[0] eq "") {
+        shift @{$cmd{'out'}};
+      }
     }
   }
 
@@ -434,7 +426,7 @@ LINE: while (not $finished and not $error) {
   }
 
   # Push delayed commands on empty lines
-  unless ($line =~ m/^(.).(.*)$/) {
+  unless ($line =~ m/^(.)(.*)$/) {
     if (defined($cmd{'cmd'}))  {
       exec_cmd(\%cmd);
       %cmd = ();
@@ -443,16 +435,14 @@ LINE: while (not $finished and not $error) {
   }     
  
   my ($cmd,$arg) = ($1,$2);
+  $arg =~ s/^ //g;
   $arg =~ s/\r//g;
   $arg =~ s/\\\\/\\/g;
   # handle the commands
   if ($cmd =~ /^#/) {    #comment
   } elsif ($cmd eq '>'){    #expected result line
     print "[TESH/debug] push expected result\n" if $opts{'debug'};
-  $arg=trim($arg);
-    if($arg ne ""){
     push @{$cmd{'out'}}, $arg;
-  }
 
   } elsif ($cmd eq '<') {    # provided input
     print "[TESH/debug] push provided input\n" if $opts{'debug'};
@@ -506,6 +496,9 @@ LINE: while (not $finished and not $error) {
       %cmd = ();
     }
     $cmd{'sort'} = 1;
+    if ($line =~ /^!\s*output sort\s+(\d+)/) {
+        $sort_prefix = $1;
+    }
   }
   elsif($line =~ /^!\s*output ignore/){    #output ignore
     if (defined($cmd{'cmd'})) {
@@ -540,7 +533,7 @@ print "hey\n";
     $line =~ s/\r//g;
     setenv_cmd($line);
   }
-  elsif($line =~ /^!\s*include/){    #output sort
+  elsif($line =~ /^!\s*include/){    #include
     if (defined($cmd{'cmd'})) {
       exec_cmd(\%cmd);
       %cmd = ();
index f56228a..347192e 100644 (file)
@@ -18,6 +18,14 @@ set(simgrid_fragile_sources
 ### Rebuild the supernovae source files
 if (enable_supernovae) # I need supernovae
 
+  message(WARNING
+"==============================================================================\n"
+"WARNING\n"
+"Supernovae builds are deprecated, and expected to be removed in the next version of SimGrid.\n"
+"If you want this feature to be kept, please tell us at <simgrid-user@lists.gforge.inria.fr>.\n"
+"===============================================================================
+")
+
   # supernovae files are generated. I promise
   set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/src/supernovae_sg.c
     PROPERTIES GENERATED true)
index 2550b85..53813ec 100644 (file)
@@ -174,8 +174,8 @@ Section "Java Bindings" JavaSection
        # install java library and examples\r
        CreateDirectory $INSTDIR\examples\simgrid-java\r
        setOutPath $INSTDIR\lib\r
-       file /nonfatal "lib\SG_java.dll"\r
-       file /nonfatal "lib\SG_java.def"\r
+       file /nonfatal "lib\simgrid-java.dll"\r
+       file /nonfatal "lib\simgrid-java.def"\r
        file /nonfatal "simgrid.jar"\r
        setOutPath $INSTDIR\examples\simgrid-java\r
        file /nonfatal /r ".\examples\"\r
index deceff5..52e6752 100755 (executable)
@@ -3,6 +3,14 @@
 WORKSPACE=$1
 build_mode=$2
 
+# usage: die status message...
+die () {
+  local status=${1:-1}
+  shift
+  [ $# -gt 0 ] || set -- "Error - Halting"
+  echo "$@" >&2
+  exit $status
+}
 
 rm -rf $WORKSPACE/build
 
@@ -13,86 +21,37 @@ export PATH=./lib/:../../lib:$PATH
 
 if test "$(uname -o)" = "Msys"
 then 
-    
-    cmake -G "MSYS Makefiles" $WORKSPACE
     #$NUMBER_OF_PROCESSORS should be already set on win
     if [ -z "$NUMBER_OF_PROCESSORS" ]; then
         NUMBER_OF_PROCESSORS=1
     fi  
 
-    if [ $? -ne 0 ] ; then
-        echo "Failed to do the first cmake - Halting"
-        exit 1
-    fi
-
-    make dist
-
-    if [ $? -ne 0 ] ; then
-        echo "Failed to build dist - Halting"
-        exit 2
-    fi
-
-    cmake -G "MSYS Makefiles" -Denable_java=ON -Denable_model-checking=OFF -Denable_lua=OFF -Denable_compile_optimizations=ON  -Denable_smpi=ON -Denable_smpi_MPICH3_testsuite=ON -Denable_compile_warnings=OFF .
-
-    if [ $? -ne 0 ] ; then
-        echo "Failed to perform the Cmake for $build_mode - Halting"
-        exit 5
-    fi
+    cmake -G "MSYS Makefiles" $WORKSPACE || die 1 "Failed to do the first cmake - Halting"
 
-    make -j$NUMBER_OF_PROCESSORS
+    make dist || die 2 "Failed to build dist - Halting"
 
-    if [ $? -ne 0 ] ; then
-        echo "Build failure - Halting"
-        exit 5
-    fi
+    cmake -G "MSYS Makefiles" -Denable_java=ON -Denable_model-checking=OFF -Denable_lua=OFF -Denable_compile_optimizations=ON  -Denable_smpi=ON -Denable_smpi_MPICH3_testsuite=ON -Denable_compile_warnings=OFF . \
+    || die 5 "Failed to perform the Cmake for $build_mode - Halting"
 
-    make nsis
+    make -j$NUMBER_OF_PROCESSORS || die 5 "Build failure - Halting"
 
-    if [ $? -ne 0 ] ; then
-        echo "Failure while generating the Windows executable - Halting"
-        exit 6
-    fi
+    make nsis || die 6 "Failure while generating the Windows executable - Halting"
 
 else
-    NUMBER_OF_PROCESSORS=0
     # Linux:
     cpuinfo_file="/proc/cpuinfo"
-    if [ -f "${cpuinfo_file}" ]; then
-      NUMBER_OF_PROCESSORS=$(grep -c "processor.: " ${cpuinfo_file}) 
-    fi
-    # grep returns 0 or cpuinfo not found
-    if [ $NUMBER_OF_PROCESSORS = 0 ]; then
-      NUMBER_OF_PROCESSORS=1
-    fi
-
-    cmake $WORKSPACE
+    NUMBER_OF_PROCESSORS=$(lscpu -p 2>/dev/null | grep -c '^[^#]') || \
+    NUMBER_OF_PROCESSORS=$(grep -c "^processor[[:space:]]*:" ${cpuinfo_file} 2>/dev/null)
+    [ "0$NUMBER_OF_PROCESSORS" -gt 0 ] || NUMBER_OF_PROCESSORS=1
 
-    if [ $? -ne 0 ] ; then
-        echo "Failed to do the first cmake - Halting"
-        exit 1
-    fi
+    cmake $WORKSPACE || die 1 "Failed to do the first cmake - Halting"
 
     rm Simgrid*.tar.gz
-    make dist
-
-    if [ $? -ne 0 ] ; then
-        echo "Failed to build dist - Halting"
-        exit 2
-    fi
-
-    tar xzf `cat VERSION`.tar.gz
-
-    if [ $? -ne 0 ] ; then
-        echo "Failed to extract the generated tgz - Halting"
-        exit 3
-    fi
+    make dist || die 2 "Failed to build dist - Halting"
 
-    cd `cat VERSION`
+    tar xzf `cat VERSION`.tar.gz || die 3 "Failed to extract the generated tgz - Halting"
 
-    if [ $? -ne 0 ] ; then
-        echo "Path `cat VERSION` cannot be found - Halting"
-        exit 4
-    fi
+    cd `cat VERSION` || die 4 "Path `cat VERSION` cannot be found - Halting"
 
     if [ "$build_mode" = "Debug" ]
     then
@@ -109,21 +68,11 @@ else
     cmake -Denable_lua=OFF -Denable_java=ON -Denable_tracing=ON -Denable_smpi=ON -Denable_compile_optimizations=OFF -Denable_compile_warnings=ON -Denable_lib_static=OFF -Denable_model-checking=OFF -Denable_latency_bound_tracking=OFF -Denable_gtnets=OFF -Denable_jedule=OFF -Denable_mallocators=OFF -Denable_memcheck=ON .
     fi
 
-    if [ $? -ne 0 ] ; then
-        echo "Failed to perform the Cmake for $build_mode - Halting"
-        exit 5
-    fi
-
-    make -j$NUMBER_OF_PROCESSORS
-
-    if [ $? -ne 0 ] ; then
-        echo "Build failure - Halting"
-        exit 6
-    fi
+    [ $? -eq 0 ] || die 5 "Failed to perform the Cmake for $build_mode - Halting"
 
+    make -j$NUMBER_OF_PROCESSORS || die 6 "Build failure - Halting"
 fi
 
-
 echo "running tests with $NUMBER_OF_PROCESSORS processors"
 
 ctest -T test --no-compress-output  --timeout 100 -j$NUMBER_OF_PROCESSORS || true
index 25721cc..2ad4cd3 100644 (file)
@@ -83,7 +83,7 @@ $ cmake .
 \subsubsection bindings_binding_java_use How to use Simgrid-java
 
 To execute the examples you need to add the path where you installed
-the generated `libSG_java` and `libsimgrid` libraries
+the generated `libsimgrid-java` and `libsimgrid` libraries
 into the `LD_LIBRARY_PATH`.
 
 Be careful on Mac, this variable is called `DYLD_LIBRARY_PATH` and not
@@ -93,7 +93,7 @@ Be careful on Mac, this variable is called `DYLD_LIBRARY_PATH` and not
 $ export SIMGRID_ROOT="$HOME/Install/simgrid/" # change it to the path where you installed the SimGrid library
 $ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$SIMGRID_ROOT/lib
 $ cd examples
-$ java -cp .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml
+$ java -classpath .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml
 ~~~~
 
 If you want to make these settings permanent even after a reboot, you
@@ -203,16 +203,16 @@ factory if your JVM support it, so you will just need to execute your
 simulation with the correct JVM. The selected context factory gets
 displayed automatically.
 ~~~~{.sh}
-export LD_LIBRARY_PATH=/path/to/simgrid.so:/path/to/libSG_java.so
+export LD_LIBRARY_PATH=/path/to/simgrid.so:/path/to/libsimgrid-java.so
 cd examples
-$PATH_TO_COROUTINE_JVM/java -cp .:../simgrid.jar masterslave.Masterslave masterslave/ masterslaveDeployment.xml platform.xml
+$PATH_TO_COROUTINE_JVM/java -classpath .:../simgrid.jar masterslave.Masterslave masterslave/ masterslaveDeployment.xml platform.xml
 ~~~~
 
 Note that you may have to adjust the "coro.stacksPerThread"
 configuration option to run large simulations. The default is 100 and
 you want to increase it to run more processes.
 ~~~~{.sh}
-$ $PATH_TO_COROUTINE_JVM/java -Dcoro.stacksPerThread=$STACKS_NUMBER -cp .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml
+$ $PATH_TO_COROUTINE_JVM/java -Dcoro.stacksPerThread=$STACKS_NUMBER -classpath .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml
 ~~~~
 
 If you reach the point where the creation of new simulated processes
index 91c6de2..727819e 100644 (file)
@@ -14,12 +14,6 @@ Please apply the following checklist before releasing.
     version numbers that were used.
   - The "make distcheck" target works (testing that every files needed
     to build and install are included in the archive)
-  - The URL provided to download in the examples of
-    doc/doxygen/install.doc is accurate. Note that updating the 
-    version number is not enough as it only impacts the name that will
-    be given to the downloaded file. The real identifier is the number
-    before, between /s. This makes this part very difficult to
-    generate automatically.
 - Tests
   - All tests pass on a reasonable amount of platforms (typically,
     everything on cdash)
index 0cf579c..e091538 100644 (file)
@@ -196,8 +196,8 @@ For a more "fancy" output, you can try:
 For a really fancy output, you should use [viva/triva][fn:1]:
 
 ~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:1 \
-    --cfg=tracing/uncategorized:1 --cfg=viva/uncategorized:uncat.plist
+./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
+    --cfg=tracing/uncategorized:yes --cfg=viva/uncategorized:uncat.plist
 LANG=C ; viva simgrid.trace uncat.plist
 ~~~~
  
@@ -205,16 +205,16 @@ For a more classical Gantt-Chart visualization, you can produce a
 [Paje][fn:5] trace:
 
 ~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:1 \
-    --cfg=tracing/msg/process:1
+./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
+    --cfg=tracing/msg/process:yes
 LANG=C ; Paje simgrid.trace
 ~~~~
 
 Alternatively, you can use [vite][fn:6].
 
 ~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:1 \
-    --cfg=tracing/msg/process:1 --cfg=tracing/basic:1
+./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
+    --cfg=tracing/msg/process:yes --cfg=tracing/basic:yes
 vite simgrid.trace
 ~~~~
 
@@ -388,8 +388,8 @@ void MSG_task_set_category (msg_task_t task, const char *category);
 The outcome can then be visualized as follows:
 
 ~~~~{.sh}
-./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:1\
-    --cfg=tracing/categorized:1 --cfg=viva/categorized:viva_cat.plist
+./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:yes\
+    --cfg=tracing/categorized:yes --cfg=viva/categorized:viva_cat.plist
 LANG=C; viva simgrid.trace viva_cat.plist
 ~~~~
 
@@ -399,8 +399,8 @@ and there are several masters deployed on the platform. Using a
 Gantt-chart visualization may help:
 
 ~~~~{.sh}
-./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:1 \
-    --cfg=tracing/msg/process:1
+./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:yes \
+    --cfg=tracing/msg/process:yes
 LANG=C; Paje simgrid.trace
 ~~~~
 
index 1461798..9f5fa98 100644 (file)
@@ -239,7 +239,7 @@ initialization are done in the simulator.
 It is possible to specify a timing gap between consecutive emission on
 the same network card through the \b network/sender_gap item. This
 is still under investigation as of writting, and the default value is
-to wait 0 seconds between emissions (no gap applied).
+to wait 10 microseconds (1e-5 seconds) between emissions.
 
 \subsubsection options_model_network_asyncsend Simulating asyncronous send
 
@@ -447,7 +447,7 @@ you never used the tracing API.
 
 - Any SimGrid-based simulator (MSG, SimDag, SMPI, ...) and raw traces:
 \verbatim
---cfg=tracing:1 --cfg=tracing/uncategorized:1 --cfg=triva/uncategorized:uncat.plist
+--cfg=tracing:yes --cfg=tracing/uncategorized:yes --cfg=triva/uncategorized:uncat.plist
 \endverbatim
     The first parameter activates the tracing subsystem, the second
     tells it to trace host and link utilization (without any
@@ -456,7 +456,7 @@ you never used the tracing API.
 
 - MSG or SimDag-based simulator and categorized traces (you need to declare categories and classify your tasks according to them)
 \verbatim
---cfg=tracing:1 --cfg=tracing/categorized:1 --cfg=triva/categorized:cat.plist
+--cfg=tracing:yes --cfg=tracing/categorized:yes --cfg=triva/categorized:cat.plist
 \endverbatim
     The first parameter activates the tracing subsystem, the second
     tells it to trace host and link categorized utilization and the
@@ -468,7 +468,7 @@ you never used the tracing API.
 smpirun -trace ...
 \endverbatim
     The <i>-trace</i> parameter for the smpirun script runs the
-simulation with --cfg=tracing:1 and --cfg=tracing/smpi:1. Check the
+simulation with --cfg=tracing:yes and --cfg=tracing/smpi:yes. Check the
 smpirun's <i>-help</i> parameter for additional tracing options.
 
 Sometimes you might want to put additional information on the trace to
index 3b2a827..2c4a4d8 100644 (file)
@@ -108,7 +108,7 @@ tracing
   Safe switch. It activates (or deactivates) the tracing system.
   No other tracing options take effect if this one is not activated.
 \verbatim
---cfg=tracing:1
+--cfg=tracing:yes
 \endverbatim
 
 \li <b>\c
@@ -117,7 +117,7 @@ tracing/categorized
   It activates the categorized resource utilization tracing. It should
   be enabled if tracing categories are used by this simulator.
 \verbatim
---cfg=tracing/categorized:1
+--cfg=tracing/categorized:yes
 \endverbatim
 
 \li <b>\c
@@ -127,7 +127,7 @@ tracing/uncategorized
   this simulator do not use tracing categories and resource use have to be
   traced.
 \verbatim
---cfg=tracing/uncategorized:1
+--cfg=tracing/uncategorized:yes
 \endverbatim
 
 \li <b>\c
@@ -151,7 +151,7 @@ tracing/onelink_only
   This option let the user tell the tracing system to use only the routes
   that are composed with just one link.
 \verbatim
---cfg=tracing/onelink_only:1
+--cfg=tracing/onelink_only:yes
 \endverbatim
 
 \li <b>\c
@@ -162,7 +162,7 @@ tracing/smpi
   visualizations. Every MPI function (implemented by SMPI) is transformed in a
   state, and point-to-point communications can be analyzed with arrows.
 \verbatim
---cfg=tracing/smpi:1
+--cfg=tracing/smpi:yes
 \endverbatim
 
 \li <b>\c
@@ -171,7 +171,7 @@ tracing/smpi/group
   This option only has effect if this simulator is SMPI-based. The processes
   are grouped by the hosts where they were executed.
 \verbatim
---cfg=tracing/smpi/group:1
+--cfg=tracing/smpi/group:yes
 \endverbatim
 
 \li <b>\c
@@ -180,7 +180,7 @@ tracing/smpi/computing
   This option only has effect if this simulator is SMPI-based. The parts external
 to SMPI are also outputted to the trace. Provides better way to analyze the data automatically.
 \verbatim
---cfg=tracing/smpi/computing:1
+--cfg=tracing/smpi/computing:yes
 \endverbatim
 
 \li <b>\c
@@ -189,7 +189,7 @@ tracing/smpi/internals
   This option only has effect if this simulator is SMPI-based. Display internal communications
 happening during a collective MPI call.
 \verbatim
---cfg=tracing/smpi/internals:1
+--cfg=tracing/smpi/internals:yes
 \endverbatim
 
 \li <b>\c
@@ -198,7 +198,7 @@ tracing/smpi/display_sizes
   This option only has effect if this simulator is SMPI-based. Display the sizes of the messages
 exchanged in the trace, both in the links and on the states. For collective, size means the global size of data sent by the process in general.
 \verbatim
---cfg=tracing/smpi/display_sizes:1
+--cfg=tracing/smpi/display_sizes:yes
 \endverbatim
 
 \li <b>\c
@@ -208,7 +208,7 @@ tracing/msg/process
   behavior of all categorized MSG processes, grouping them by hosts. This option
   can be used to track process location if this simulator has process migration.
 \verbatim
---cfg=tracing/msg/process:1
+--cfg=tracing/msg/process:yes
 \endverbatim
 
 \li <b>\c
@@ -221,7 +221,7 @@ tracing/buffer
  impacted if this option is activated, but you are sure to get a trace
  file with events sorted.
 \verbatim
---cfg=tracing/buffer:1
+--cfg=tracing/buffer:yes
 \endverbatim
 
 \li <b>\c
@@ -234,7 +234,7 @@ option is activated, only the routes with one link are used to
 register the topology within an AS.  Routes among AS continue to be
 traced as usual.
 \verbatim
---cfg=tracing/onelink_only:1
+--cfg=tracing/onelink_only:yes
 \endverbatim
 
 \li <b>\c
@@ -244,7 +244,7 @@ Disable the destruction of containers at the end of simulation. This
 can be used with simulators that have a different notion of time
 (different from the simulated time).
 \verbatim
---cfg=tracing/disable_destroy:1
+--cfg=tracing/disable_destroy:yes
 \endverbatim
 
 \li <b>\c
@@ -255,7 +255,7 @@ Use this option if you are using one of these tools to visualize the simulation
 trace. Keep in mind that the trace might be incomplete, without all the
 information that would be registered otherwise.
 \verbatim
---cfg=tracing/basic:1
+--cfg=tracing/basic:yes
 \endverbatim
 
 \li <b>\c
@@ -307,8 +307,8 @@ with the following parameters (it will work with <b>any</b> Simgrid
 simulator):
 \verbatim
 ./your_simulator \
-          --cfg=tracing:1 \
-          --cfg=tracing/uncategorized:1 \
+          --cfg=tracing:yes \
+          --cfg=tracing/uncategorized:yes \
           --cfg=tracing/filename:mytracefile.trace \
           --cfg=viva/uncategorized:uncat.plist
 \endverbatim
@@ -322,8 +322,8 @@ using the <b>MSG_task_set_category (...)</b>
 recompiling, run your simulator with the following parameters:
 \verbatim
 ./your_simulator \
-          --cfg=tracing:1 \
-          --cfg=tracing/categorized:1 \
+          --cfg=tracing:yes \
+          --cfg=tracing/categorized:yes \
           --cfg=tracing/filename:mytracefile.trace \
           --cfg=viva/categorized:cat.plist
 \endverbatim
index 18d4de1..b150f79 100644 (file)
@@ -13,8 +13,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 6083344..72c3ab7 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 ! timeout 30
-$ java -cp ${classpath:=.} async/AsyncTest ${srcdir:=.}/platform.xml ${srcdir:=.}/async/asyncDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} async/AsyncTest ${srcdir:=.}/platform.xml ${srcdir:=.}/async/asyncDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (10:async.Slave@Robert) Receiving on 'slave_8'
 > [  0.000000] (11:async.Slave@Sirois) Receiving on 'slave_9'
 > [  0.000000] (12:async.Slave@Monique) Receiving on 'slave_10'
index a245baa..ef9e1ab 100644 (file)
@@ -15,8 +15,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 1fa670c..8d74f58 100644 (file)
@@ -3,7 +3,7 @@
 ! output sort
 ! timeout 15
 
-$ java -cp ${classpath:=.} bittorrent/Bittorrent ${srcdir:=.}/platform.xml ${srcdir:=.}/bittorrent/bittorrent.xml
+$ java -classpath ${classpath:=.} bittorrent/Bittorrent ${srcdir:=.}/platform.xml ${srcdir:=.}/bittorrent/bittorrent.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [5000.832370] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [Boivin:bittorrent.Peer:(2) 0.000000] [jmsg/INFO] Hi, I'm joining the network with id 2
index 90167e8..48b0439 100644 (file)
@@ -17,8 +17,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 2e1f474..dbc5d0a 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} chord/Chord ${srcdir:=.}/platform.xml ${srcdir:=.}/chord/chord.xml
+$ java -classpath ${classpath:=.} chord/Chord ${srcdir:=.}/platform.xml ${srcdir:=.}/chord/chord.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [652.540924] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [Boivin:chord.Node:(7) 0.000000] [jmsg/INFO] Joining the ring with id 8 knowing node 1
index 9dbb0d1..555cc84 100644 (file)
@@ -12,8 +12,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 1f958c2..c8c05d1 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} cloud/Cloud ${srcdir:=.}/platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} cloud/Cloud ${srcdir:=.}/platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (10:Slave 8@Jean_Yves) Receiving on slave_8
 > [  0.000000] (11:Slave 9@Fafard) Receiving on slave_9
 > [  0.000000] (1:Master@Jacquelin) Launched 10 VMs
index 320b5c8..7ff9534 100644 (file)
@@ -12,8 +12,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 1e50976..02fc316 100644 (file)
@@ -3,7 +3,7 @@
 ! output sort
 ! timeout 15
 
-$ java -cp ${classpath:=.} commTime/CommTimeTest ${srcdir:=.}/platform.xml ${srcdir:=.}/commTime/commTimeDeployment.xml
+$ java -classpath ${classpath:=.} commTime/CommTimeTest ${srcdir:=.}/platform.xml ${srcdir:=.}/commTime/commTimeDeployment.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [7016.452828] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [Bellemarre:commTime.Slave:(15) 0.000000] [jmsg/INFO] Receiving on 'slave_13'
index 767e4d6..3f77d90 100644 (file)
@@ -10,8 +10,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 8b3833d..e7807e8 100644 (file)
@@ -20,8 +20,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index c368309..6c232c0 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} kademlia/Kademlia ${srcdir:=.}/platform.xml ${srcdir:=.}/kademlia/kademlia.xml
+$ java -classpath ${classpath:=.} kademlia/Kademlia ${srcdir:=.}/platform.xml ${srcdir:=.}/kademlia/kademlia.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [900.000000] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [Boivin:kademlia.Node:(2) 0.000000] [jmsg/INFO] Hi, I'm going to join the network with the id 1!
index 9b18ca4..4660c43 100644 (file)
@@ -12,8 +12,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index cf1bee4..8e05ea2 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/master_slave_bypass/platform.xml
+$ java -classpath ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/master_slave_bypass/platform.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [0.013010] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [alice:process2:(2) 0.000000] [jmsg/INFO] Slave Hello!
index 34e5b26..6dc692a 100644 (file)
@@ -12,8 +12,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index f22d582..78868a1 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/master_slave_kill/platform.xml
+$ java -classpath ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/master_slave_kill/platform.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [0.013010] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [alice:slave:(2) 0.000000] [jmsg/INFO] Slave Hello!
index c3083f6..8f83bfc 100644 (file)
@@ -13,8 +13,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 77a09b5..ee1d207 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:masterslave.Master@Jacquelin) Hello! Got 7 slaves and 5 tasks to process
 > [  0.000000] (2:masterslave.Forwarder@Jackson) Receiving on 'slave_0'
 > [  0.000000] (3:masterslave.Forwarder@Casavant) Receiving on 'slave_1'
index 72108f0..7bd6bb9 100644 (file)
@@ -11,8 +11,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 66bd4f5..131e9a3 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} migration/Migration ${srcdir:=.}/platform.xml ${srcdir:=.}/migration/migrationDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} migration/Migration ${srcdir:=.}/platform.xml ${srcdir:=.}/migration/migrationDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:migration.Emigrant@Jacquelin) I'll look for a new job on another machine where the grass is greener.
 > [  0.000000] (1:migration.Emigrant@Boivin) Yeah, found something to do
 > [  1.000000] (2:migration.Policeman@Boivin) Wait a bit before migrating the emigrant.
index 4593c8c..2019a30 100644 (file)
@@ -14,8 +14,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 202b00c..5446fff 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} mutualExclusion/MutexCentral ${srcdir:=.}/mutualExclusion/ring3.xml ${srcdir:=.}/mutualExclusion/mutex_centralized_deployment.xml
+$ java -classpath ${classpath:=.} mutualExclusion/MutexCentral ${srcdir:=.}/mutualExclusion/ring3.xml ${srcdir:=.}/mutualExclusion/mutex_centralized_deployment.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [0.007806] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [Host 0:mutualExclusion.Coordinator:(1) 0.001301] [jmsg/INFO] Got a request from mutualExclusion.Node. Queue empty: grant it
index 8756c21..07e750a 100644 (file)
@@ -12,8 +12,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index a3db44a..ed35110 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} pingPong/PingPongTest ${srcdir:=.}/platform.xml ${srcdir:=.}/pingPong/pingPongDeployment.xml
+$ java -classpath ${classpath:=.} pingPong/PingPongTest ${srcdir:=.}/platform.xml ${srcdir:=.}/pingPong/pingPongDeployment.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [1.048882] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [Boivin:pingPong.Receiver:(2) 0.000000] [jmsg/INFO] hello!
index a93beec..202d0e5 100644 (file)
@@ -10,8 +10,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 8622897..1a0b8ad 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} priority/Priority ${srcdir:=.}/platform.xml ${srcdir:=.}/priority/priorityDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} priority/Priority ${srcdir:=.}/platform.xml ${srcdir:=.}/priority/priorityDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:priority.Test@Fafard) Hello! Running a task of size 7.6296E7 with priority 1.0
 > [  0.000000] (2:priority.Test@Fafard) Hello! Running a task of size 7.6296E7 with priority 2.0
 > [  0.833332] (2:priority.Test@Fafard) Goodbye now!
index 0a9716a..4030159 100644 (file)
@@ -11,8 +11,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 747b724..be741fd 100644 (file)
@@ -1,5 +1,5 @@
 #! tesh
-$ java -cp ${classpath:=.} startKillTime/StartKillTime ${srcdir:=.}/platform.xml ${srcdir:=.}/startKillTime/deployment_start_kill.xml
+$ java -classpath ${classpath:=.} startKillTime/StartKillTime ${srcdir:=.}/platform.xml ${srcdir:=.}/startKillTime/deployment_start_kill.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [Jacquelin:startKillTime.Master:(1) 0.000000] [jmsg/INFO] Hello!
 > [Boivin:startKillTime.Slave:(2) 1.000000] [jmsg/INFO] Hello!
index 0ac2dfd..42cec94 100644 (file)
@@ -11,8 +11,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 1bd9dea..897db64 100644 (file)
@@ -1,7 +1,7 @@
 #! tesh
 
 ! output sort
-$ java -cp ${classpath:=.} suspend/Suspend ${srcdir:=.}/platform.xml ${srcdir:=.}/suspend/suspendDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} suspend/Suspend ${srcdir:=.}/platform.xml ${srcdir:=.}/suspend/suspendDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:suspend.DreamMaster@Jacquelin) Let's create a lazy guy.
 > [  0.000000] (1:suspend.DreamMaster@Jacquelin) Let's wait a little bit...
 > [  0.000000] (2:Lazy@Jacquelin) Nobody's watching me ? Let's go to sleep.
index f035001..562f161 100644 (file)
@@ -12,8 +12,8 @@ if(enable_java)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 4d0e76f..9c7bd25 100644 (file)
@@ -2,11 +2,11 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} tracing/TracingTest ${srcdir:=.}/platform.xml ${srcdir:=.}/tracing/tracingPingPongDeployment.xml --cfg=tracing:1  --cfg=tracing/filename:simulation.trace --cfg=tracing/platform:1
+$ java -classpath ${classpath:=.} tracing/TracingTest ${srcdir:=.}/platform.xml ${srcdir:=.}/tracing/tracingPingPongDeployment.xml --cfg=tracing:yes  --cfg=tracing/filename:simulation.trace --cfg=tracing/platform:yes
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'simulation.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
 > [4.474401] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [Boivin:tracing.Receiver:(2) 0.000000] [jmsg/INFO] hello!
 > [Boivin:tracing.Receiver:(2) 0.000000] [jmsg/INFO] try to get a task
index 6a23983..4b9dd45 100644 (file)
@@ -1,7 +1,7 @@
 # A little tesh file testing most MPI-related actions
 
-$ ../actions --cfg=tracing:1 --cfg=tracing/smpi:1 --log=surf_config.thresh:critical --cfg=network/model:SMPI platform.xml deploy_MPI_4.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
+$ ../actions --cfg=tracing:yes --cfg=tracing/smpi:yes --log=surf_config.thresh:critical --cfg=network/model:SMPI platform.xml deploy_MPI_4.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.095453] [actions/INFO] Simulation time 0.095453
index 9e92363..ce2c4bd 100644 (file)
@@ -38,6 +38,8 @@ static int periodic_fix_fingers_delay = 120;
 static int periodic_check_predecessor_delay = 120;
 static int periodic_lookup_delay = 10;
 
+static const double sleep_delay = 4.9999;
+
 extern long int smx_total_comms;
 
 /*
@@ -293,11 +295,9 @@ int node(int argc, char *argv[])
   double next_check_predecessor_date = init_time + periodic_check_predecessor_delay;
   double next_lookup_date = init_time + periodic_lookup_delay;
 
-  #ifdef HAVE_MC
   int listen = 0;
   int no_op = 0;
   int sub_protocol = 0;
-  #endif
 
   xbt_assert(argc == 3 || argc == 5, "Wrong number of arguments for this node");
 
@@ -351,7 +351,6 @@ int node(int argc, char *argv[])
 
         // no task was received: make some periodic calls
 
-#ifdef HAVE_MC
         if(MC_is_active()){
           if(!MC_visited_reduction() && no_op){
               MC_cut();
@@ -367,7 +366,7 @@ int node(int argc, char *argv[])
               random_lookup(&node);
             listen = 1;
           }else{
-            MSG_process_sleep(5);
+            MSG_process_sleep(sleep_delay);
             if(!MC_visited_reduction())
               no_op = 1;
           }
@@ -386,27 +385,9 @@ int node(int argc, char *argv[])
             next_lookup_date = MSG_get_clock() + periodic_lookup_delay;
           }else {
             // nothing to do: sleep for a while
-            MSG_process_sleep(5);
+            MSG_process_sleep(sleep_delay);
           }
         }
-#else
-        if (MSG_get_clock() >= next_stabilize_date) {
-          stabilize(&node);
-          next_stabilize_date = MSG_get_clock() + periodic_stabilize_delay;
-        }else if (MSG_get_clock() >= next_fix_fingers_date) {
-          fix_fingers(&node);
-          next_fix_fingers_date = MSG_get_clock() + periodic_fix_fingers_delay;
-        }else if (MSG_get_clock() >= next_check_predecessor_date) {
-          check_predecessor(&node);
-          next_check_predecessor_date = MSG_get_clock() + periodic_check_predecessor_delay;
-        }else if (MSG_get_clock() >= next_lookup_date) {
-          random_lookup(&node);
-          next_lookup_date = MSG_get_clock() + periodic_lookup_delay;
-        }else {
-          // nothing to do: sleep for a while
-          MSG_process_sleep(5);
-        }
-#endif
 
       } else {
         // a transfer has occurred
@@ -428,6 +409,9 @@ int node(int argc, char *argv[])
     }
 
     if (node.comm_receive) {
+      /* handle last task if any */
+      if (MSG_comm_wait(node.comm_receive, 0) == MSG_OK)
+        task_free(task_received);
       MSG_comm_destroy(node.comm_receive);
       node.comm_receive = NULL;
     }
@@ -535,6 +519,8 @@ static void handle_task(node_t node, msg_task_t task) {
     MSG_task_dsend(task, task_data->answer_to, task_free);
     break;
 
+  default:
+    THROW_IMPOSSIBLE;
   }
 }
 
@@ -793,7 +779,6 @@ static int remote_get_predecessor(node_t node, int ask_to)
         stop = 1;
         MSG_comm_destroy(node->comm_receive);
         node->comm_receive = NULL;
-        task_free(task_sent);
       }
       else {
         msg_task_t task_received = MSG_comm_get_task(node->comm_receive);
index e2c44d9..96fdb8c 100644 (file)
@@ -21,404 +21,350 @@ $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../msg_platfo
 > [  0.000000] (8:node@Jacquelin)   17  |   1 
 > [  0.000000] (8:node@Jacquelin)   33  |   1 
 > [  0.000000] (8:node@Jacquelin) Predecessor: -1
-> [  6.274448] (1:node@Gatien) My finger table:
-> [  6.274448] (1:node@Gatien) Start | Succ 
-> [  6.274448] (1:node@Gatien)   49  |   1 
-> [  6.274448] (1:node@Gatien)   50  |  48 
-> [  6.274448] (1:node@Gatien)   52  |  48 
-> [  6.274448] (1:node@Gatien)   56  |  48 
-> [  6.274448] (1:node@Gatien)    0  |  48 
-> [  6.274448] (1:node@Gatien)   16  |  48 
-> [  6.274448] (1:node@Gatien) Predecessor: -1
-> [ 10.888356] (2:node@McGee) My finger table:
-> [ 10.888356] (2:node@McGee) Start | Succ 
-> [ 10.888356] (2:node@McGee)   43  |   1 
-> [ 10.888356] (2:node@McGee)   44  |  42 
-> [ 10.888356] (2:node@McGee)   46  |  42 
-> [ 10.888356] (2:node@McGee)   50  |  42 
-> [ 10.888356] (2:node@McGee)   58  |  42 
-> [ 10.888356] (2:node@McGee)   10  |  42 
-> [ 10.888356] (2:node@McGee) Predecessor: -1
-> [ 18.043675] (3:node@iRMX) My finger table:
-> [ 18.043675] (3:node@iRMX) Start | Succ 
-> [ 18.043675] (3:node@iRMX)   39  |   1 
-> [ 18.043675] (3:node@iRMX)   40  |  38 
-> [ 18.043675] (3:node@iRMX)   42  |  38 
-> [ 18.043675] (3:node@iRMX)   46  |  38 
-> [ 18.043675] (3:node@iRMX)   54  |  38 
-> [ 18.043675] (3:node@iRMX)    6  |  38 
-> [ 18.043675] (3:node@iRMX) Predecessor: -1
-> [ 20.005344] (4:node@Geoff) My finger table:
-> [ 20.005344] (4:node@Geoff) Start | Succ 
-> [ 20.005344] (4:node@Geoff)   33  |   1 
-> [ 20.005344] (4:node@Geoff)   34  |  32 
-> [ 20.005344] (4:node@Geoff)   36  |  32 
-> [ 20.005344] (4:node@Geoff)   40  |  32 
-> [ 20.005344] (4:node@Geoff)   48  |  32 
-> [ 20.005344] (4:node@Geoff)    0  |  32 
-> [ 20.005344] (4:node@Geoff) Predecessor: -1
-> [ 26.812601] (5:node@TeX) My finger table:
-> [ 26.812601] (5:node@TeX) Start | Succ 
-> [ 26.812601] (5:node@TeX)   22  |   1 
-> [ 26.812601] (5:node@TeX)   23  |  21 
-> [ 26.812601] (5:node@TeX)   25  |  21 
-> [ 26.812601] (5:node@TeX)   29  |  21 
-> [ 26.812601] (5:node@TeX)   37  |  21 
-> [ 26.812601] (5:node@TeX)   53  |  21 
-> [ 26.812601] (5:node@TeX) Predecessor: -1
-> [ 30.925129] (6:node@Jean_Yves) My finger table:
-> [ 30.925129] (6:node@Jean_Yves) Start | Succ 
-> [ 30.925129] (6:node@Jean_Yves)   15  |   1 
-> [ 30.925129] (6:node@Jean_Yves)   16  |  14 
-> [ 30.925129] (6:node@Jean_Yves)   18  |  14 
-> [ 30.925129] (6:node@Jean_Yves)   22  |  14 
-> [ 30.925129] (6:node@Jean_Yves)   30  |  14 
-> [ 30.925129] (6:node@Jean_Yves)   46  |  14 
-> [ 30.925129] (6:node@Jean_Yves) Predecessor: -1
-> [ 36.048885] (7:node@Boivin) My finger table:
-> [ 36.048885] (7:node@Boivin) Start | Succ 
-> [ 36.048885] (7:node@Boivin)    9  |   1 
-> [ 36.048885] (7:node@Boivin)   10  |   8 
-> [ 36.048885] (7:node@Boivin)   12  |   8 
-> [ 36.048885] (7:node@Boivin)   16  |   8 
-> [ 36.048885] (7:node@Boivin)   24  |   8 
-> [ 36.048885] (7:node@Boivin)   40  |   8 
-> [ 36.048885] (7:node@Boivin) Predecessor: -1
-> [ 75.000000] (8:node@Jacquelin) My finger table:
-> [ 75.000000] (8:node@Jacquelin) Start | Succ 
-> [ 75.000000] (8:node@Jacquelin)    2  |   1 
-> [ 75.000000] (8:node@Jacquelin)    3  |   1 
-> [ 75.000000] (8:node@Jacquelin)    5  |   1 
-> [ 75.000000] (8:node@Jacquelin)    9  |   1 
-> [ 75.000000] (8:node@Jacquelin)   17  |   1 
-> [ 75.000000] (8:node@Jacquelin)   33  |   1 
-> [ 75.000000] (8:node@Jacquelin) Predecessor: 32
-> [ 80.000000] (8:node@Jacquelin) My finger table:
-> [ 80.000000] (8:node@Jacquelin) Start | Succ 
-> [ 80.000000] (8:node@Jacquelin)    2  |   1 
-> [ 80.000000] (8:node@Jacquelin)    3  |   1 
-> [ 80.000000] (8:node@Jacquelin)    5  |   1 
-> [ 80.000000] (8:node@Jacquelin)    9  |   1 
-> [ 80.000000] (8:node@Jacquelin)   17  |   1 
-> [ 80.000000] (8:node@Jacquelin)   33  |   1 
-> [ 80.000000] (8:node@Jacquelin) Predecessor: 42
-> [ 81.274448] (8:node@Jacquelin) My finger table:
-> [ 81.274448] (8:node@Jacquelin) Start | Succ 
-> [ 81.274448] (8:node@Jacquelin)    2  |  42 
-> [ 81.274448] (8:node@Jacquelin)    3  |   1 
-> [ 81.274448] (8:node@Jacquelin)    5  |   1 
-> [ 81.274448] (8:node@Jacquelin)    9  |   1 
-> [ 81.274448] (8:node@Jacquelin)   17  |   1 
-> [ 81.274448] (8:node@Jacquelin)   33  |   1 
-> [ 81.274448] (8:node@Jacquelin) Predecessor: 48
-> [116.655198] (2:node@McGee) My finger table:
-> [116.655198] (2:node@McGee) Start | Succ 
-> [116.655198] (2:node@McGee)   43  |  48 
-> [116.655198] (2:node@McGee)   44  |  42 
-> [116.655198] (2:node@McGee)   46  |  42 
-> [116.655198] (2:node@McGee)   50  |  42 
-> [116.655198] (2:node@McGee)   58  |  42 
-> [116.655198] (2:node@McGee)   10  |  42 
-> [116.655198] (2:node@McGee) Predecessor: 1
-> [141.383330] (1:node@Gatien) My finger table:
-> [141.383330] (1:node@Gatien) Start | Succ 
-> [141.383330] (1:node@Gatien)   49  |   1 
-> [141.383330] (1:node@Gatien)   50  |  48 
-> [141.383330] (1:node@Gatien)   52  |  48 
-> [141.383330] (1:node@Gatien)   56  |  48 
-> [141.383330] (1:node@Gatien)    0  |  48 
-> [141.383330] (1:node@Gatien)   16  |  48 
-> [141.383330] (1:node@Gatien) Predecessor: 42
-> [193.730889] (2:node@McGee) My finger table:
-> [193.730889] (2:node@McGee) Start | Succ 
-> [193.730889] (2:node@McGee)   43  |  48 
-> [193.730889] (2:node@McGee)   44  |  42 
-> [193.730889] (2:node@McGee)   46  |  42 
-> [193.730889] (2:node@McGee)   50  |  42 
-> [193.730889] (2:node@McGee)   58  |  42 
-> [193.730889] (2:node@McGee)   10  |  42 
-> [193.730889] (2:node@McGee) Predecessor: 8
-> [242.028885] (1:node@Gatien) My finger table:
-> [242.028885] (1:node@Gatien) Start | Succ 
-> [242.028885] (1:node@Gatien)   49  |   1 
-> [242.028885] (1:node@Gatien)   50  |   1 
-> [242.028885] (1:node@Gatien)   52  |  48 
-> [242.028885] (1:node@Gatien)   56  |  48 
-> [242.028885] (1:node@Gatien)    0  |  48 
-> [242.028885] (1:node@Gatien)   16  |  48 
-> [242.028885] (1:node@Gatien) Predecessor: 42
-> [242.939649] (2:node@McGee) My finger table:
-> [242.939649] (2:node@McGee) Start | Succ 
-> [242.939649] (2:node@McGee)   43  |  48 
-> [242.939649] (2:node@McGee)   44  |  42 
-> [242.939649] (2:node@McGee)   46  |  42 
-> [242.939649] (2:node@McGee)   50  |  42 
-> [242.939649] (2:node@McGee)   58  |  42 
-> [242.939649] (2:node@McGee)   10  |  42 
-> [242.939649] (2:node@McGee) Predecessor: 38
-> [246.478479] (2:node@McGee) My finger table:
-> [246.478479] (2:node@McGee) Start | Succ 
-> [246.478479] (2:node@McGee)   43  |  48 
-> [246.478479] (2:node@McGee)   44  |  48 
-> [246.478479] (2:node@McGee)   46  |  42 
-> [246.478479] (2:node@McGee)   50  |  42 
-> [246.478479] (2:node@McGee)   58  |  42 
-> [246.478479] (2:node@McGee)   10  |  42 
-> [246.478479] (2:node@McGee) Predecessor: 38
-> [248.768494] (7:node@Boivin) My finger table:
-> [248.768494] (7:node@Boivin) Start | Succ 
-> [248.768494] (7:node@Boivin)    9  |  38 
-> [248.768494] (7:node@Boivin)   10  |  38 
-> [248.768494] (7:node@Boivin)   12  |   8 
-> [248.768494] (7:node@Boivin)   16  |   8 
-> [248.768494] (7:node@Boivin)   24  |   8 
-> [248.768494] (7:node@Boivin)   40  |   8 
-> [248.768494] (7:node@Boivin) Predecessor: -1
-> [255.578776] (4:node@Geoff) My finger table:
-> [255.578776] (4:node@Geoff) Start | Succ 
-> [255.578776] (4:node@Geoff)   33  |  42 
-> [255.578776] (4:node@Geoff)   34  |  42 
-> [255.578776] (4:node@Geoff)   36  |  32 
-> [255.578776] (4:node@Geoff)   40  |  32 
-> [255.578776] (4:node@Geoff)   48  |  32 
-> [255.578776] (4:node@Geoff)    0  |  32 
-> [255.578776] (4:node@Geoff) Predecessor: -1
-> [268.081369] (8:node@Jacquelin) My finger table:
-> [268.081369] (8:node@Jacquelin) Start | Succ 
-> [268.081369] (8:node@Jacquelin)    2  |   8 
-> [268.081369] (8:node@Jacquelin)    3  |   8 
-> [268.081369] (8:node@Jacquelin)    5  |   1 
-> [268.081369] (8:node@Jacquelin)    9  |   1 
-> [268.081369] (8:node@Jacquelin)   17  |   1 
-> [268.081369] (8:node@Jacquelin)   33  |   1 
-> [268.081369] (8:node@Jacquelin) Predecessor: 48
-> [269.130254] (7:node@Boivin) My finger table:
-> [269.130254] (7:node@Boivin) Start | Succ 
-> [269.130254] (7:node@Boivin)    9  |  38 
-> [269.130254] (7:node@Boivin)   10  |  38 
-> [269.130254] (7:node@Boivin)   12  |   8 
-> [269.130254] (7:node@Boivin)   16  |   8 
-> [269.130254] (7:node@Boivin)   24  |   8 
-> [269.130254] (7:node@Boivin)   40  |   8 
-> [269.130254] (7:node@Boivin) Predecessor: 1
-> [272.405875] (3:node@iRMX) My finger table:
-> [272.405875] (3:node@iRMX) Start | Succ 
-> [272.405875] (3:node@iRMX)   39  |  42 
-> [272.405875] (3:node@iRMX)   40  |  42 
-> [272.405875] (3:node@iRMX)   42  |  38 
-> [272.405875] (3:node@iRMX)   46  |  38 
-> [272.405875] (3:node@iRMX)   54  |  38 
-> [272.405875] (3:node@iRMX)    6  |  38 
-> [272.405875] (3:node@iRMX) Predecessor: -1
-> [284.571172] (5:node@TeX) My finger table:
-> [284.571172] (5:node@TeX) Start | Succ 
-> [284.571172] (5:node@TeX)   22  |  38 
-> [284.571172] (5:node@TeX)   23  |  38 
-> [284.571172] (5:node@TeX)   25  |  21 
-> [284.571172] (5:node@TeX)   29  |  21 
-> [284.571172] (5:node@TeX)   37  |  21 
-> [284.571172] (5:node@TeX)   53  |  21 
-> [284.571172] (5:node@TeX) Predecessor: -1
-> [289.289425] (3:node@iRMX) My finger table:
-> [289.289425] (3:node@iRMX) Start | Succ 
-> [289.289425] (3:node@iRMX)   39  |  42 
-> [289.289425] (3:node@iRMX)   40  |  42 
-> [289.289425] (3:node@iRMX)   42  |  38 
-> [289.289425] (3:node@iRMX)   46  |  38 
-> [289.289425] (3:node@iRMX)   54  |  38 
-> [289.289425] (3:node@iRMX)    6  |  38 
-> [289.289425] (3:node@iRMX) Predecessor: 21
-> [305.097098] (6:node@Jean_Yves) My finger table:
-> [305.097098] (6:node@Jean_Yves) Start | Succ 
-> [305.097098] (6:node@Jean_Yves)   15  |  21 
-> [305.097098] (6:node@Jean_Yves)   16  |  21 
-> [305.097098] (6:node@Jean_Yves)   18  |  14 
-> [305.097098] (6:node@Jean_Yves)   22  |  14 
-> [305.097098] (6:node@Jean_Yves)   30  |  14 
-> [305.097098] (6:node@Jean_Yves)   46  |  14 
-> [305.097098] (6:node@Jean_Yves) Predecessor: -1
-> [313.745063] (3:node@iRMX) My finger table:
-> [313.745063] (3:node@iRMX) Start | Succ 
-> [313.745063] (3:node@iRMX)   39  |  42 
-> [313.745063] (3:node@iRMX)   40  |  42 
-> [313.745063] (3:node@iRMX)   42  |  38 
-> [313.745063] (3:node@iRMX)   46  |  38 
-> [313.745063] (3:node@iRMX)   54  |  38 
-> [313.745063] (3:node@iRMX)    6  |  38 
-> [313.745063] (3:node@iRMX) Predecessor: 32
-> [338.951991] (5:node@TeX) My finger table:
-> [338.951991] (5:node@TeX) Start | Succ 
-> [338.951991] (5:node@TeX)   22  |  32 
-> [338.951991] (5:node@TeX)   23  |  38 
-> [338.951991] (5:node@TeX)   25  |  21 
-> [338.951991] (5:node@TeX)   29  |  21 
-> [338.951991] (5:node@TeX)   37  |  21 
-> [338.951991] (5:node@TeX)   53  |  21 
-> [338.951991] (5:node@TeX) Predecessor: 14
-> [359.463119] (4:node@Geoff) My finger table:
-> [359.463119] (4:node@Geoff) Start | Succ 
-> [359.463119] (4:node@Geoff)   33  |  38 
-> [359.463119] (4:node@Geoff)   34  |  42 
-> [359.463119] (4:node@Geoff)   36  |  32 
-> [359.463119] (4:node@Geoff)   40  |  32 
-> [359.463119] (4:node@Geoff)   48  |  32 
-> [359.463119] (4:node@Geoff)    0  |  32 
-> [359.463119] (4:node@Geoff) Predecessor: 21
-> [365.649491] (1:node@Gatien) My finger table:
-> [365.649491] (1:node@Gatien) Start | Succ 
-> [365.649491] (1:node@Gatien)   49  |   1 
-> [365.649491] (1:node@Gatien)   50  |   1 
-> [365.649491] (1:node@Gatien)   52  |   1 
-> [365.649491] (1:node@Gatien)   56  |  48 
-> [365.649491] (1:node@Gatien)    0  |  48 
-> [365.649491] (1:node@Gatien)   16  |  48 
-> [365.649491] (1:node@Gatien) Predecessor: 42
-> [367.870511] (2:node@McGee) My finger table:
-> [367.870511] (2:node@McGee) Start | Succ 
-> [367.870511] (2:node@McGee)   43  |  48 
-> [367.870511] (2:node@McGee)   44  |  48 
-> [367.870511] (2:node@McGee)   46  |  48 
-> [367.870511] (2:node@McGee)   50  |  42 
-> [367.870511] (2:node@McGee)   58  |  42 
-> [367.870511] (2:node@McGee)   10  |  42 
-> [367.870511] (2:node@McGee) Predecessor: 38
-> [371.550204] (7:node@Boivin) My finger table:
-> [371.550204] (7:node@Boivin) Start | Succ 
-> [371.550204] (7:node@Boivin)    9  |  21 
-> [371.550204] (7:node@Boivin)   10  |  38 
-> [371.550204] (7:node@Boivin)   12  |  21 
-> [371.550204] (7:node@Boivin)   16  |   8 
-> [371.550204] (7:node@Boivin)   24  |   8 
-> [371.550204] (7:node@Boivin)   40  |   8 
-> [371.550204] (7:node@Boivin) Predecessor: 1
-> [388.564124] (4:node@Geoff) My finger table:
-> [388.564124] (4:node@Geoff) Start | Succ 
-> [388.564124] (4:node@Geoff)   33  |  38 
-> [388.564124] (4:node@Geoff)   34  |  42 
-> [388.564124] (4:node@Geoff)   36  |  38 
-> [388.564124] (4:node@Geoff)   40  |  32 
-> [388.564124] (4:node@Geoff)   48  |  32 
-> [388.564124] (4:node@Geoff)    0  |  32 
-> [388.564124] (4:node@Geoff) Predecessor: 21
-> [389.021710] (8:node@Jacquelin) My finger table:
-> [389.021710] (8:node@Jacquelin) Start | Succ 
-> [389.021710] (8:node@Jacquelin)    2  |   8 
-> [389.021710] (8:node@Jacquelin)    3  |   8 
-> [389.021710] (8:node@Jacquelin)    5  |   8 
-> [389.021710] (8:node@Jacquelin)    9  |   1 
-> [389.021710] (8:node@Jacquelin)   17  |   1 
-> [389.021710] (8:node@Jacquelin)   33  |   1 
-> [389.021710] (8:node@Jacquelin) Predecessor: 48
-> [393.088734] (3:node@iRMX) My finger table:
-> [393.088734] (3:node@iRMX) Start | Succ 
-> [393.088734] (3:node@iRMX)   39  |  42 
-> [393.088734] (3:node@iRMX)   40  |  42 
-> [393.088734] (3:node@iRMX)   42  |  42 
-> [393.088734] (3:node@iRMX)   46  |  38 
-> [393.088734] (3:node@iRMX)   54  |  38 
-> [393.088734] (3:node@iRMX)    6  |  38 
-> [393.088734] (3:node@iRMX) Predecessor: 32
-> [412.961674] (5:node@TeX) My finger table:
-> [412.961674] (5:node@TeX) Start | Succ 
-> [412.961674] (5:node@TeX)   22  |  32 
-> [412.961674] (5:node@TeX)   23  |  38 
-> [412.961674] (5:node@TeX)   25  |  32 
-> [412.961674] (5:node@TeX)   29  |  21 
-> [412.961674] (5:node@TeX)   37  |  21 
-> [412.961674] (5:node@TeX)   53  |  21 
-> [412.961674] (5:node@TeX) Predecessor: 14
-> [434.596478] (6:node@Jean_Yves) My finger table:
-> [434.596478] (6:node@Jean_Yves) Start | Succ 
-> [434.596478] (6:node@Jean_Yves)   15  |  21 
-> [434.596478] (6:node@Jean_Yves)   16  |  21 
-> [434.596478] (6:node@Jean_Yves)   18  |  14 
-> [434.596478] (6:node@Jean_Yves)   22  |  14 
-> [434.596478] (6:node@Jean_Yves)   30  |  14 
-> [434.596478] (6:node@Jean_Yves)   46  |  14 
-> [434.596478] (6:node@Jean_Yves) Predecessor: 8
-> [443.806924] (6:node@Jean_Yves) My finger table:
-> [443.806924] (6:node@Jean_Yves) Start | Succ 
-> [443.806924] (6:node@Jean_Yves)   15  |  21 
-> [443.806924] (6:node@Jean_Yves)   16  |  21 
-> [443.806924] (6:node@Jean_Yves)   18  |  21 
-> [443.806924] (6:node@Jean_Yves)   22  |  14 
-> [443.806924] (6:node@Jean_Yves)   30  |  14 
-> [443.806924] (6:node@Jean_Yves)   46  |  14 
-> [443.806924] (6:node@Jean_Yves) Predecessor: 8
-> [488.763595] (1:node@Gatien) My finger table:
-> [488.763595] (1:node@Gatien) Start | Succ 
-> [488.763595] (1:node@Gatien)   49  |   1 
-> [488.763595] (1:node@Gatien)   50  |   1 
-> [488.763595] (1:node@Gatien)   52  |   1 
-> [488.763595] (1:node@Gatien)   56  |   1 
-> [488.763595] (1:node@Gatien)    0  |  48 
-> [488.763595] (1:node@Gatien)   16  |  48 
-> [488.763595] (1:node@Gatien) Predecessor: 42
-> [502.910439] (2:node@McGee) My finger table:
-> [502.910439] (2:node@McGee) Start | Succ 
-> [502.910439] (2:node@McGee)   43  |  48 
-> [502.910439] (2:node@McGee)   44  |  48 
-> [502.910439] (2:node@McGee)   46  |  48 
-> [502.910439] (2:node@McGee)   50  |   1 
-> [502.910439] (2:node@McGee)   58  |  42 
-> [502.910439] (2:node@McGee)   10  |  42 
-> [502.910439] (2:node@McGee) Predecessor: 38
-> [511.133077] (8:node@Jacquelin) My finger table:
-> [511.133077] (8:node@Jacquelin) Start | Succ 
-> [511.133077] (8:node@Jacquelin)    2  |   8 
-> [511.133077] (8:node@Jacquelin)    3  |   8 
-> [511.133077] (8:node@Jacquelin)    5  |   8 
-> [511.133077] (8:node@Jacquelin)    9  |  14 
-> [511.133077] (8:node@Jacquelin)   17  |   1 
-> [511.133077] (8:node@Jacquelin)   33  |   1 
-> [511.133077] (8:node@Jacquelin) Predecessor: 48
-> [528.169747] (7:node@Boivin) My finger table:
-> [528.169747] (7:node@Boivin) Start | Succ 
-> [528.169747] (7:node@Boivin)    9  |  14 
-> [528.169747] (7:node@Boivin)   10  |  38 
-> [528.169747] (7:node@Boivin)   12  |  21 
-> [528.169747] (7:node@Boivin)   16  |  21 
-> [528.169747] (7:node@Boivin)   24  |   8 
-> [528.169747] (7:node@Boivin)   40  |   8 
-> [528.169747] (7:node@Boivin) Predecessor: 1
-> [538.778175] (3:node@iRMX) My finger table:
-> [538.778175] (3:node@iRMX) Start | Succ 
-> [538.778175] (3:node@iRMX)   39  |  42 
-> [538.778175] (3:node@iRMX)   40  |  42 
-> [538.778175] (3:node@iRMX)   42  |  42 
-> [538.778175] (3:node@iRMX)   46  |  48 
-> [538.778175] (3:node@iRMX)   54  |  38 
-> [538.778175] (3:node@iRMX)    6  |  38 
-> [538.778175] (3:node@iRMX) Predecessor: 32
-> [561.853791] (5:node@TeX) My finger table:
-> [561.853791] (5:node@TeX) Start | Succ 
-> [561.853791] (5:node@TeX)   22  |  32 
-> [561.853791] (5:node@TeX)   23  |  38 
-> [561.853791] (5:node@TeX)   25  |  32 
-> [561.853791] (5:node@TeX)   29  |  32 
-> [561.853791] (5:node@TeX)   37  |  21 
-> [561.853791] (5:node@TeX)   53  |  21 
-> [561.853791] (5:node@TeX) Predecessor: 14
-> [564.892126] (4:node@Geoff) My finger table:
-> [564.892126] (4:node@Geoff) Start | Succ 
-> [564.892126] (4:node@Geoff)   33  |  38 
-> [564.892126] (4:node@Geoff)   34  |  42 
-> [564.892126] (4:node@Geoff)   36  |  38 
-> [564.892126] (4:node@Geoff)   40  |  42 
-> [564.892126] (4:node@Geoff)   48  |  32 
-> [564.892126] (4:node@Geoff)    0  |  32 
-> [564.892126] (4:node@Geoff) Predecessor: 21
-> [580.440450] (6:node@Jean_Yves) My finger table:
-> [580.440450] (6:node@Jean_Yves) Start | Succ 
-> [580.440450] (6:node@Jean_Yves)   15  |  21 
-> [580.440450] (6:node@Jean_Yves)   16  |  21 
-> [580.440450] (6:node@Jean_Yves)   18  |  21 
-> [580.440450] (6:node@Jean_Yves)   22  |  32 
-> [580.440450] (6:node@Jean_Yves)   30  |  14 
-> [580.440450] (6:node@Jean_Yves)   46  |  14 
-> [580.440450] (6:node@Jean_Yves) Predecessor: 8
-> [805.312574] (0:@) Messages created: 789
-> [805.312574] (0:@) Simulated time: 805.313
+> [  6.274348] (1:node@Gatien) My finger table:
+> [  6.274348] (1:node@Gatien) Start | Succ 
+> [  6.274348] (1:node@Gatien)   49  |   1 
+> [  6.274348] (1:node@Gatien)   50  |  48 
+> [  6.274348] (1:node@Gatien)   52  |  48 
+> [  6.274348] (1:node@Gatien)   56  |  48 
+> [  6.274348] (1:node@Gatien)    0  |  48 
+> [  6.274348] (1:node@Gatien)   16  |  48 
+> [  6.274348] (1:node@Gatien) Predecessor: -1
+> [ 10.888156] (2:node@McGee) My finger table:
+> [ 10.888156] (2:node@McGee) Start | Succ 
+> [ 10.888156] (2:node@McGee)   43  |   1 
+> [ 10.888156] (2:node@McGee)   44  |  42 
+> [ 10.888156] (2:node@McGee)   46  |  42 
+> [ 10.888156] (2:node@McGee)   50  |  42 
+> [ 10.888156] (2:node@McGee)   58  |  42 
+> [ 10.888156] (2:node@McGee)   10  |  42 
+> [ 10.888156] (2:node@McGee) Predecessor: -1
+> [ 18.043375] (3:node@iRMX) My finger table:
+> [ 18.043375] (3:node@iRMX) Start | Succ 
+> [ 18.043375] (3:node@iRMX)   39  |   1 
+> [ 18.043375] (3:node@iRMX)   40  |  38 
+> [ 18.043375] (3:node@iRMX)   42  |  38 
+> [ 18.043375] (3:node@iRMX)   46  |  38 
+> [ 18.043375] (3:node@iRMX)   54  |  38 
+> [ 18.043375] (3:node@iRMX)    6  |  38 
+> [ 18.043375] (3:node@iRMX) Predecessor: -1
+> [ 20.004944] (4:node@Geoff) My finger table:
+> [ 20.004944] (4:node@Geoff) Start | Succ 
+> [ 20.004944] (4:node@Geoff)   33  |   1 
+> [ 20.004944] (4:node@Geoff)   34  |  32 
+> [ 20.004944] (4:node@Geoff)   36  |  32 
+> [ 20.004944] (4:node@Geoff)   40  |  32 
+> [ 20.004944] (4:node@Geoff)   48  |  32 
+> [ 20.004944] (4:node@Geoff)    0  |  32 
+> [ 20.004944] (4:node@Geoff) Predecessor: -1
+> [ 26.812101] (5:node@TeX) My finger table:
+> [ 26.812101] (5:node@TeX) Start | Succ 
+> [ 26.812101] (5:node@TeX)   22  |   1 
+> [ 26.812101] (5:node@TeX)   23  |  21 
+> [ 26.812101] (5:node@TeX)   25  |  21 
+> [ 26.812101] (5:node@TeX)   29  |  21 
+> [ 26.812101] (5:node@TeX)   37  |  21 
+> [ 26.812101] (5:node@TeX)   53  |  21 
+> [ 26.812101] (5:node@TeX) Predecessor: -1
+> [ 30.924529] (6:node@Jean_Yves) My finger table:
+> [ 30.924529] (6:node@Jean_Yves) Start | Succ 
+> [ 30.924529] (6:node@Jean_Yves)   15  |   1 
+> [ 30.924529] (6:node@Jean_Yves)   16  |  14 
+> [ 30.924529] (6:node@Jean_Yves)   18  |  14 
+> [ 30.924529] (6:node@Jean_Yves)   22  |  14 
+> [ 30.924529] (6:node@Jean_Yves)   30  |  14 
+> [ 30.924529] (6:node@Jean_Yves)   46  |  14 
+> [ 30.924529] (6:node@Jean_Yves) Predecessor: -1
+> [ 36.048185] (7:node@Boivin) My finger table:
+> [ 36.048185] (7:node@Boivin) Start | Succ 
+> [ 36.048185] (7:node@Boivin)    9  |   1 
+> [ 36.048185] (7:node@Boivin)   10  |   8 
+> [ 36.048185] (7:node@Boivin)   12  |   8 
+> [ 36.048185] (7:node@Boivin)   16  |   8 
+> [ 36.048185] (7:node@Boivin)   24  |   8 
+> [ 36.048185] (7:node@Boivin)   40  |   8 
+> [ 36.048185] (7:node@Boivin) Predecessor: -1
+> [ 74.998500] (8:node@Jacquelin) My finger table:
+> [ 74.998500] (8:node@Jacquelin) Start | Succ 
+> [ 74.998500] (8:node@Jacquelin)    2  |   1 
+> [ 74.998500] (8:node@Jacquelin)    3  |   1 
+> [ 74.998500] (8:node@Jacquelin)    5  |   1 
+> [ 74.998500] (8:node@Jacquelin)    9  |   1 
+> [ 74.998500] (8:node@Jacquelin)   17  |   1 
+> [ 74.998500] (8:node@Jacquelin)   33  |   1 
+> [ 74.998500] (8:node@Jacquelin) Predecessor: 32
+> [ 75.886856] (8:node@Jacquelin) My finger table:
+> [ 75.886856] (8:node@Jacquelin) Start | Succ 
+> [ 75.886856] (8:node@Jacquelin)    2  |  32 
+> [ 75.886856] (8:node@Jacquelin)    3  |   1 
+> [ 75.886856] (8:node@Jacquelin)    5  |   1 
+> [ 75.886856] (8:node@Jacquelin)    9  |   1 
+> [ 75.886856] (8:node@Jacquelin)   17  |   1 
+> [ 75.886856] (8:node@Jacquelin)   33  |   1 
+> [ 75.886856] (8:node@Jacquelin) Predecessor: 42
+> [ 77.161304] (8:node@Jacquelin) My finger table:
+> [ 77.161304] (8:node@Jacquelin) Start | Succ 
+> [ 77.161304] (8:node@Jacquelin)    2  |  32 
+> [ 77.161304] (8:node@Jacquelin)    3  |   1 
+> [ 77.161304] (8:node@Jacquelin)    5  |   1 
+> [ 77.161304] (8:node@Jacquelin)    9  |   1 
+> [ 77.161304] (8:node@Jacquelin)   17  |   1 
+> [ 77.161304] (8:node@Jacquelin)   33  |   1 
+> [ 77.161304] (8:node@Jacquelin) Predecessor: 48
+> [102.428549] (4:node@Geoff) My finger table:
+> [102.428549] (4:node@Geoff) Start | Succ 
+> [102.428549] (4:node@Geoff)   33  |  48 
+> [102.428549] (4:node@Geoff)   34  |  32 
+> [102.428549] (4:node@Geoff)   36  |  32 
+> [102.428549] (4:node@Geoff)   40  |  32 
+> [102.428549] (4:node@Geoff)   48  |  32 
+> [102.428549] (4:node@Geoff)    0  |  32 
+> [102.428549] (4:node@Geoff) Predecessor: 1
+> [128.446143] (1:node@Gatien) My finger table:
+> [128.446143] (1:node@Gatien) Start | Succ 
+> [128.446143] (1:node@Gatien)   49  |   1 
+> [128.446143] (1:node@Gatien)   50  |  48 
+> [128.446143] (1:node@Gatien)   52  |  48 
+> [128.446143] (1:node@Gatien)   56  |  48 
+> [128.446143] (1:node@Gatien)    0  |  48 
+> [128.446143] (1:node@Gatien)   16  |  48 
+> [128.446143] (1:node@Gatien) Predecessor: 32
+> [138.445943] (1:node@Gatien) My finger table:
+> [138.445943] (1:node@Gatien) Start | Succ 
+> [138.445943] (1:node@Gatien)   49  |   1 
+> [138.445943] (1:node@Gatien)   50  |  48 
+> [138.445943] (1:node@Gatien)   52  |  48 
+> [138.445943] (1:node@Gatien)   56  |  48 
+> [138.445943] (1:node@Gatien)    0  |  48 
+> [138.445943] (1:node@Gatien)   16  |  48 
+> [138.445943] (1:node@Gatien) Predecessor: 42
+> [211.728399] (2:node@McGee) My finger table:
+> [211.728399] (2:node@McGee) Start | Succ 
+> [211.728399] (2:node@McGee)   43  |  48 
+> [211.728399] (2:node@McGee)   44  |  42 
+> [211.728399] (2:node@McGee)   46  |  42 
+> [211.728399] (2:node@McGee)   50  |  42 
+> [211.728399] (2:node@McGee)   58  |  42 
+> [211.728399] (2:node@McGee)   10  |  42 
+> [211.728399] (2:node@McGee) Predecessor: 38
+> [248.221969] (1:node@Gatien) My finger table:
+> [248.221969] (1:node@Gatien) Start | Succ 
+> [248.221969] (1:node@Gatien)   49  |   1 
+> [248.221969] (1:node@Gatien)   50  |   1 
+> [248.221969] (1:node@Gatien)   52  |  48 
+> [248.221969] (1:node@Gatien)   56  |  48 
+> [248.221969] (1:node@Gatien)    0  |  48 
+> [248.221969] (1:node@Gatien)   16  |  48 
+> [248.221969] (1:node@Gatien) Predecessor: 42
+> [251.135492] (7:node@Boivin) My finger table:
+> [251.135492] (7:node@Boivin) Start | Succ 
+> [251.135492] (7:node@Boivin)    9  |  38 
+> [251.135492] (7:node@Boivin)   10  |  38 
+> [251.135492] (7:node@Boivin)   12  |   8 
+> [251.135492] (7:node@Boivin)   16  |   8 
+> [251.135492] (7:node@Boivin)   24  |   8 
+> [251.135492] (7:node@Boivin)   40  |   8 
+> [251.135492] (7:node@Boivin) Predecessor: -1
+> [259.451660] (2:node@McGee) My finger table:
+> [259.451660] (2:node@McGee) Start | Succ 
+> [259.451660] (2:node@McGee)   43  |  48 
+> [259.451660] (2:node@McGee)   44  |  48 
+> [259.451660] (2:node@McGee)   46  |  42 
+> [259.451660] (2:node@McGee)   50  |  42 
+> [259.451660] (2:node@McGee)   58  |  42 
+> [259.451660] (2:node@McGee)   10  |  42 
+> [259.451660] (2:node@McGee) Predecessor: 38
+> [309.452289] (4:node@Geoff) My finger table:
+> [309.452289] (4:node@Geoff) Start | Succ 
+> [309.452289] (4:node@Geoff)   33  |  38 
+> [309.452289] (4:node@Geoff)   34  |  38 
+> [309.452289] (4:node@Geoff)   36  |  32 
+> [309.452289] (4:node@Geoff)   40  |  32 
+> [309.452289] (4:node@Geoff)   48  |  32 
+> [309.452289] (4:node@Geoff)    0  |  32 
+> [309.452289] (4:node@Geoff) Predecessor: 1
+> [309.457634] (8:node@Jacquelin) My finger table:
+> [309.457634] (8:node@Jacquelin) Start | Succ 
+> [309.457634] (8:node@Jacquelin)    2  |  32 
+> [309.457634] (8:node@Jacquelin)    3  |  32 
+> [309.457634] (8:node@Jacquelin)    5  |   1 
+> [309.457634] (8:node@Jacquelin)    9  |   1 
+> [309.457634] (8:node@Jacquelin)   17  |   1 
+> [309.457634] (8:node@Jacquelin)   33  |   1 
+> [309.457634] (8:node@Jacquelin) Predecessor: 48
+> [323.904210] (6:node@Jean_Yves) My finger table:
+> [323.904210] (6:node@Jean_Yves) Start | Succ 
+> [323.904210] (6:node@Jean_Yves)   15  |  38 
+> [323.904210] (6:node@Jean_Yves)   16  |  38 
+> [323.904210] (6:node@Jean_Yves)   18  |  14 
+> [323.904210] (6:node@Jean_Yves)   22  |  14 
+> [323.904210] (6:node@Jean_Yves)   30  |  14 
+> [323.904210] (6:node@Jean_Yves)   46  |  14 
+> [323.904210] (6:node@Jean_Yves) Predecessor: -1
+> [325.353212] (3:node@iRMX) My finger table:
+> [325.353212] (3:node@iRMX) Start | Succ 
+> [325.353212] (3:node@iRMX)   39  |  42 
+> [325.353212] (3:node@iRMX)   40  |  38 
+> [325.353212] (3:node@iRMX)   42  |  38 
+> [325.353212] (3:node@iRMX)   46  |  38 
+> [325.353212] (3:node@iRMX)   54  |  38 
+> [325.353212] (3:node@iRMX)    6  |  38 
+> [325.353212] (3:node@iRMX) Predecessor: 32
+> [330.576758] (3:node@iRMX) My finger table:
+> [330.576758] (3:node@iRMX) Start | Succ 
+> [330.576758] (3:node@iRMX)   39  |  42 
+> [330.576758] (3:node@iRMX)   40  |  42 
+> [330.576758] (3:node@iRMX)   42  |  38 
+> [330.576758] (3:node@iRMX)   46  |  38 
+> [330.576758] (3:node@iRMX)   54  |  38 
+> [330.576758] (3:node@iRMX)    6  |  38 
+> [330.576758] (3:node@iRMX) Predecessor: 32
+> [352.615271] (5:node@TeX) My finger table:
+> [352.615271] (5:node@TeX) Start | Succ 
+> [352.615271] (5:node@TeX)   22  |  32 
+> [352.615271] (5:node@TeX)   23  |  32 
+> [352.615271] (5:node@TeX)   25  |  21 
+> [352.615271] (5:node@TeX)   29  |  21 
+> [352.615271] (5:node@TeX)   37  |  21 
+> [352.615271] (5:node@TeX)   53  |  21 
+> [352.615271] (5:node@TeX) Predecessor: -1
+> [369.575209] (1:node@Gatien) My finger table:
+> [369.575209] (1:node@Gatien) Start | Succ 
+> [369.575209] (1:node@Gatien)   49  |   1 
+> [369.575209] (1:node@Gatien)   50  |   1 
+> [369.575209] (1:node@Gatien)   52  |   1 
+> [369.575209] (1:node@Gatien)   56  |  48 
+> [369.575209] (1:node@Gatien)    0  |  48 
+> [369.575209] (1:node@Gatien)   16  |  48 
+> [369.575209] (1:node@Gatien) Predecessor: 42
+> [382.882683] (2:node@McGee) My finger table:
+> [382.882683] (2:node@McGee) Start | Succ 
+> [382.882683] (2:node@McGee)   43  |  48 
+> [382.882683] (2:node@McGee)   44  |  48 
+> [382.882683] (2:node@McGee)   46  |  48 
+> [382.882683] (2:node@McGee)   50  |  42 
+> [382.882683] (2:node@McGee)   58  |  42 
+> [382.882683] (2:node@McGee)   10  |  42 
+> [382.882683] (2:node@McGee) Predecessor: 38
+> [384.345471] (4:node@Geoff) My finger table:
+> [384.345471] (4:node@Geoff) Start | Succ 
+> [384.345471] (4:node@Geoff)   33  |  38 
+> [384.345471] (4:node@Geoff)   34  |  38 
+> [384.345471] (4:node@Geoff)   36  |  32 
+> [384.345471] (4:node@Geoff)   40  |  32 
+> [384.345471] (4:node@Geoff)   48  |  32 
+> [384.345471] (4:node@Geoff)    0  |  32 
+> [384.345471] (4:node@Geoff) Predecessor: 21
+> [420.326402] (7:node@Boivin) My finger table:
+> [420.326402] (7:node@Boivin) Start | Succ 
+> [420.326402] (7:node@Boivin)    9  |  21 
+> [420.326402] (7:node@Boivin)   10  |  38 
+> [420.326402] (7:node@Boivin)   12  |  21 
+> [420.326402] (7:node@Boivin)   16  |   8 
+> [420.326402] (7:node@Boivin)   24  |   8 
+> [420.326402] (7:node@Boivin)   40  |   8 
+> [420.326402] (7:node@Boivin) Predecessor: -1
+> [440.893851] (5:node@TeX) My finger table:
+> [440.893851] (5:node@TeX) Start | Succ 
+> [440.893851] (5:node@TeX)   22  |  32 
+> [440.893851] (5:node@TeX)   23  |  32 
+> [440.893851] (5:node@TeX)   25  |  21 
+> [440.893851] (5:node@TeX)   29  |  21 
+> [440.893851] (5:node@TeX)   37  |  21 
+> [440.893851] (5:node@TeX)   53  |  21 
+> [440.893851] (5:node@TeX) Predecessor: 14
+> [479.758971] (3:node@iRMX) My finger table:
+> [479.758971] (3:node@iRMX) Start | Succ 
+> [479.758971] (3:node@iRMX)   39  |  42 
+> [479.758971] (3:node@iRMX)   40  |  42 
+> [479.758971] (3:node@iRMX)   42  |  42 
+> [479.758971] (3:node@iRMX)   46  |  38 
+> [479.758971] (3:node@iRMX)   54  |  38 
+> [479.758971] (3:node@iRMX)    6  |  38 
+> [479.758971] (3:node@iRMX) Predecessor: 32
+> [482.033225] (4:node@Geoff) My finger table:
+> [482.033225] (4:node@Geoff) Start | Succ 
+> [482.033225] (4:node@Geoff)   33  |  38 
+> [482.033225] (4:node@Geoff)   34  |  38 
+> [482.033225] (4:node@Geoff)   36  |  38 
+> [482.033225] (4:node@Geoff)   40  |  32 
+> [482.033225] (4:node@Geoff)   48  |  32 
+> [482.033225] (4:node@Geoff)    0  |  32 
+> [482.033225] (4:node@Geoff) Predecessor: 21
+> [490.659143] (1:node@Gatien) My finger table:
+> [490.659143] (1:node@Gatien) Start | Succ 
+> [490.659143] (1:node@Gatien)   49  |   1 
+> [490.659143] (1:node@Gatien)   50  |   1 
+> [490.659143] (1:node@Gatien)   52  |   1 
+> [490.659143] (1:node@Gatien)   56  |   1 
+> [490.659143] (1:node@Gatien)    0  |  48 
+> [490.659143] (1:node@Gatien)   16  |  48 
+> [490.659143] (1:node@Gatien) Predecessor: 42
+> [498.176263] (3:node@iRMX) My finger table:
+> [498.176263] (3:node@iRMX) Start | Succ 
+> [498.176263] (3:node@iRMX)   39  |  42 
+> [498.176263] (3:node@iRMX)   40  |  42 
+> [498.176263] (3:node@iRMX)   42  |  42 
+> [498.176263] (3:node@iRMX)   46  |  38 
+> [498.176263] (3:node@iRMX)   54  |  38 
+> [498.176263] (3:node@iRMX)    6  |  38 
+> [498.176263] (3:node@iRMX) Predecessor: 32
+> [498.611138] (6:node@Jean_Yves) My finger table:
+> [498.611138] (6:node@Jean_Yves) Start | Succ 
+> [498.611138] (6:node@Jean_Yves)   15  |  21 
+> [498.611138] (6:node@Jean_Yves)   16  |  38 
+> [498.611138] (6:node@Jean_Yves)   18  |  21 
+> [498.611138] (6:node@Jean_Yves)   22  |  14 
+> [498.611138] (6:node@Jean_Yves)   30  |  14 
+> [498.611138] (6:node@Jean_Yves)   46  |  14 
+> [498.611138] (6:node@Jean_Yves) Predecessor: -1
+> [500.558693] (8:node@Jacquelin) My finger table:
+> [500.558693] (8:node@Jacquelin) Start | Succ 
+> [500.558693] (8:node@Jacquelin)    2  |  14 
+> [500.558693] (8:node@Jacquelin)    3  |  32 
+> [500.558693] (8:node@Jacquelin)    5  |  14 
+> [500.558693] (8:node@Jacquelin)    9  |   1 
+> [500.558693] (8:node@Jacquelin)   17  |   1 
+> [500.558693] (8:node@Jacquelin)   33  |   1 
+> [500.558693] (8:node@Jacquelin) Predecessor: 48
+> [505.760856] (2:node@McGee) My finger table:
+> [505.760856] (2:node@McGee) Start | Succ 
+> [505.760856] (2:node@McGee)   43  |  48 
+> [505.760856] (2:node@McGee)   44  |  48 
+> [505.760856] (2:node@McGee)   46  |  48 
+> [505.760856] (2:node@McGee)   50  |   1 
+> [505.760856] (2:node@McGee)   58  |  42 
+> [505.760856] (2:node@McGee)   10  |  42 
+> [505.760856] (2:node@McGee) Predecessor: 38
+> [509.829034] (5:node@TeX) My finger table:
+> [509.829034] (5:node@TeX) Start | Succ 
+> [509.829034] (5:node@TeX)   22  |  32 
+> [509.829034] (5:node@TeX)   23  |  32 
+> [509.829034] (5:node@TeX)   25  |  32 
+> [509.829034] (5:node@TeX)   29  |  21 
+> [509.829034] (5:node@TeX)   37  |  21 
+> [509.829034] (5:node@TeX)   53  |  21 
+> [509.829034] (5:node@TeX) Predecessor: 14
+> [533.786329] (6:node@Jean_Yves) My finger table:
+> [533.786329] (6:node@Jean_Yves) Start | Succ 
+> [533.786329] (6:node@Jean_Yves)   15  |  21 
+> [533.786329] (6:node@Jean_Yves)   16  |  38 
+> [533.786329] (6:node@Jean_Yves)   18  |  21 
+> [533.786329] (6:node@Jean_Yves)   22  |  14 
+> [533.786329] (6:node@Jean_Yves)   30  |  14 
+> [533.786329] (6:node@Jean_Yves)   46  |  14 
+> [533.786329] (6:node@Jean_Yves) Predecessor: 8
+> [549.075290] (7:node@Boivin) My finger table:
+> [549.075290] (7:node@Boivin) Start | Succ 
+> [549.075290] (7:node@Boivin)    9  |  14 
+> [549.075290] (7:node@Boivin)   10  |  38 
+> [549.075290] (7:node@Boivin)   12  |  21 
+> [549.075290] (7:node@Boivin)   16  |  21 
+> [549.075290] (7:node@Boivin)   24  |   8 
+> [549.075290] (7:node@Boivin)   40  |   8 
+> [549.075290] (7:node@Boivin) Predecessor: -1
+> [753.389615] (0:@) Messages created: 605
+> [753.389615] (0:@) Simulated time: 753.39
 
 ! output sort
 $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.xml ${srcdir:=.}/chord10.xml --cfg=network/crosstraffic:0 --log=msg_chord.thres:verbose "--log=root.fmt:[%11.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:Constant
@@ -569,2408 +515,2327 @@ $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.
 > [   5.000000] (8:node@c-7.me)  14199064  | 10004760 
 > [   5.000000] (8:node@c-7.me)  1616152  | 10004760 
 > [   5.000000] (8:node@c-7.me) Predecessor: -1
-> [   6.000000] (2:node@c-1.me) My finger table:
-> [   6.000000] (2:node@c-1.me) Start | Succ 
-> [   6.000000] (2:node@c-1.me)  366681  |  42 
-> [   6.000000] (2:node@c-1.me)  366682  | 366680 
-> [   6.000000] (2:node@c-1.me)  366684  | 366680 
-> [   6.000000] (2:node@c-1.me)  366688  | 366680 
-> [   6.000000] (2:node@c-1.me)  366696  | 366680 
-> [   6.000000] (2:node@c-1.me)  366712  | 366680 
-> [   6.000000] (2:node@c-1.me)  366744  | 366680 
-> [   6.000000] (2:node@c-1.me)  366808  | 366680 
-> [   6.000000] (2:node@c-1.me)  366936  | 366680 
-> [   6.000000] (2:node@c-1.me)  367192  | 366680 
-> [   6.000000] (2:node@c-1.me)  367704  | 366680 
-> [   6.000000] (2:node@c-1.me)  368728  | 366680 
-> [   6.000000] (2:node@c-1.me)  370776  | 366680 
-> [   6.000000] (2:node@c-1.me)  374872  | 366680 
-> [   6.000000] (2:node@c-1.me)  383064  | 366680 
-> [   6.000000] (2:node@c-1.me)  399448  | 366680 
-> [   6.000000] (2:node@c-1.me)  432216  | 366680 
-> [   6.000000] (2:node@c-1.me)  497752  | 366680 
-> [   6.000000] (2:node@c-1.me)  628824  | 366680 
-> [   6.000000] (2:node@c-1.me)  890968  | 366680 
-> [   6.000000] (2:node@c-1.me)  1415256  | 366680 
-> [   6.000000] (2:node@c-1.me)  2463832  | 366680 
-> [   6.000000] (2:node@c-1.me)  4560984  | 366680 
-> [   6.000000] (2:node@c-1.me)  8755288  | 366680 
-> [   6.000000] (2:node@c-1.me) Predecessor: -1
-> [   8.000000] (7:node@c-6.me) My finger table:
-> [   8.000000] (7:node@c-6.me) Start | Succ 
-> [   8.000000] (7:node@c-6.me)  16728097  | 1319738 
-> [   8.000000] (7:node@c-6.me)  16728098  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728100  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16416  | 16728096 
-> [   8.000000] (7:node@c-6.me)  81952  | 16728096 
-> [   8.000000] (7:node@c-6.me)  213024  | 16728096 
-> [   8.000000] (7:node@c-6.me)  475168  | 16728096 
-> [   8.000000] (7:node@c-6.me)  999456  | 16728096 
-> [   8.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [   8.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [   8.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [   8.000000] (7:node@c-6.me) Predecessor: -1
-> [   9.000000] (10:node@c-9.me) My finger table:
-> [   9.000000] (10:node@c-9.me) Start | Succ 
-> [   9.000000] (10:node@c-9.me)  2015254  | 1319738 
-> [   9.000000] (10:node@c-9.me)  2015255  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015257  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015261  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [   9.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [   9.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [   9.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [   9.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [   9.000000] (10:node@c-9.me) Predecessor: -1
-> [  11.000000] (4:node@c-3.me) My finger table:
-> [  11.000000] (4:node@c-3.me) Start | Succ 
-> [  11.000000] (4:node@c-3.me)  1319739  |  42 
-> [  11.000000] (4:node@c-3.me)  1319740  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [  11.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [  11.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [  11.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [  11.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [  11.000000] (4:node@c-3.me) Predecessor: -1
-> [  16.000000] (9:node@c-8.me) My finger table:
-> [  16.000000] (9:node@c-8.me) Start | Succ 
-> [  16.000000] (9:node@c-8.me)  6518809  |  42 
-> [  16.000000] (9:node@c-8.me)  6518810  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [  16.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [  16.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [  16.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [  16.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [  16.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [  16.000000] (9:node@c-8.me) Predecessor: -1
-> [  26.000000] (4:node@c-3.me) My finger table:
-> [  26.000000] (4:node@c-3.me) Start | Succ 
-> [  26.000000] (4:node@c-3.me)  1319739  |  42 
-> [  26.000000] (4:node@c-3.me)  1319740  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [  26.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [  26.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [  26.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [  26.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [  26.000000] (4:node@c-3.me) Predecessor: 16728096
-> [  31.000000] (2:node@c-1.me) My finger table:
-> [  31.000000] (2:node@c-1.me) Start | Succ 
-> [  31.000000] (2:node@c-1.me)  366681  |  42 
-> [  31.000000] (2:node@c-1.me)  366682  | 366680 
-> [  31.000000] (2:node@c-1.me)  366684  | 366680 
-> [  31.000000] (2:node@c-1.me)  366688  | 366680 
-> [  31.000000] (2:node@c-1.me)  366696  | 366680 
-> [  31.000000] (2:node@c-1.me)  366712  | 366680 
-> [  31.000000] (2:node@c-1.me)  366744  | 366680 
-> [  31.000000] (2:node@c-1.me)  366808  | 366680 
-> [  31.000000] (2:node@c-1.me)  366936  | 366680 
-> [  31.000000] (2:node@c-1.me)  367192  | 366680 
-> [  31.000000] (2:node@c-1.me)  367704  | 366680 
-> [  31.000000] (2:node@c-1.me)  368728  | 366680 
-> [  31.000000] (2:node@c-1.me)  370776  | 366680 
-> [  31.000000] (2:node@c-1.me)  374872  | 366680 
-> [  31.000000] (2:node@c-1.me)  383064  | 366680 
-> [  31.000000] (2:node@c-1.me)  399448  | 366680 
-> [  31.000000] (2:node@c-1.me)  432216  | 366680 
-> [  31.000000] (2:node@c-1.me)  497752  | 366680 
-> [  31.000000] (2:node@c-1.me)  628824  | 366680 
-> [  31.000000] (2:node@c-1.me)  890968  | 366680 
-> [  31.000000] (2:node@c-1.me)  1415256  | 366680 
-> [  31.000000] (2:node@c-1.me)  2463832  | 366680 
-> [  31.000000] (2:node@c-1.me)  4560984  | 366680 
-> [  31.000000] (2:node@c-1.me)  8755288  | 366680 
-> [  31.000000] (2:node@c-1.me) Predecessor: 16509405
-> [  32.000000] (5:node@c-4.me) My finger table:
-> [  32.000000] (5:node@c-4.me) Start | Succ 
-> [  32.000000] (5:node@c-4.me)  16509406  | 366680 
-> [  32.000000] (5:node@c-4.me)  16509407  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509409  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509413  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509421  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [  32.000000] (5:node@c-4.me)  256477  | 16509405 
-> [  32.000000] (5:node@c-4.me)  780765  | 16509405 
-> [  32.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [  32.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [  32.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [  32.000000] (5:node@c-4.me) Predecessor: 10004760
-> [  38.000000] (3:node@c-2.me) My finger table:
-> [  38.000000] (3:node@c-2.me) Start | Succ 
-> [  38.000000] (3:node@c-2.me)  533745  | 16509405 
-> [  38.000000] (3:node@c-2.me)  533746  | 533744 
-> [  38.000000] (3:node@c-2.me)  533748  | 533744 
-> [  38.000000] (3:node@c-2.me)  533752  | 533744 
-> [  38.000000] (3:node@c-2.me)  533760  | 533744 
-> [  38.000000] (3:node@c-2.me)  533776  | 533744 
-> [  38.000000] (3:node@c-2.me)  533808  | 533744 
-> [  38.000000] (3:node@c-2.me)  533872  | 533744 
-> [  38.000000] (3:node@c-2.me)  534000  | 533744 
-> [  38.000000] (3:node@c-2.me)  534256  | 533744 
-> [  38.000000] (3:node@c-2.me)  534768  | 533744 
-> [  38.000000] (3:node@c-2.me)  535792  | 533744 
-> [  38.000000] (3:node@c-2.me)  537840  | 533744 
-> [  38.000000] (3:node@c-2.me)  541936  | 533744 
-> [  38.000000] (3:node@c-2.me)  550128  | 533744 
-> [  38.000000] (3:node@c-2.me)  566512  | 533744 
-> [  38.000000] (3:node@c-2.me)  599280  | 533744 
-> [  38.000000] (3:node@c-2.me)  664816  | 533744 
-> [  38.000000] (3:node@c-2.me)  795888  | 533744 
-> [  38.000000] (3:node@c-2.me)  1058032  | 533744 
-> [  38.000000] (3:node@c-2.me)  1582320  | 533744 
-> [  38.000000] (3:node@c-2.me)  2630896  | 533744 
-> [  38.000000] (3:node@c-2.me)  4728048  | 533744 
-> [  38.000000] (3:node@c-2.me)  8922352  | 533744 
-> [  38.000000] (3:node@c-2.me) Predecessor: 10874876
-> [  50.000000] (1:node@c-0.me) My finger table:
-> [  50.000000] (1:node@c-0.me) Start | Succ 
-> [  50.000000] (1:node@c-0.me)   43  |  42 
-> [  50.000000] (1:node@c-0.me)   44  |  42 
-> [  50.000000] (1:node@c-0.me)   46  |  42 
-> [  50.000000] (1:node@c-0.me)   50  |  42 
-> [  50.000000] (1:node@c-0.me)   58  |  42 
-> [  50.000000] (1:node@c-0.me)   74  |  42 
-> [  50.000000] (1:node@c-0.me)  106  |  42 
-> [  50.000000] (1:node@c-0.me)  170  |  42 
-> [  50.000000] (1:node@c-0.me)  298  |  42 
-> [  50.000000] (1:node@c-0.me)  554  |  42 
-> [  50.000000] (1:node@c-0.me)  1066  |  42 
-> [  50.000000] (1:node@c-0.me)  2090  |  42 
-> [  50.000000] (1:node@c-0.me)  4138  |  42 
-> [  50.000000] (1:node@c-0.me)  8234  |  42 
-> [  50.000000] (1:node@c-0.me)  16426  |  42 
-> [  50.000000] (1:node@c-0.me)  32810  |  42 
-> [  50.000000] (1:node@c-0.me)  65578  |  42 
-> [  50.000000] (1:node@c-0.me)  131114  |  42 
-> [  50.000000] (1:node@c-0.me)  262186  |  42 
-> [  50.000000] (1:node@c-0.me)  524330  |  42 
-> [  50.000000] (1:node@c-0.me)  1048618  |  42 
-> [  50.000000] (1:node@c-0.me)  2097194  |  42 
-> [  50.000000] (1:node@c-0.me)  4194346  |  42 
-> [  50.000000] (1:node@c-0.me)  8388650  |  42 
-> [  50.000000] (1:node@c-0.me) Predecessor: 366680
-> [  60.000000] (1:node@c-0.me) My finger table:
-> [  60.000000] (1:node@c-0.me) Start | Succ 
-> [  60.000000] (1:node@c-0.me)   43  |  42 
-> [  60.000000] (1:node@c-0.me)   44  |  42 
-> [  60.000000] (1:node@c-0.me)   46  |  42 
-> [  60.000000] (1:node@c-0.me)   50  |  42 
-> [  60.000000] (1:node@c-0.me)   58  |  42 
-> [  60.000000] (1:node@c-0.me)   74  |  42 
-> [  60.000000] (1:node@c-0.me)  106  |  42 
-> [  60.000000] (1:node@c-0.me)  170  |  42 
-> [  60.000000] (1:node@c-0.me)  298  |  42 
-> [  60.000000] (1:node@c-0.me)  554  |  42 
-> [  60.000000] (1:node@c-0.me)  1066  |  42 
-> [  60.000000] (1:node@c-0.me)  2090  |  42 
-> [  60.000000] (1:node@c-0.me)  4138  |  42 
-> [  60.000000] (1:node@c-0.me)  8234  |  42 
-> [  60.000000] (1:node@c-0.me)  16426  |  42 
-> [  60.000000] (1:node@c-0.me)  32810  |  42 
-> [  60.000000] (1:node@c-0.me)  65578  |  42 
-> [  60.000000] (1:node@c-0.me)  131114  |  42 
-> [  60.000000] (1:node@c-0.me)  262186  |  42 
-> [  60.000000] (1:node@c-0.me)  524330  |  42 
-> [  60.000000] (1:node@c-0.me)  1048618  |  42 
-> [  60.000000] (1:node@c-0.me)  2097194  |  42 
-> [  60.000000] (1:node@c-0.me)  4194346  |  42 
-> [  60.000000] (1:node@c-0.me)  8388650  |  42 
-> [  60.000000] (1:node@c-0.me) Predecessor: 1319738
-> [  70.000000] (1:node@c-0.me) My finger table:
-> [  70.000000] (1:node@c-0.me) Start | Succ 
-> [  70.000000] (1:node@c-0.me)   43  | 1319738 
-> [  70.000000] (1:node@c-0.me)   44  |  42 
-> [  70.000000] (1:node@c-0.me)   46  |  42 
-> [  70.000000] (1:node@c-0.me)   50  |  42 
-> [  70.000000] (1:node@c-0.me)   58  |  42 
-> [  70.000000] (1:node@c-0.me)   74  |  42 
-> [  70.000000] (1:node@c-0.me)  106  |  42 
-> [  70.000000] (1:node@c-0.me)  170  |  42 
-> [  70.000000] (1:node@c-0.me)  298  |  42 
-> [  70.000000] (1:node@c-0.me)  554  |  42 
-> [  70.000000] (1:node@c-0.me)  1066  |  42 
-> [  70.000000] (1:node@c-0.me)  2090  |  42 
-> [  70.000000] (1:node@c-0.me)  4138  |  42 
-> [  70.000000] (1:node@c-0.me)  8234  |  42 
-> [  70.000000] (1:node@c-0.me)  16426  |  42 
-> [  70.000000] (1:node@c-0.me)  32810  |  42 
-> [  70.000000] (1:node@c-0.me)  65578  |  42 
-> [  70.000000] (1:node@c-0.me)  131114  |  42 
-> [  70.000000] (1:node@c-0.me)  262186  |  42 
-> [  70.000000] (1:node@c-0.me)  524330  |  42 
-> [  70.000000] (1:node@c-0.me)  1048618  |  42 
-> [  70.000000] (1:node@c-0.me)  2097194  |  42 
-> [  70.000000] (1:node@c-0.me)  4194346  |  42 
-> [  70.000000] (1:node@c-0.me)  8388650  |  42 
-> [  70.000000] (1:node@c-0.me) Predecessor: 6518808
-> [  85.000000] (4:node@c-3.me) My finger table:
-> [  85.000000] (4:node@c-3.me) Start | Succ 
-> [  85.000000] (4:node@c-3.me)  1319739  | 6518808 
-> [  85.000000] (4:node@c-3.me)  1319740  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [  85.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [  85.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [  85.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [  85.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [  85.000000] (4:node@c-3.me) Predecessor: 42
-> [  86.000000] (8:node@c-7.me) My finger table:
-> [  86.000000] (8:node@c-7.me) Start | Succ 
-> [  86.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [  86.000000] (8:node@c-7.me)  10004762  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004764  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004768  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [  86.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [  86.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [  86.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [  86.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [  86.000000] (8:node@c-7.me) Predecessor: 533744
-> [  90.000000] (7:node@c-6.me) My finger table:
-> [  90.000000] (7:node@c-6.me) Start | Succ 
-> [  90.000000] (7:node@c-6.me)  16728097  | 1319738 
-> [  90.000000] (7:node@c-6.me)  16728098  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728100  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16416  | 16728096 
-> [  90.000000] (7:node@c-6.me)  81952  | 16728096 
-> [  90.000000] (7:node@c-6.me)  213024  | 16728096 
-> [  90.000000] (7:node@c-6.me)  475168  | 16728096 
-> [  90.000000] (7:node@c-6.me)  999456  | 16728096 
-> [  90.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [  90.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [  90.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [  90.000000] (7:node@c-6.me) Predecessor: 2015253
-> [ 109.000000] (9:node@c-8.me) My finger table:
-> [ 109.000000] (9:node@c-8.me) Start | Succ 
-> [ 109.000000] (9:node@c-8.me)  6518809  |  42 
-> [ 109.000000] (9:node@c-8.me)  6518810  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 109.000000] (9:node@c-8.me) Predecessor: 366680
-> [ 110.000000] (9:node@c-8.me) My finger table:
-> [ 110.000000] (9:node@c-8.me) Start | Succ 
-> [ 110.000000] (9:node@c-8.me)  6518809  |  42 
-> [ 110.000000] (9:node@c-8.me)  6518810  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 110.000000] (9:node@c-8.me) Predecessor: 1319738
-> [ 174.000000] (1:node@c-0.me) My finger table:
-> [ 174.000000] (1:node@c-0.me) Start | Succ 
-> [ 174.000000] (1:node@c-0.me)   43  | 1319738 
-> [ 174.000000] (1:node@c-0.me)   44  |  42 
-> [ 174.000000] (1:node@c-0.me)   46  |  42 
-> [ 174.000000] (1:node@c-0.me)   50  |  42 
-> [ 174.000000] (1:node@c-0.me)   58  |  42 
-> [ 174.000000] (1:node@c-0.me)   74  |  42 
-> [ 174.000000] (1:node@c-0.me)  106  |  42 
-> [ 174.000000] (1:node@c-0.me)  170  |  42 
-> [ 174.000000] (1:node@c-0.me)  298  |  42 
-> [ 174.000000] (1:node@c-0.me)  554  |  42 
-> [ 174.000000] (1:node@c-0.me)  1066  |  42 
-> [ 174.000000] (1:node@c-0.me)  2090  |  42 
-> [ 174.000000] (1:node@c-0.me)  4138  |  42 
-> [ 174.000000] (1:node@c-0.me)  8234  |  42 
-> [ 174.000000] (1:node@c-0.me)  16426  |  42 
-> [ 174.000000] (1:node@c-0.me)  32810  |  42 
-> [ 174.000000] (1:node@c-0.me)  65578  |  42 
-> [ 174.000000] (1:node@c-0.me)  131114  |  42 
-> [ 174.000000] (1:node@c-0.me)  262186  |  42 
-> [ 174.000000] (1:node@c-0.me)  524330  |  42 
-> [ 174.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 174.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 174.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 174.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 174.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 245.000000] (8:node@c-7.me) My finger table:
-> [ 245.000000] (8:node@c-7.me) Start | Succ 
-> [ 245.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 245.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 245.000000] (8:node@c-7.me)  10004764  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004768  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 245.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 246.000000] (3:node@c-2.me) My finger table:
-> [ 246.000000] (3:node@c-2.me) Start | Succ 
-> [ 246.000000] (3:node@c-2.me)  533745  | 10004760 
-> [ 246.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 246.000000] (3:node@c-2.me)  533748  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533752  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533760  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 246.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 246.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 246.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 246.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 246.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 246.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 246.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 246.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 246.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 246.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 246.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 246.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 246.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 246.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 246.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 246.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 246.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 246.000000] (5:node@c-4.me) My finger table:
-> [ 246.000000] (5:node@c-4.me) Start | Succ 
-> [ 246.000000] (5:node@c-4.me)  16509406  | 366680 
-> [ 246.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 246.000000] (5:node@c-4.me)  16509409  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509413  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509421  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 246.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 247.000000] (6:node@c-5.me) My finger table:
-> [ 247.000000] (6:node@c-5.me) Start | Succ 
-> [ 247.000000] (6:node@c-5.me)  10874877  | 533744 
-> [ 247.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 247.000000] (6:node@c-5.me)  10874880  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10874884  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10874892  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10874908  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 247.000000] (6:node@c-5.me) Predecessor: -1
-> [ 247.000000] (7:node@c-6.me) My finger table:
-> [ 247.000000] (7:node@c-6.me) Start | Succ 
-> [ 247.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 247.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 247.000000] (7:node@c-6.me)  16728100  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 247.000000] (7:node@c-6.me) Predecessor: 2015253
-> [ 253.000000] (1:node@c-0.me) My finger table:
-> [ 253.000000] (1:node@c-0.me) Start | Succ 
-> [ 253.000000] (1:node@c-0.me)   43  | 1319738 
-> [ 253.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 253.000000] (1:node@c-0.me)   46  |  42 
-> [ 253.000000] (1:node@c-0.me)   50  |  42 
-> [ 253.000000] (1:node@c-0.me)   58  |  42 
-> [ 253.000000] (1:node@c-0.me)   74  |  42 
-> [ 253.000000] (1:node@c-0.me)  106  |  42 
-> [ 253.000000] (1:node@c-0.me)  170  |  42 
-> [ 253.000000] (1:node@c-0.me)  298  |  42 
-> [ 253.000000] (1:node@c-0.me)  554  |  42 
-> [ 253.000000] (1:node@c-0.me)  1066  |  42 
-> [ 253.000000] (1:node@c-0.me)  2090  |  42 
-> [ 253.000000] (1:node@c-0.me)  4138  |  42 
-> [ 253.000000] (1:node@c-0.me)  8234  |  42 
-> [ 253.000000] (1:node@c-0.me)  16426  |  42 
-> [ 253.000000] (1:node@c-0.me)  32810  |  42 
-> [ 253.000000] (1:node@c-0.me)  65578  |  42 
-> [ 253.000000] (1:node@c-0.me)  131114  |  42 
-> [ 253.000000] (1:node@c-0.me)  262186  |  42 
-> [ 253.000000] (1:node@c-0.me)  524330  |  42 
-> [ 253.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 253.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 253.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 253.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 253.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 255.000000] (2:node@c-1.me) My finger table:
-> [ 255.000000] (2:node@c-1.me) Start | Succ 
-> [ 255.000000] (2:node@c-1.me)  366681  | 1319738 
-> [ 255.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 255.000000] (2:node@c-1.me)  366684  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366688  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366696  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 255.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 255.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 255.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 255.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 255.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 255.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 255.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 255.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 255.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 255.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 255.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 255.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 255.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 255.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 255.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 255.000000] (2:node@c-1.me) Predecessor: 16509405
-> [ 260.000000] (4:node@c-3.me) My finger table:
-> [ 260.000000] (4:node@c-3.me) Start | Succ 
-> [ 260.000000] (4:node@c-3.me)  1319739  | 6518808 
-> [ 260.000000] (4:node@c-3.me)  1319740  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 260.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 292.000000] (7:node@c-6.me) My finger table:
-> [ 292.000000] (7:node@c-6.me) Start | Succ 
-> [ 292.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 292.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 292.000000] (7:node@c-6.me)  16728100  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 292.000000] (7:node@c-6.me) Predecessor: 6518808
-> [ 300.000000] (9:node@c-8.me) My finger table:
-> [ 300.000000] (9:node@c-8.me) Start | Succ 
-> [ 300.000000] (9:node@c-8.me)  6518809  | 16728096 
-> [ 300.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 300.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 300.000000] (9:node@c-8.me) Predecessor: 1319738
-> [ 301.000000] (10:node@c-9.me) My finger table:
-> [ 301.000000] (10:node@c-9.me) Start | Succ 
-> [ 301.000000] (10:node@c-9.me)  2015254  | 16728096 
-> [ 301.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 301.000000] (10:node@c-9.me)  2015257  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015261  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 301.000000] (10:node@c-9.me) Predecessor: -1
-> [ 302.000000] (2:node@c-1.me) My finger table:
-> [ 302.000000] (2:node@c-1.me) Start | Succ 
-> [ 302.000000] (2:node@c-1.me)  366681  | 1319738 
-> [ 302.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 302.000000] (2:node@c-1.me)  366684  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366688  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366696  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 302.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 302.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 302.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 302.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 302.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 302.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 302.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 302.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 302.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 302.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 302.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 302.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 302.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 302.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 302.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 302.000000] (2:node@c-1.me) Predecessor: 42
-> [ 306.000000] (4:node@c-3.me) My finger table:
-> [ 306.000000] (4:node@c-3.me) Start | Succ 
-> [ 306.000000] (4:node@c-3.me)  1319739  | 6518808 
-> [ 306.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 306.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 306.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 339.000000] (9:node@c-8.me) My finger table:
-> [ 339.000000] (9:node@c-8.me) Start | Succ 
-> [ 339.000000] (9:node@c-8.me)  6518809  | 16728096 
-> [ 339.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 339.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 339.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 367.000000] (6:node@c-5.me) My finger table:
-> [ 367.000000] (6:node@c-5.me) Start | Succ 
-> [ 367.000000] (6:node@c-5.me)  10874877  | 533744 
-> [ 367.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 367.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 367.000000] (6:node@c-5.me)  10874884  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10874892  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10874908  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 367.000000] (6:node@c-5.me) Predecessor: -1
-> [ 368.000000] (3:node@c-2.me) My finger table:
-> [ 368.000000] (3:node@c-2.me) Start | Succ 
-> [ 368.000000] (3:node@c-2.me)  533745  | 10004760 
-> [ 368.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 368.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 368.000000] (3:node@c-2.me)  533752  | 533744 
-> [ 368.000000] (3:node@c-2.me)  533760  | 533744 
-> [ 368.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 368.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 368.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 368.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 368.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 368.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 368.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 368.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 368.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 368.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 368.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 368.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 368.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 368.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 368.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 368.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 368.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 368.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 368.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 368.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 368.000000] (5:node@c-4.me) My finger table:
-> [ 368.000000] (5:node@c-4.me) Start | Succ 
-> [ 368.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 368.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 368.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 368.000000] (5:node@c-4.me)  16509413  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509421  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 368.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 370.000000] (8:node@c-7.me) My finger table:
-> [ 370.000000] (8:node@c-7.me) Start | Succ 
-> [ 370.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 370.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 370.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 370.000000] (8:node@c-7.me)  10004768  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 370.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 373.000000] (7:node@c-6.me) My finger table:
-> [ 373.000000] (7:node@c-6.me) Start | Succ 
-> [ 373.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 373.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 373.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 373.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 373.000000] (7:node@c-6.me) Predecessor: 6518808
-> [ 375.000000] (2:node@c-1.me) My finger table:
-> [ 375.000000] (2:node@c-1.me) Start | Succ 
-> [ 375.000000] (2:node@c-1.me)  366681  | 1319738 
-> [ 375.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 375.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 375.000000] (2:node@c-1.me)  366688  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366696  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 375.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 375.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 375.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 375.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 375.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 375.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 375.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 375.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 375.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 375.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 375.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 375.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 375.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 375.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 375.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 375.000000] (2:node@c-1.me) Predecessor: 42
-> [ 382.000000] (1:node@c-0.me) My finger table:
-> [ 382.000000] (1:node@c-0.me) Start | Succ 
-> [ 382.000000] (1:node@c-0.me)   43  | 366680 
-> [ 382.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 382.000000] (1:node@c-0.me)   46  | 366680 
-> [ 382.000000] (1:node@c-0.me)   50  |  42 
-> [ 382.000000] (1:node@c-0.me)   58  |  42 
-> [ 382.000000] (1:node@c-0.me)   74  |  42 
-> [ 382.000000] (1:node@c-0.me)  106  |  42 
-> [ 382.000000] (1:node@c-0.me)  170  |  42 
-> [ 382.000000] (1:node@c-0.me)  298  |  42 
-> [ 382.000000] (1:node@c-0.me)  554  |  42 
-> [ 382.000000] (1:node@c-0.me)  1066  |  42 
-> [ 382.000000] (1:node@c-0.me)  2090  |  42 
-> [ 382.000000] (1:node@c-0.me)  4138  |  42 
-> [ 382.000000] (1:node@c-0.me)  8234  |  42 
-> [ 382.000000] (1:node@c-0.me)  16426  |  42 
-> [ 382.000000] (1:node@c-0.me)  32810  |  42 
-> [ 382.000000] (1:node@c-0.me)  65578  |  42 
-> [ 382.000000] (1:node@c-0.me)  131114  |  42 
-> [ 382.000000] (1:node@c-0.me)  262186  |  42 
-> [ 382.000000] (1:node@c-0.me)  524330  |  42 
-> [ 382.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 382.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 382.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 382.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 382.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 383.000000] (7:node@c-6.me) My finger table:
-> [ 383.000000] (7:node@c-6.me) Start | Succ 
-> [ 383.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 383.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 383.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 383.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 383.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 385.000000] (10:node@c-9.me) My finger table:
-> [ 385.000000] (10:node@c-9.me) Start | Succ 
-> [ 385.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 385.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 385.000000] (10:node@c-9.me)  2015257  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015261  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 385.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 427.000000] (9:node@c-8.me) My finger table:
-> [ 427.000000] (9:node@c-8.me) Start | Succ 
-> [ 427.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 427.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 427.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 427.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 427.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 432.000000] (10:node@c-9.me) My finger table:
-> [ 432.000000] (10:node@c-9.me) Start | Succ 
-> [ 432.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 432.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 432.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 432.000000] (10:node@c-9.me)  2015261  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 432.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 484.000000] (4:node@c-3.me) My finger table:
-> [ 484.000000] (4:node@c-3.me) Start | Succ 
-> [ 484.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 484.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 484.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 484.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 484.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 487.000000] (6:node@c-5.me) My finger table:
-> [ 487.000000] (6:node@c-5.me) Start | Succ 
-> [ 487.000000] (6:node@c-5.me)  10874877  | 533744 
-> [ 487.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 487.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 487.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 487.000000] (6:node@c-5.me)  10874892  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10874908  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 487.000000] (6:node@c-5.me) Predecessor: -1
-> [ 490.000000] (8:node@c-7.me) My finger table:
-> [ 490.000000] (8:node@c-7.me) Start | Succ 
-> [ 490.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 490.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 490.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 490.000000] (8:node@c-7.me)  10004768  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 490.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 491.000000] (8:node@c-7.me) My finger table:
-> [ 491.000000] (8:node@c-7.me) Start | Succ 
-> [ 491.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 491.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 491.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 491.000000] (8:node@c-7.me)  10004768  | 16509405 
-> [ 491.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 491.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 496.000000] (7:node@c-6.me) My finger table:
-> [ 496.000000] (7:node@c-6.me) Start | Succ 
-> [ 496.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 496.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 496.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 496.000000] (7:node@c-6.me)  16728104  |  42 
-> [ 496.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 496.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 497.000000] (3:node@c-2.me) My finger table:
-> [ 497.000000] (3:node@c-2.me) Start | Succ 
-> [ 497.000000] (3:node@c-2.me)  533745  | 6518808 
-> [ 497.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 497.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 497.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 497.000000] (3:node@c-2.me)  533760  | 533744 
-> [ 497.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 497.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 497.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 497.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 497.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 497.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 497.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 497.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 497.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 497.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 497.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 497.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 497.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 497.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 497.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 497.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 497.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 497.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 497.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 497.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 502.000000] (1:node@c-0.me) My finger table:
-> [ 502.000000] (1:node@c-0.me) Start | Succ 
-> [ 502.000000] (1:node@c-0.me)   43  | 366680 
-> [ 502.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 502.000000] (1:node@c-0.me)   46  | 366680 
-> [ 502.000000] (1:node@c-0.me)   50  | 366680 
-> [ 502.000000] (1:node@c-0.me)   58  |  42 
-> [ 502.000000] (1:node@c-0.me)   74  |  42 
-> [ 502.000000] (1:node@c-0.me)  106  |  42 
-> [ 502.000000] (1:node@c-0.me)  170  |  42 
-> [ 502.000000] (1:node@c-0.me)  298  |  42 
-> [ 502.000000] (1:node@c-0.me)  554  |  42 
-> [ 502.000000] (1:node@c-0.me)  1066  |  42 
-> [ 502.000000] (1:node@c-0.me)  2090  |  42 
-> [ 502.000000] (1:node@c-0.me)  4138  |  42 
-> [ 502.000000] (1:node@c-0.me)  8234  |  42 
-> [ 502.000000] (1:node@c-0.me)  16426  |  42 
-> [ 502.000000] (1:node@c-0.me)  32810  |  42 
-> [ 502.000000] (1:node@c-0.me)  65578  |  42 
-> [ 502.000000] (1:node@c-0.me)  131114  |  42 
-> [ 502.000000] (1:node@c-0.me)  262186  |  42 
-> [ 502.000000] (1:node@c-0.me)  524330  |  42 
-> [ 502.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 502.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 502.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 502.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 502.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 505.000000] (2:node@c-1.me) My finger table:
-> [ 505.000000] (2:node@c-1.me) Start | Succ 
-> [ 505.000000] (2:node@c-1.me)  366681  | 1319738 
-> [ 505.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 505.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 505.000000] (2:node@c-1.me)  366688  | 1319738 
-> [ 505.000000] (2:node@c-1.me)  366696  | 366680 
-> [ 505.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 505.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 505.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 505.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 505.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 505.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 505.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 505.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 505.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 505.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 505.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 505.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 505.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 505.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 505.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 505.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 505.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 505.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 505.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 505.000000] (2:node@c-1.me) Predecessor: 42
-> [ 513.000000] (5:node@c-4.me) My finger table:
-> [ 513.000000] (5:node@c-4.me) Start | Succ 
-> [ 513.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 513.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 513.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 513.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 513.000000] (5:node@c-4.me)  16509421  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 513.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 558.000000] (9:node@c-8.me) My finger table:
-> [ 558.000000] (9:node@c-8.me) Start | Succ 
-> [ 558.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 558.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 558.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 558.000000] (9:node@c-8.me)  6518816  | 10004760 
-> [ 558.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 558.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 573.000000] (10:node@c-9.me) My finger table:
-> [ 573.000000] (10:node@c-9.me) Start | Succ 
-> [ 573.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 573.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 573.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 573.000000] (10:node@c-9.me)  2015261  | 6518808 
-> [ 573.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 573.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 600.000000] (4:node@c-3.me) My finger table:
-> [ 600.000000] (4:node@c-3.me) Start | Succ 
-> [ 600.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 600.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 600.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 600.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 600.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 610.000000] (6:node@c-5.me) My finger table:
-> [ 610.000000] (6:node@c-5.me) Start | Succ 
-> [ 610.000000] (6:node@c-5.me)  10874877  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874908  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 610.000000] (6:node@c-5.me) Predecessor: -1
-> [ 656.000000] (5:node@c-4.me) My finger table:
-> [ 656.000000] (5:node@c-4.me) Start | Succ 
-> [ 656.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 656.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 656.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 656.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 656.000000] (5:node@c-4.me)  16509421  | 16728096 
-> [ 656.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 656.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 657.000000] (7:node@c-6.me) My finger table:
-> [ 657.000000] (7:node@c-6.me) Start | Succ 
-> [ 657.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728104  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728112  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 657.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 663.000000] (4:node@c-3.me) My finger table:
-> [ 663.000000] (4:node@c-3.me) Start | Succ 
-> [ 663.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 663.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 663.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 663.000000] (4:node@c-3.me)  1319746  | 2015253 
-> [ 663.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 663.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 665.000000] (1:node@c-0.me) My finger table:
-> [ 665.000000] (1:node@c-0.me) Start | Succ 
-> [ 665.000000] (1:node@c-0.me)   43  | 366680 
-> [ 665.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 665.000000] (1:node@c-0.me)   46  | 366680 
-> [ 665.000000] (1:node@c-0.me)   50  | 366680 
-> [ 665.000000] (1:node@c-0.me)   58  | 366680 
-> [ 665.000000] (1:node@c-0.me)   74  |  42 
-> [ 665.000000] (1:node@c-0.me)  106  |  42 
-> [ 665.000000] (1:node@c-0.me)  170  |  42 
-> [ 665.000000] (1:node@c-0.me)  298  |  42 
-> [ 665.000000] (1:node@c-0.me)  554  |  42 
-> [ 665.000000] (1:node@c-0.me)  1066  |  42 
-> [ 665.000000] (1:node@c-0.me)  2090  |  42 
-> [ 665.000000] (1:node@c-0.me)  4138  |  42 
-> [ 665.000000] (1:node@c-0.me)  8234  |  42 
-> [ 665.000000] (1:node@c-0.me)  16426  |  42 
-> [ 665.000000] (1:node@c-0.me)  32810  |  42 
-> [ 665.000000] (1:node@c-0.me)  65578  |  42 
-> [ 665.000000] (1:node@c-0.me)  131114  |  42 
-> [ 665.000000] (1:node@c-0.me)  262186  |  42 
-> [ 665.000000] (1:node@c-0.me)  524330  |  42 
-> [ 665.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 665.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 665.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 665.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 665.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 669.000000] (8:node@c-7.me) My finger table:
-> [ 669.000000] (8:node@c-7.me) Start | Succ 
-> [ 669.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004768  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004776  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 669.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 671.000000] (3:node@c-2.me) My finger table:
-> [ 671.000000] (3:node@c-2.me) Start | Succ 
-> [ 671.000000] (3:node@c-2.me)  533745  | 1319738 
-> [ 671.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 671.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 671.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 671.000000] (3:node@c-2.me)  533760  | 1319738 
-> [ 671.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 671.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 671.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 671.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 671.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 671.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 671.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 671.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 671.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 671.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 671.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 671.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 671.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 671.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 671.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 671.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 671.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 671.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 671.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 671.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 678.000000] (9:node@c-8.me) My finger table:
-> [ 678.000000] (9:node@c-8.me) Start | Succ 
-> [ 678.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 678.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 678.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 678.000000] (9:node@c-8.me)  6518816  | 10004760 
-> [ 678.000000] (9:node@c-8.me)  6518824  | 10004760 
-> [ 678.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 678.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 683.000000] (2:node@c-1.me) My finger table:
-> [ 683.000000] (2:node@c-1.me) Start | Succ 
-> [ 683.000000] (2:node@c-1.me)  366681  | 533744 
-> [ 683.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 683.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 683.000000] (2:node@c-1.me)  366688  | 1319738 
-> [ 683.000000] (2:node@c-1.me)  366696  | 533744 
-> [ 683.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 683.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 683.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 683.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 683.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 683.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 683.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 683.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 683.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 683.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 683.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 683.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 683.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 683.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 683.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 683.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 683.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 683.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 683.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 683.000000] (2:node@c-1.me) Predecessor: 42
-> [ 684.000000] (3:node@c-2.me) My finger table:
-> [ 684.000000] (3:node@c-2.me) Start | Succ 
-> [ 684.000000] (3:node@c-2.me)  533745  | 1319738 
-> [ 684.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 684.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 684.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 684.000000] (3:node@c-2.me)  533760  | 1319738 
-> [ 684.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 684.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 684.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 684.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 684.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 684.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 684.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 684.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 684.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 684.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 684.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 684.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 684.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 684.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 684.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 684.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 684.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 684.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 684.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 684.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 721.000000] (10:node@c-9.me) My finger table:
-> [ 721.000000] (10:node@c-9.me) Start | Succ 
-> [ 721.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 721.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 721.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 721.000000] (10:node@c-9.me)  2015261  | 6518808 
-> [ 721.000000] (10:node@c-9.me)  2015269  | 6518808 
-> [ 721.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 721.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 744.000000] (6:node@c-5.me) My finger table:
-> [ 744.000000] (6:node@c-5.me) Start | Succ 
-> [ 744.000000] (6:node@c-5.me)  10874877  | 16728096 
-> [ 744.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 744.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 744.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 744.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 744.000000] (6:node@c-5.me)  10874908  | 16728096 
-> [ 744.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 744.000000] (6:node@c-5.me) Predecessor: -1
-> [ 777.000000] (7:node@c-6.me) My finger table:
-> [ 777.000000] (7:node@c-6.me) Start | Succ 
-> [ 777.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728104  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728112  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728128  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 777.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 786.000000] (5:node@c-4.me) My finger table:
-> [ 786.000000] (5:node@c-4.me) Start | Succ 
-> [ 786.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 786.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509421  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509437  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 786.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 787.000000] (4:node@c-3.me) My finger table:
-> [ 787.000000] (4:node@c-3.me) Start | Succ 
-> [ 787.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 787.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 787.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 787.000000] (4:node@c-3.me)  1319746  | 2015253 
-> [ 787.000000] (4:node@c-3.me)  1319754  | 2015253 
-> [ 787.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 787.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 788.000000] (1:node@c-0.me) My finger table:
-> [ 788.000000] (1:node@c-0.me) Start | Succ 
-> [ 788.000000] (1:node@c-0.me)   43  | 366680 
-> [ 788.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 788.000000] (1:node@c-0.me)   46  | 366680 
-> [ 788.000000] (1:node@c-0.me)   50  | 366680 
-> [ 788.000000] (1:node@c-0.me)   58  | 366680 
-> [ 788.000000] (1:node@c-0.me)   74  | 366680 
-> [ 788.000000] (1:node@c-0.me)  106  |  42 
-> [ 788.000000] (1:node@c-0.me)  170  |  42 
-> [ 788.000000] (1:node@c-0.me)  298  |  42 
-> [ 788.000000] (1:node@c-0.me)  554  |  42 
-> [ 788.000000] (1:node@c-0.me)  1066  |  42 
-> [ 788.000000] (1:node@c-0.me)  2090  |  42 
-> [ 788.000000] (1:node@c-0.me)  4138  |  42 
-> [ 788.000000] (1:node@c-0.me)  8234  |  42 
-> [ 788.000000] (1:node@c-0.me)  16426  |  42 
-> [ 788.000000] (1:node@c-0.me)  32810  |  42 
-> [ 788.000000] (1:node@c-0.me)  65578  |  42 
-> [ 788.000000] (1:node@c-0.me)  131114  |  42 
-> [ 788.000000] (1:node@c-0.me)  262186  |  42 
-> [ 788.000000] (1:node@c-0.me)  524330  |  42 
-> [ 788.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 788.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 788.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 788.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 788.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 793.000000] (3:node@c-2.me) My finger table:
-> [ 793.000000] (3:node@c-2.me) Start | Succ 
-> [ 793.000000] (3:node@c-2.me)  533745  | 1319738 
-> [ 793.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 793.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 793.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 793.000000] (3:node@c-2.me)  533760  | 1319738 
-> [ 793.000000] (3:node@c-2.me)  533776  | 1319738 
-> [ 793.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 793.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 793.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 793.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 793.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 793.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 793.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 793.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 793.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 793.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 793.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 793.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 793.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 793.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 793.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 793.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 793.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 793.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 793.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 797.000000] (5:node@c-4.me) My finger table:
-> [ 797.000000] (5:node@c-4.me) Start | Succ 
-> [ 797.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 797.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509421  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509437  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 797.000000] (5:node@c-4.me) Predecessor: 10874876
-> [ 798.000000] (8:node@c-7.me) My finger table:
-> [ 798.000000] (8:node@c-7.me) Start | Succ 
-> [ 798.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004768  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004776  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004792  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 798.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 801.000000] (9:node@c-8.me) My finger table:
-> [ 801.000000] (9:node@c-8.me) Start | Succ 
-> [ 801.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 801.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518816  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518824  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518840  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 801.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 804.000000] (2:node@c-1.me) My finger table:
-> [ 804.000000] (2:node@c-1.me) Start | Succ 
-> [ 804.000000] (2:node@c-1.me)  366681  | 533744 
-> [ 804.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 804.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 804.000000] (2:node@c-1.me)  366688  | 1319738 
-> [ 804.000000] (2:node@c-1.me)  366696  | 533744 
-> [ 804.000000] (2:node@c-1.me)  366712  | 533744 
-> [ 804.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 804.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 804.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 804.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 804.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 804.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 804.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 804.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 804.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 804.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 804.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 804.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 804.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 804.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 804.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 804.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 804.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 804.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 804.000000] (2:node@c-1.me) Predecessor: 42
-> [ 843.000000] (10:node@c-9.me) My finger table:
-> [ 843.000000] (10:node@c-9.me) Start | Succ 
-> [ 843.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 843.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015261  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015269  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015285  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 843.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 865.000000] (6:node@c-5.me) My finger table:
-> [ 865.000000] (6:node@c-5.me) Start | Succ 
-> [ 865.000000] (6:node@c-5.me)  10874877  | 16509405 
-> [ 865.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 865.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 865.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 865.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 865.000000] (6:node@c-5.me)  10874908  | 16728096 
-> [ 865.000000] (6:node@c-5.me)  10874940  | 16509405 
-> [ 865.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 865.000000] (6:node@c-5.me) Predecessor: -1
-> [ 870.000000] (6:node@c-5.me) My finger table:
-> [ 870.000000] (6:node@c-5.me) Start | Succ 
-> [ 870.000000] (6:node@c-5.me)  10874877  | 16509405 
-> [ 870.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 870.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 870.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 870.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 870.000000] (6:node@c-5.me)  10874908  | 16728096 
-> [ 870.000000] (6:node@c-5.me)  10874940  | 16509405 
-> [ 870.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 870.000000] (6:node@c-5.me) Predecessor: 10004760
-> [ 910.000000] (5:node@c-4.me) My finger table:
-> [ 910.000000] (5:node@c-4.me) Start | Succ 
-> [ 910.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 910.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509421  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509437  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509469  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 910.000000] (5:node@c-4.me) Predecessor: 10874876
-> [ 912.000000] (1:node@c-0.me) My finger table:
-> [ 912.000000] (1:node@c-0.me) Start | Succ 
-> [ 912.000000] (1:node@c-0.me)   43  | 366680 
-> [ 912.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 912.000000] (1:node@c-0.me)   46  | 366680 
-> [ 912.000000] (1:node@c-0.me)   50  | 366680 
-> [ 912.000000] (1:node@c-0.me)   58  | 366680 
-> [ 912.000000] (1:node@c-0.me)   74  | 366680 
-> [ 912.000000] (1:node@c-0.me)  106  | 366680 
-> [ 912.000000] (1:node@c-0.me)  170  |  42 
-> [ 912.000000] (1:node@c-0.me)  298  |  42 
-> [ 912.000000] (1:node@c-0.me)  554  |  42 
-> [ 912.000000] (1:node@c-0.me)  1066  |  42 
-> [ 912.000000] (1:node@c-0.me)  2090  |  42 
-> [ 912.000000] (1:node@c-0.me)  4138  |  42 
-> [ 912.000000] (1:node@c-0.me)  8234  |  42 
-> [ 912.000000] (1:node@c-0.me)  16426  |  42 
-> [ 912.000000] (1:node@c-0.me)  32810  |  42 
-> [ 912.000000] (1:node@c-0.me)  65578  |  42 
-> [ 912.000000] (1:node@c-0.me)  131114  |  42 
-> [ 912.000000] (1:node@c-0.me)  262186  |  42 
-> [ 912.000000] (1:node@c-0.me)  524330  |  42 
-> [ 912.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 912.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 912.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 912.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 912.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 913.000000] (3:node@c-2.me) My finger table:
-> [ 913.000000] (3:node@c-2.me) Start | Succ 
-> [ 913.000000] (3:node@c-2.me)  533745  | 1319738 
-> [ 913.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 913.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 913.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 913.000000] (3:node@c-2.me)  533760  | 1319738 
-> [ 913.000000] (3:node@c-2.me)  533776  | 1319738 
-> [ 913.000000] (3:node@c-2.me)  533808  | 1319738 
-> [ 913.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 913.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 913.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 913.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 913.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 913.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 913.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 913.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 913.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 913.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 913.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 913.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 913.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 913.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 913.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 913.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 913.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 913.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 921.000000] (8:node@c-7.me) My finger table:
-> [ 921.000000] (8:node@c-7.me) Start | Succ 
-> [ 921.000000] (8:node@c-7.me)  10004761  | 10874876 
-> [ 921.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004768  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004776  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004792  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004824  | 10874876 
-> [ 921.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 921.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 964.000000] (2:node@c-1.me) My finger table:
-> [ 964.000000] (2:node@c-1.me) Start | Succ 
-> [ 964.000000] (2:node@c-1.me)  366681  | 533744 
-> [ 964.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 964.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 964.000000] (2:node@c-1.me)  366688  | 1319738 
-> [ 964.000000] (2:node@c-1.me)  366696  | 533744 
-> [ 964.000000] (2:node@c-1.me)  366712  | 533744 
-> [ 964.000000] (2:node@c-1.me)  366744  | 533744 
-> [ 964.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 964.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 964.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 964.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 964.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 964.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 964.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 964.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 964.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 964.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 964.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 964.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 964.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 964.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 964.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 964.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 964.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 964.000000] (2:node@c-1.me) Predecessor: 42
-> [ 966.000000] (4:node@c-3.me) My finger table:
-> [ 966.000000] (4:node@c-3.me) Start | Succ 
-> [ 966.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 966.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319746  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319754  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319770  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 966.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 966.000000] (7:node@c-6.me) My finger table:
-> [ 966.000000] (7:node@c-6.me) Start | Succ 
-> [ 966.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728104  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728112  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728128  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728160  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 966.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 973.000000] (9:node@c-8.me) My finger table:
-> [ 973.000000] (9:node@c-8.me) Start | Succ 
-> [ 973.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 973.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518816  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518824  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518840  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518872  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 973.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 979.000000] (10:node@c-9.me) My finger table:
-> [ 979.000000] (10:node@c-9.me) Start | Succ 
-> [ 979.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 979.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015261  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015269  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015285  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015317  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 979.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 987.000000] (6:node@c-5.me) My finger table:
-> [ 987.000000] (6:node@c-5.me) Start | Succ 
-> [ 987.000000] (6:node@c-5.me)  10874877  | 16509405 
-> [ 987.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 987.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 987.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 987.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 987.000000] (6:node@c-5.me)  10874908  | 16728096 
-> [ 987.000000] (6:node@c-5.me)  10874940  | 16509405 
-> [ 987.000000] (6:node@c-5.me)  10875004  | 16509405 
-> [ 987.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 987.000000] (6:node@c-5.me) Predecessor: 10004760
-> [1196.000000] (0:@) Messages created: 1827
-> [1196.000000] (0:@) Simulated time: 1196
\ No newline at end of file
+> [   5.999900] (2:node@c-1.me) My finger table:
+> [   5.999900] (2:node@c-1.me) Start | Succ 
+> [   5.999900] (2:node@c-1.me)  366681  |  42 
+> [   5.999900] (2:node@c-1.me)  366682  | 366680 
+> [   5.999900] (2:node@c-1.me)  366684  | 366680 
+> [   5.999900] (2:node@c-1.me)  366688  | 366680 
+> [   5.999900] (2:node@c-1.me)  366696  | 366680 
+> [   5.999900] (2:node@c-1.me)  366712  | 366680 
+> [   5.999900] (2:node@c-1.me)  366744  | 366680 
+> [   5.999900] (2:node@c-1.me)  366808  | 366680 
+> [   5.999900] (2:node@c-1.me)  366936  | 366680 
+> [   5.999900] (2:node@c-1.me)  367192  | 366680 
+> [   5.999900] (2:node@c-1.me)  367704  | 366680 
+> [   5.999900] (2:node@c-1.me)  368728  | 366680 
+> [   5.999900] (2:node@c-1.me)  370776  | 366680 
+> [   5.999900] (2:node@c-1.me)  374872  | 366680 
+> [   5.999900] (2:node@c-1.me)  383064  | 366680 
+> [   5.999900] (2:node@c-1.me)  399448  | 366680 
+> [   5.999900] (2:node@c-1.me)  432216  | 366680 
+> [   5.999900] (2:node@c-1.me)  497752  | 366680 
+> [   5.999900] (2:node@c-1.me)  628824  | 366680 
+> [   5.999900] (2:node@c-1.me)  890968  | 366680 
+> [   5.999900] (2:node@c-1.me)  1415256  | 366680 
+> [   5.999900] (2:node@c-1.me)  2463832  | 366680 
+> [   5.999900] (2:node@c-1.me)  4560984  | 366680 
+> [   5.999900] (2:node@c-1.me)  8755288  | 366680 
+> [   5.999900] (2:node@c-1.me) Predecessor: -1
+> [   7.999900] (7:node@c-6.me) My finger table:
+> [   7.999900] (7:node@c-6.me) Start | Succ 
+> [   7.999900] (7:node@c-6.me)  16728097  | 1319738 
+> [   7.999900] (7:node@c-6.me)  16728098  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728100  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728104  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728112  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728128  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728160  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728224  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728352  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728608  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16729120  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16730144  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16732192  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16736288  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16744480  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16760864  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16416  | 16728096 
+> [   7.999900] (7:node@c-6.me)  81952  | 16728096 
+> [   7.999900] (7:node@c-6.me)  213024  | 16728096 
+> [   7.999900] (7:node@c-6.me)  475168  | 16728096 
+> [   7.999900] (7:node@c-6.me)  999456  | 16728096 
+> [   7.999900] (7:node@c-6.me)  2048032  | 16728096 
+> [   7.999900] (7:node@c-6.me)  4145184  | 16728096 
+> [   7.999900] (7:node@c-6.me)  8339488  | 16728096 
+> [   7.999900] (7:node@c-6.me) Predecessor: -1
+> [   8.999900] (10:node@c-9.me) My finger table:
+> [   8.999900] (10:node@c-9.me) Start | Succ 
+> [   8.999900] (10:node@c-9.me)  2015254  | 1319738 
+> [   8.999900] (10:node@c-9.me)  2015255  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015257  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015261  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015269  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015285  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015317  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015381  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015509  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015765  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2016277  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2017301  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2019349  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2023445  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2031637  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2048021  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2080789  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2146325  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2277397  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2539541  | 2015253 
+> [   8.999900] (10:node@c-9.me)  3063829  | 2015253 
+> [   8.999900] (10:node@c-9.me)  4112405  | 2015253 
+> [   8.999900] (10:node@c-9.me)  6209557  | 2015253 
+> [   8.999900] (10:node@c-9.me)  10403861  | 2015253 
+> [   8.999900] (10:node@c-9.me) Predecessor: -1
+> [  10.999800] (4:node@c-3.me) My finger table:
+> [  10.999800] (4:node@c-3.me) Start | Succ 
+> [  10.999800] (4:node@c-3.me)  1319739  |  42 
+> [  10.999800] (4:node@c-3.me)  1319740  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319742  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319746  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319754  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319770  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319802  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319866  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319994  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1320250  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1320762  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1321786  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1323834  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1327930  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1336122  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1352506  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1385274  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1450810  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1581882  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1844026  | 1319738 
+> [  10.999800] (4:node@c-3.me)  2368314  | 1319738 
+> [  10.999800] (4:node@c-3.me)  3416890  | 1319738 
+> [  10.999800] (4:node@c-3.me)  5514042  | 1319738 
+> [  10.999800] (4:node@c-3.me)  9708346  | 1319738 
+> [  10.999800] (4:node@c-3.me) Predecessor: -1
+> [  15.999700] (9:node@c-8.me) My finger table:
+> [  15.999700] (9:node@c-8.me) Start | Succ 
+> [  15.999700] (9:node@c-8.me)  6518809  |  42 
+> [  15.999700] (9:node@c-8.me)  6518810  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518812  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518816  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518824  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518840  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518872  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518936  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6519064  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6519320  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6519832  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6520856  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6522904  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6527000  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6535192  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6551576  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6584344  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6649880  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6780952  | 6518808 
+> [  15.999700] (9:node@c-8.me)  7043096  | 6518808 
+> [  15.999700] (9:node@c-8.me)  7567384  | 6518808 
+> [  15.999700] (9:node@c-8.me)  8615960  | 6518808 
+> [  15.999700] (9:node@c-8.me)  10713112  | 6518808 
+> [  15.999700] (9:node@c-8.me)  14907416  | 6518808 
+> [  15.999700] (9:node@c-8.me) Predecessor: -1
+> [  26.999600] (3:node@c-2.me) My finger table:
+> [  26.999600] (3:node@c-2.me) Start | Succ 
+> [  26.999600] (3:node@c-2.me)  533745  | 366680 
+> [  26.999600] (3:node@c-2.me)  533746  | 533744 
+> [  26.999600] (3:node@c-2.me)  533748  | 533744 
+> [  26.999600] (3:node@c-2.me)  533752  | 533744 
+> [  26.999600] (3:node@c-2.me)  533760  | 533744 
+> [  26.999600] (3:node@c-2.me)  533776  | 533744 
+> [  26.999600] (3:node@c-2.me)  533808  | 533744 
+> [  26.999600] (3:node@c-2.me)  533872  | 533744 
+> [  26.999600] (3:node@c-2.me)  534000  | 533744 
+> [  26.999600] (3:node@c-2.me)  534256  | 533744 
+> [  26.999600] (3:node@c-2.me)  534768  | 533744 
+> [  26.999600] (3:node@c-2.me)  535792  | 533744 
+> [  26.999600] (3:node@c-2.me)  537840  | 533744 
+> [  26.999600] (3:node@c-2.me)  541936  | 533744 
+> [  26.999600] (3:node@c-2.me)  550128  | 533744 
+> [  26.999600] (3:node@c-2.me)  566512  | 533744 
+> [  26.999600] (3:node@c-2.me)  599280  | 533744 
+> [  26.999600] (3:node@c-2.me)  664816  | 533744 
+> [  26.999600] (3:node@c-2.me)  795888  | 533744 
+> [  26.999600] (3:node@c-2.me)  1058032  | 533744 
+> [  26.999600] (3:node@c-2.me)  1582320  | 533744 
+> [  26.999600] (3:node@c-2.me)  2630896  | 533744 
+> [  26.999600] (3:node@c-2.me)  4728048  | 533744 
+> [  26.999600] (3:node@c-2.me)  8922352  | 533744 
+> [  26.999600] (3:node@c-2.me) Predecessor: 10874876
+> [  31.999400] (5:node@c-4.me) My finger table:
+> [  31.999400] (5:node@c-4.me) Start | Succ 
+> [  31.999400] (5:node@c-4.me)  16509406  | 366680 
+> [  31.999400] (5:node@c-4.me)  16509407  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509409  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509413  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509421  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509437  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509469  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509533  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509661  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509917  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16510429  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16511453  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16513501  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16517597  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16525789  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16542173  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16574941  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16640477  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16771549  | 16509405 
+> [  31.999400] (5:node@c-4.me)  256477  | 16509405 
+> [  31.999400] (5:node@c-4.me)  780765  | 16509405 
+> [  31.999400] (5:node@c-4.me)  1829341  | 16509405 
+> [  31.999400] (5:node@c-4.me)  3926493  | 16509405 
+> [  31.999400] (5:node@c-4.me)  8120797  | 16509405 
+> [  31.999400] (5:node@c-4.me) Predecessor: 10004760
+> [  32.999400] (2:node@c-1.me) My finger table:
+> [  32.999400] (2:node@c-1.me) Start | Succ 
+> [  32.999400] (2:node@c-1.me)  366681  |  42 
+> [  32.999400] (2:node@c-1.me)  366682  | 366680 
+> [  32.999400] (2:node@c-1.me)  366684  | 366680 
+> [  32.999400] (2:node@c-1.me)  366688  | 366680 
+> [  32.999400] (2:node@c-1.me)  366696  | 366680 
+> [  32.999400] (2:node@c-1.me)  366712  | 366680 
+> [  32.999400] (2:node@c-1.me)  366744  | 366680 
+> [  32.999400] (2:node@c-1.me)  366808  | 366680 
+> [  32.999400] (2:node@c-1.me)  366936  | 366680 
+> [  32.999400] (2:node@c-1.me)  367192  | 366680 
+> [  32.999400] (2:node@c-1.me)  367704  | 366680 
+> [  32.999400] (2:node@c-1.me)  368728  | 366680 
+> [  32.999400] (2:node@c-1.me)  370776  | 366680 
+> [  32.999400] (2:node@c-1.me)  374872  | 366680 
+> [  32.999400] (2:node@c-1.me)  383064  | 366680 
+> [  32.999400] (2:node@c-1.me)  399448  | 366680 
+> [  32.999400] (2:node@c-1.me)  432216  | 366680 
+> [  32.999400] (2:node@c-1.me)  497752  | 366680 
+> [  32.999400] (2:node@c-1.me)  628824  | 366680 
+> [  32.999400] (2:node@c-1.me)  890968  | 366680 
+> [  32.999400] (2:node@c-1.me)  1415256  | 366680 
+> [  32.999400] (2:node@c-1.me)  2463832  | 366680 
+> [  32.999400] (2:node@c-1.me)  4560984  | 366680 
+> [  32.999400] (2:node@c-1.me)  8755288  | 366680 
+> [  32.999400] (2:node@c-1.me) Predecessor: 533744
+> [  33.999400] (2:node@c-1.me) My finger table:
+> [  33.999400] (2:node@c-1.me) Start | Succ 
+> [  33.999400] (2:node@c-1.me)  366681  |  42 
+> [  33.999400] (2:node@c-1.me)  366682  | 366680 
+> [  33.999400] (2:node@c-1.me)  366684  | 366680 
+> [  33.999400] (2:node@c-1.me)  366688  | 366680 
+> [  33.999400] (2:node@c-1.me)  366696  | 366680 
+> [  33.999400] (2:node@c-1.me)  366712  | 366680 
+> [  33.999400] (2:node@c-1.me)  366744  | 366680 
+> [  33.999400] (2:node@c-1.me)  366808  | 366680 
+> [  33.999400] (2:node@c-1.me)  366936  | 366680 
+> [  33.999400] (2:node@c-1.me)  367192  | 366680 
+> [  33.999400] (2:node@c-1.me)  367704  | 366680 
+> [  33.999400] (2:node@c-1.me)  368728  | 366680 
+> [  33.999400] (2:node@c-1.me)  370776  | 366680 
+> [  33.999400] (2:node@c-1.me)  374872  | 366680 
+> [  33.999400] (2:node@c-1.me)  383064  | 366680 
+> [  33.999400] (2:node@c-1.me)  399448  | 366680 
+> [  33.999400] (2:node@c-1.me)  432216  | 366680 
+> [  33.999400] (2:node@c-1.me)  497752  | 366680 
+> [  33.999400] (2:node@c-1.me)  628824  | 366680 
+> [  33.999400] (2:node@c-1.me)  890968  | 366680 
+> [  33.999400] (2:node@c-1.me)  1415256  | 366680 
+> [  33.999400] (2:node@c-1.me)  2463832  | 366680 
+> [  33.999400] (2:node@c-1.me)  4560984  | 366680 
+> [  33.999400] (2:node@c-1.me)  8755288  | 366680 
+> [  33.999400] (2:node@c-1.me) Predecessor: 16509405
+> [  35.999300] (4:node@c-3.me) My finger table:
+> [  35.999300] (4:node@c-3.me) Start | Succ 
+> [  35.999300] (4:node@c-3.me)  1319739  |  42 
+> [  35.999300] (4:node@c-3.me)  1319740  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319742  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319746  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319754  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319770  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319802  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319866  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319994  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1320250  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1320762  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1321786  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1323834  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1327930  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1336122  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1352506  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1385274  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1450810  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1581882  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1844026  | 1319738 
+> [  35.999300] (4:node@c-3.me)  2368314  | 1319738 
+> [  35.999300] (4:node@c-3.me)  3416890  | 1319738 
+> [  35.999300] (4:node@c-3.me)  5514042  | 1319738 
+> [  35.999300] (4:node@c-3.me)  9708346  | 1319738 
+> [  35.999300] (4:node@c-3.me) Predecessor: 16728096
+> [  49.999000] (1:node@c-0.me) My finger table:
+> [  49.999000] (1:node@c-0.me) Start | Succ 
+> [  49.999000] (1:node@c-0.me)   43  |  42 
+> [  49.999000] (1:node@c-0.me)   44  |  42 
+> [  49.999000] (1:node@c-0.me)   46  |  42 
+> [  49.999000] (1:node@c-0.me)   50  |  42 
+> [  49.999000] (1:node@c-0.me)   58  |  42 
+> [  49.999000] (1:node@c-0.me)   74  |  42 
+> [  49.999000] (1:node@c-0.me)  106  |  42 
+> [  49.999000] (1:node@c-0.me)  170  |  42 
+> [  49.999000] (1:node@c-0.me)  298  |  42 
+> [  49.999000] (1:node@c-0.me)  554  |  42 
+> [  49.999000] (1:node@c-0.me)  1066  |  42 
+> [  49.999000] (1:node@c-0.me)  2090  |  42 
+> [  49.999000] (1:node@c-0.me)  4138  |  42 
+> [  49.999000] (1:node@c-0.me)  8234  |  42 
+> [  49.999000] (1:node@c-0.me)  16426  |  42 
+> [  49.999000] (1:node@c-0.me)  32810  |  42 
+> [  49.999000] (1:node@c-0.me)  65578  |  42 
+> [  49.999000] (1:node@c-0.me)  131114  |  42 
+> [  49.999000] (1:node@c-0.me)  262186  |  42 
+> [  49.999000] (1:node@c-0.me)  524330  |  42 
+> [  49.999000] (1:node@c-0.me)  1048618  |  42 
+> [  49.999000] (1:node@c-0.me)  2097194  |  42 
+> [  49.999000] (1:node@c-0.me)  4194346  |  42 
+> [  49.999000] (1:node@c-0.me)  8388650  |  42 
+> [  49.999000] (1:node@c-0.me) Predecessor: 366680
+> [  59.998800] (1:node@c-0.me) My finger table:
+> [  59.998800] (1:node@c-0.me) Start | Succ 
+> [  59.998800] (1:node@c-0.me)   43  | 366680 
+> [  59.998800] (1:node@c-0.me)   44  |  42 
+> [  59.998800] (1:node@c-0.me)   46  |  42 
+> [  59.998800] (1:node@c-0.me)   50  |  42 
+> [  59.998800] (1:node@c-0.me)   58  |  42 
+> [  59.998800] (1:node@c-0.me)   74  |  42 
+> [  59.998800] (1:node@c-0.me)  106  |  42 
+> [  59.998800] (1:node@c-0.me)  170  |  42 
+> [  59.998800] (1:node@c-0.me)  298  |  42 
+> [  59.998800] (1:node@c-0.me)  554  |  42 
+> [  59.998800] (1:node@c-0.me)  1066  |  42 
+> [  59.998800] (1:node@c-0.me)  2090  |  42 
+> [  59.998800] (1:node@c-0.me)  4138  |  42 
+> [  59.998800] (1:node@c-0.me)  8234  |  42 
+> [  59.998800] (1:node@c-0.me)  16426  |  42 
+> [  59.998800] (1:node@c-0.me)  32810  |  42 
+> [  59.998800] (1:node@c-0.me)  65578  |  42 
+> [  59.998800] (1:node@c-0.me)  131114  |  42 
+> [  59.998800] (1:node@c-0.me)  262186  |  42 
+> [  59.998800] (1:node@c-0.me)  524330  |  42 
+> [  59.998800] (1:node@c-0.me)  1048618  |  42 
+> [  59.998800] (1:node@c-0.me)  2097194  |  42 
+> [  59.998800] (1:node@c-0.me)  4194346  |  42 
+> [  59.998800] (1:node@c-0.me)  8388650  |  42 
+> [  59.998800] (1:node@c-0.me) Predecessor: 1319738
+> [  69.998600] (1:node@c-0.me) My finger table:
+> [  69.998600] (1:node@c-0.me) Start | Succ 
+> [  69.998600] (1:node@c-0.me)   43  | 366680 
+> [  69.998600] (1:node@c-0.me)   44  |  42 
+> [  69.998600] (1:node@c-0.me)   46  |  42 
+> [  69.998600] (1:node@c-0.me)   50  |  42 
+> [  69.998600] (1:node@c-0.me)   58  |  42 
+> [  69.998600] (1:node@c-0.me)   74  |  42 
+> [  69.998600] (1:node@c-0.me)  106  |  42 
+> [  69.998600] (1:node@c-0.me)  170  |  42 
+> [  69.998600] (1:node@c-0.me)  298  |  42 
+> [  69.998600] (1:node@c-0.me)  554  |  42 
+> [  69.998600] (1:node@c-0.me)  1066  |  42 
+> [  69.998600] (1:node@c-0.me)  2090  |  42 
+> [  69.998600] (1:node@c-0.me)  4138  |  42 
+> [  69.998600] (1:node@c-0.me)  8234  |  42 
+> [  69.998600] (1:node@c-0.me)  16426  |  42 
+> [  69.998600] (1:node@c-0.me)  32810  |  42 
+> [  69.998600] (1:node@c-0.me)  65578  |  42 
+> [  69.998600] (1:node@c-0.me)  131114  |  42 
+> [  69.998600] (1:node@c-0.me)  262186  |  42 
+> [  69.998600] (1:node@c-0.me)  524330  |  42 
+> [  69.998600] (1:node@c-0.me)  1048618  |  42 
+> [  69.998600] (1:node@c-0.me)  2097194  |  42 
+> [  69.998600] (1:node@c-0.me)  4194346  |  42 
+> [  69.998600] (1:node@c-0.me)  8388650  |  42 
+> [  69.998600] (1:node@c-0.me) Predecessor: 6518808
+> [  81.998500] (2:node@c-1.me) My finger table:
+> [  81.998500] (2:node@c-1.me) Start | Succ 
+> [  81.998500] (2:node@c-1.me)  366681  | 6518808 
+> [  81.998500] (2:node@c-1.me)  366682  | 366680 
+> [  81.998500] (2:node@c-1.me)  366684  | 366680 
+> [  81.998500] (2:node@c-1.me)  366688  | 366680 
+> [  81.998500] (2:node@c-1.me)  366696  | 366680 
+> [  81.998500] (2:node@c-1.me)  366712  | 366680 
+> [  81.998500] (2:node@c-1.me)  366744  | 366680 
+> [  81.998500] (2:node@c-1.me)  366808  | 366680 
+> [  81.998500] (2:node@c-1.me)  366936  | 366680 
+> [  81.998500] (2:node@c-1.me)  367192  | 366680 
+> [  81.998500] (2:node@c-1.me)  367704  | 366680 
+> [  81.998500] (2:node@c-1.me)  368728  | 366680 
+> [  81.998500] (2:node@c-1.me)  370776  | 366680 
+> [  81.998500] (2:node@c-1.me)  374872  | 366680 
+> [  81.998500] (2:node@c-1.me)  383064  | 366680 
+> [  81.998500] (2:node@c-1.me)  399448  | 366680 
+> [  81.998500] (2:node@c-1.me)  432216  | 366680 
+> [  81.998500] (2:node@c-1.me)  497752  | 366680 
+> [  81.998500] (2:node@c-1.me)  628824  | 366680 
+> [  81.998500] (2:node@c-1.me)  890968  | 366680 
+> [  81.998500] (2:node@c-1.me)  1415256  | 366680 
+> [  81.998500] (2:node@c-1.me)  2463832  | 366680 
+> [  81.998500] (2:node@c-1.me)  4560984  | 366680 
+> [  81.998500] (2:node@c-1.me)  8755288  | 366680 
+> [  81.998500] (2:node@c-1.me) Predecessor: 42
+> [  98.998100] (7:node@c-6.me) My finger table:
+> [  98.998100] (7:node@c-6.me) Start | Succ 
+> [  98.998100] (7:node@c-6.me)  16728097  | 1319738 
+> [  98.998100] (7:node@c-6.me)  16728098  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728100  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728104  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728112  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728128  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728160  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728224  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728352  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728608  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16729120  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16730144  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16732192  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16736288  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16744480  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16760864  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16416  | 16728096 
+> [  98.998100] (7:node@c-6.me)  81952  | 16728096 
+> [  98.998100] (7:node@c-6.me)  213024  | 16728096 
+> [  98.998100] (7:node@c-6.me)  475168  | 16728096 
+> [  98.998100] (7:node@c-6.me)  999456  | 16728096 
+> [  98.998100] (7:node@c-6.me)  2048032  | 16728096 
+> [  98.998100] (7:node@c-6.me)  4145184  | 16728096 
+> [  98.998100] (7:node@c-6.me)  8339488  | 16728096 
+> [  98.998100] (7:node@c-6.me) Predecessor: 2015253
+> [ 110.998000] (9:node@c-8.me) My finger table:
+> [ 110.998000] (9:node@c-8.me) Start | Succ 
+> [ 110.998000] (9:node@c-8.me)  6518809  |  42 
+> [ 110.998000] (9:node@c-8.me)  6518810  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518812  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518816  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518824  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518840  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518872  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518936  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6519064  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6519320  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6519832  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6520856  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6522904  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6527000  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6535192  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6551576  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6584344  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6649880  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6780952  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  7043096  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  7567384  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  8615960  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  10713112  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  14907416  | 6518808 
+> [ 110.998000] (9:node@c-8.me) Predecessor: 366680
+> [ 111.998000] (9:node@c-8.me) My finger table:
+> [ 111.998000] (9:node@c-8.me) Start | Succ 
+> [ 111.998000] (9:node@c-8.me)  6518809  |  42 
+> [ 111.998000] (9:node@c-8.me)  6518810  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518812  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518816  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518824  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518840  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518872  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518936  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6519064  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6519320  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6519832  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6520856  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6522904  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6527000  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6535192  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6551576  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6584344  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6649880  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6780952  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  7043096  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  7567384  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  8615960  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  10713112  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  14907416  | 6518808 
+> [ 111.998000] (9:node@c-8.me) Predecessor: 1319738
+> [ 127.997700] (8:node@c-7.me) My finger table:
+> [ 127.997700] (8:node@c-7.me) Start | Succ 
+> [ 127.997700] (8:node@c-7.me)  10004761  | 16509405 
+> [ 127.997700] (8:node@c-7.me)  10004762  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004764  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004768  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004776  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004792  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004824  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004888  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10005016  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10005272  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10005784  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10006808  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10008856  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10012952  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10021144  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10037528  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10070296  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10135832  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10266904  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10529048  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  11053336  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  12101912  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  14199064  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  1616152  | 10004760 
+> [ 127.997700] (8:node@c-7.me) Predecessor: 533744
+> [ 137.997600] (1:node@c-0.me) My finger table:
+> [ 137.997600] (1:node@c-0.me) Start | Succ 
+> [ 137.997600] (1:node@c-0.me)   43  | 366680 
+> [ 137.997600] (1:node@c-0.me)   44  |  42 
+> [ 137.997600] (1:node@c-0.me)   46  |  42 
+> [ 137.997600] (1:node@c-0.me)   50  |  42 
+> [ 137.997600] (1:node@c-0.me)   58  |  42 
+> [ 137.997600] (1:node@c-0.me)   74  |  42 
+> [ 137.997600] (1:node@c-0.me)  106  |  42 
+> [ 137.997600] (1:node@c-0.me)  170  |  42 
+> [ 137.997600] (1:node@c-0.me)  298  |  42 
+> [ 137.997600] (1:node@c-0.me)  554  |  42 
+> [ 137.997600] (1:node@c-0.me)  1066  |  42 
+> [ 137.997600] (1:node@c-0.me)  2090  |  42 
+> [ 137.997600] (1:node@c-0.me)  4138  |  42 
+> [ 137.997600] (1:node@c-0.me)  8234  |  42 
+> [ 137.997600] (1:node@c-0.me)  16426  |  42 
+> [ 137.997600] (1:node@c-0.me)  32810  |  42 
+> [ 137.997600] (1:node@c-0.me)  65578  |  42 
+> [ 137.997600] (1:node@c-0.me)  131114  |  42 
+> [ 137.997600] (1:node@c-0.me)  262186  |  42 
+> [ 137.997600] (1:node@c-0.me)  524330  |  42 
+> [ 137.997600] (1:node@c-0.me)  1048618  |  42 
+> [ 137.997600] (1:node@c-0.me)  2097194  |  42 
+> [ 137.997600] (1:node@c-0.me)  4194346  |  42 
+> [ 137.997600] (1:node@c-0.me)  8388650  |  42 
+> [ 137.997600] (1:node@c-0.me) Predecessor: 16509405
+> [ 165.997100] (4:node@c-3.me) My finger table:
+> [ 165.997100] (4:node@c-3.me) Start | Succ 
+> [ 165.997100] (4:node@c-3.me)  1319739  | 6518808 
+> [ 165.997100] (4:node@c-3.me)  1319740  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319742  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319746  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319754  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319770  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319802  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319866  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319994  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1320250  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1320762  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1321786  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1323834  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1327930  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1336122  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1352506  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1385274  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1450810  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1581882  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1844026  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  2368314  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  3416890  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  5514042  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  9708346  | 1319738 
+> [ 165.997100] (4:node@c-3.me) Predecessor: 366680
+> [ 209.996500] (8:node@c-7.me) My finger table:
+> [ 209.996500] (8:node@c-7.me) Start | Succ 
+> [ 209.996500] (8:node@c-7.me)  10004761  | 16509405 
+> [ 209.996500] (8:node@c-7.me)  10004762  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004764  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004768  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004776  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004792  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004824  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004888  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10005016  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10005272  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10005784  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10006808  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10008856  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10012952  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10021144  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10037528  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10070296  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10135832  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10266904  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10529048  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  11053336  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  12101912  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  14199064  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  1616152  | 10004760 
+> [ 209.996500] (8:node@c-7.me) Predecessor: 6518808
+> [ 247.995800] (6:node@c-5.me) My finger table:
+> [ 247.995800] (6:node@c-5.me) Start | Succ 
+> [ 247.995800] (6:node@c-5.me)  10874877  | 533744 
+> [ 247.995800] (6:node@c-5.me)  10874878  | 533744 
+> [ 247.995800] (6:node@c-5.me)  10874880  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10874884  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10874892  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10874908  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10874940  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10875004  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10875132  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10875388  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10875900  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10876924  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10878972  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10883068  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10891260  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10907644  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10940412  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  11005948  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  11137020  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  11399164  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  11923452  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  12972028  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  15069180  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  2486268  | 10874876 
+> [ 247.995800] (6:node@c-5.me) Predecessor: -1
+> [ 249.995700] (7:node@c-6.me) My finger table:
+> [ 249.995700] (7:node@c-6.me) Start | Succ 
+> [ 249.995700] (7:node@c-6.me)  16728097  |  42 
+> [ 249.995700] (7:node@c-6.me)  16728098  |  42 
+> [ 249.995700] (7:node@c-6.me)  16728100  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728104  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728112  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728128  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728160  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728224  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728352  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728608  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16729120  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16730144  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16732192  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16736288  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16744480  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16760864  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16416  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  81952  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  213024  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  475168  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  999456  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  2048032  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  4145184  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  8339488  | 16728096 
+> [ 249.995700] (7:node@c-6.me) Predecessor: 2015253
+> [ 251.995700] (8:node@c-7.me) My finger table:
+> [ 251.995700] (8:node@c-7.me) Start | Succ 
+> [ 251.995700] (8:node@c-7.me)  10004761  | 16509405 
+> [ 251.995700] (8:node@c-7.me)  10004762  | 16509405 
+> [ 251.995700] (8:node@c-7.me)  10004764  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004768  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004776  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004792  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004824  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004888  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10005016  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10005272  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10005784  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10006808  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10008856  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10012952  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10021144  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10037528  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10070296  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10135832  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10266904  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10529048  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  11053336  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  12101912  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  14199064  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  1616152  | 10004760 
+> [ 251.995700] (8:node@c-7.me) Predecessor: 6518808
+> [ 252.995700] (2:node@c-1.me) My finger table:
+> [ 252.995700] (2:node@c-1.me) Start | Succ 
+> [ 252.995700] (2:node@c-1.me)  366681  | 1319738 
+> [ 252.995700] (2:node@c-1.me)  366682  | 1319738 
+> [ 252.995700] (2:node@c-1.me)  366684  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366688  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366696  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366712  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366744  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366808  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366936  | 366680 
+> [ 252.995700] (2:node@c-1.me)  367192  | 366680 
+> [ 252.995700] (2:node@c-1.me)  367704  | 366680 
+> [ 252.995700] (2:node@c-1.me)  368728  | 366680 
+> [ 252.995700] (2:node@c-1.me)  370776  | 366680 
+> [ 252.995700] (2:node@c-1.me)  374872  | 366680 
+> [ 252.995700] (2:node@c-1.me)  383064  | 366680 
+> [ 252.995700] (2:node@c-1.me)  399448  | 366680 
+> [ 252.995700] (2:node@c-1.me)  432216  | 366680 
+> [ 252.995700] (2:node@c-1.me)  497752  | 366680 
+> [ 252.995700] (2:node@c-1.me)  628824  | 366680 
+> [ 252.995700] (2:node@c-1.me)  890968  | 366680 
+> [ 252.995700] (2:node@c-1.me)  1415256  | 366680 
+> [ 252.995700] (2:node@c-1.me)  2463832  | 366680 
+> [ 252.995700] (2:node@c-1.me)  4560984  | 366680 
+> [ 252.995700] (2:node@c-1.me)  8755288  | 366680 
+> [ 252.995700] (2:node@c-1.me) Predecessor: 42
+> [ 254.995700] (1:node@c-0.me) My finger table:
+> [ 254.995700] (1:node@c-0.me) Start | Succ 
+> [ 254.995700] (1:node@c-0.me)   43  | 366680 
+> [ 254.995700] (1:node@c-0.me)   44  |  42 
+> [ 254.995700] (1:node@c-0.me)   46  |  42 
+> [ 254.995700] (1:node@c-0.me)   50  |  42 
+> [ 254.995700] (1:node@c-0.me)   58  |  42 
+> [ 254.995700] (1:node@c-0.me)   74  |  42 
+> [ 254.995700] (1:node@c-0.me)  106  |  42 
+> [ 254.995700] (1:node@c-0.me)  170  |  42 
+> [ 254.995700] (1:node@c-0.me)  298  |  42 
+> [ 254.995700] (1:node@c-0.me)  554  |  42 
+> [ 254.995700] (1:node@c-0.me)  1066  |  42 
+> [ 254.995700] (1:node@c-0.me)  2090  |  42 
+> [ 254.995700] (1:node@c-0.me)  4138  |  42 
+> [ 254.995700] (1:node@c-0.me)  8234  |  42 
+> [ 254.995700] (1:node@c-0.me)  16426  |  42 
+> [ 254.995700] (1:node@c-0.me)  32810  |  42 
+> [ 254.995700] (1:node@c-0.me)  65578  |  42 
+> [ 254.995700] (1:node@c-0.me)  131114  |  42 
+> [ 254.995700] (1:node@c-0.me)  262186  |  42 
+> [ 254.995700] (1:node@c-0.me)  524330  |  42 
+> [ 254.995700] (1:node@c-0.me)  1048618  |  42 
+> [ 254.995700] (1:node@c-0.me)  2097194  |  42 
+> [ 254.995700] (1:node@c-0.me)  4194346  |  42 
+> [ 254.995700] (1:node@c-0.me)  8388650  |  42 
+> [ 254.995700] (1:node@c-0.me) Predecessor: 16728096
+> [ 254.995700] (4:node@c-3.me) My finger table:
+> [ 254.995700] (4:node@c-3.me) Start | Succ 
+> [ 254.995700] (4:node@c-3.me)  1319739  | 6518808 
+> [ 254.995700] (4:node@c-3.me)  1319740  | 6518808 
+> [ 254.995700] (4:node@c-3.me)  1319742  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319746  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319754  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319770  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319802  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319866  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319994  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1320250  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1320762  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1321786  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1323834  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1327930  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1336122  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1352506  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1385274  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1450810  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1581882  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1844026  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  2368314  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  3416890  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  5514042  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  9708346  | 1319738 
+> [ 254.995700] (4:node@c-3.me) Predecessor: 366680
+> [ 255.995700] (1:node@c-0.me) My finger table:
+> [ 255.995700] (1:node@c-0.me) Start | Succ 
+> [ 255.995700] (1:node@c-0.me)   43  | 366680 
+> [ 255.995700] (1:node@c-0.me)   44  | 366680 
+> [ 255.995700] (1:node@c-0.me)   46  |  42 
+> [ 255.995700] (1:node@c-0.me)   50  |  42 
+> [ 255.995700] (1:node@c-0.me)   58  |  42 
+> [ 255.995700] (1:node@c-0.me)   74  |  42 
+> [ 255.995700] (1:node@c-0.me)  106  |  42 
+> [ 255.995700] (1:node@c-0.me)  170  |  42 
+> [ 255.995700] (1:node@c-0.me)  298  |  42 
+> [ 255.995700] (1:node@c-0.me)  554  |  42 
+> [ 255.995700] (1:node@c-0.me)  1066  |  42 
+> [ 255.995700] (1:node@c-0.me)  2090  |  42 
+> [ 255.995700] (1:node@c-0.me)  4138  |  42 
+> [ 255.995700] (1:node@c-0.me)  8234  |  42 
+> [ 255.995700] (1:node@c-0.me)  16426  |  42 
+> [ 255.995700] (1:node@c-0.me)  32810  |  42 
+> [ 255.995700] (1:node@c-0.me)  65578  |  42 
+> [ 255.995700] (1:node@c-0.me)  131114  |  42 
+> [ 255.995700] (1:node@c-0.me)  262186  |  42 
+> [ 255.995700] (1:node@c-0.me)  524330  |  42 
+> [ 255.995700] (1:node@c-0.me)  1048618  |  42 
+> [ 255.995700] (1:node@c-0.me)  2097194  |  42 
+> [ 255.995700] (1:node@c-0.me)  4194346  |  42 
+> [ 255.995700] (1:node@c-0.me)  8388650  |  42 
+> [ 255.995700] (1:node@c-0.me) Predecessor: 16728096
+> [ 255.995700] (5:node@c-4.me) My finger table:
+> [ 255.995700] (5:node@c-4.me) Start | Succ 
+> [ 255.995700] (5:node@c-4.me)  16509406  |  42 
+> [ 255.995700] (5:node@c-4.me)  16509407  |  42 
+> [ 255.995700] (5:node@c-4.me)  16509409  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509413  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509421  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509437  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509469  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509533  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509661  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509917  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16510429  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16511453  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16513501  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16517597  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16525789  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16542173  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16574941  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16640477  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16771549  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  256477  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  780765  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  1829341  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  3926493  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  8120797  | 16509405 
+> [ 255.995700] (5:node@c-4.me) Predecessor: 10004760
+> [ 257.995700] (10:node@c-9.me) My finger table:
+> [ 257.995700] (10:node@c-9.me) Start | Succ 
+> [ 257.995700] (10:node@c-9.me)  2015254  | 16728096 
+> [ 257.995700] (10:node@c-9.me)  2015255  | 16728096 
+> [ 257.995700] (10:node@c-9.me)  2015257  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015261  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015269  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015285  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015317  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015381  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015509  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015765  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2016277  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2017301  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2019349  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2023445  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2031637  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2048021  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2080789  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2146325  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2277397  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2539541  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  3063829  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  4112405  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  6209557  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  10403861  | 2015253 
+> [ 257.995700] (10:node@c-9.me) Predecessor: -1
+> [ 263.995700] (3:node@c-2.me) My finger table:
+> [ 263.995700] (3:node@c-2.me) Start | Succ 
+> [ 263.995700] (3:node@c-2.me)  533745  | 1319738 
+> [ 263.995700] (3:node@c-2.me)  533746  | 1319738 
+> [ 263.995700] (3:node@c-2.me)  533748  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533752  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533760  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533776  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533808  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533872  | 533744 
+> [ 263.995700] (3:node@c-2.me)  534000  | 533744 
+> [ 263.995700] (3:node@c-2.me)  534256  | 533744 
+> [ 263.995700] (3:node@c-2.me)  534768  | 533744 
+> [ 263.995700] (3:node@c-2.me)  535792  | 533744 
+> [ 263.995700] (3:node@c-2.me)  537840  | 533744 
+> [ 263.995700] (3:node@c-2.me)  541936  | 533744 
+> [ 263.995700] (3:node@c-2.me)  550128  | 533744 
+> [ 263.995700] (3:node@c-2.me)  566512  | 533744 
+> [ 263.995700] (3:node@c-2.me)  599280  | 533744 
+> [ 263.995700] (3:node@c-2.me)  664816  | 533744 
+> [ 263.995700] (3:node@c-2.me)  795888  | 533744 
+> [ 263.995700] (3:node@c-2.me)  1058032  | 533744 
+> [ 263.995700] (3:node@c-2.me)  1582320  | 533744 
+> [ 263.995700] (3:node@c-2.me)  2630896  | 533744 
+> [ 263.995700] (3:node@c-2.me)  4728048  | 533744 
+> [ 263.995700] (3:node@c-2.me)  8922352  | 533744 
+> [ 263.995700] (3:node@c-2.me) Predecessor: 10874876
+> [ 264.995500] (9:node@c-8.me) My finger table:
+> [ 264.995500] (9:node@c-8.me) Start | Succ 
+> [ 264.995500] (9:node@c-8.me)  6518809  | 10004760 
+> [ 264.995500] (9:node@c-8.me)  6518810  | 10004760 
+> [ 264.995500] (9:node@c-8.me)  6518812  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518816  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518824  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518840  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518872  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518936  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6519064  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6519320  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6519832  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6520856  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6522904  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6527000  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6535192  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6551576  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6584344  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6649880  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6780952  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  7043096  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  7567384  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  8615960  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  10713112  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  14907416  | 6518808 
+> [ 264.995500] (9:node@c-8.me) Predecessor: 1319738
+> [ 310.994900] (4:node@c-3.me) My finger table:
+> [ 310.994900] (4:node@c-3.me) Start | Succ 
+> [ 310.994900] (4:node@c-3.me)  1319739  | 6518808 
+> [ 310.994900] (4:node@c-3.me)  1319740  | 6518808 
+> [ 310.994900] (4:node@c-3.me)  1319742  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319746  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319754  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319770  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319802  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319866  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319994  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1320250  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1320762  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1321786  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1323834  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1327930  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1336122  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1352506  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1385274  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1450810  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1581882  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1844026  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  2368314  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  3416890  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  5514042  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  9708346  | 1319738 
+> [ 310.994900] (4:node@c-3.me) Predecessor: 533744
+> [ 335.994500] (7:node@c-6.me) My finger table:
+> [ 335.994500] (7:node@c-6.me) Start | Succ 
+> [ 335.994500] (7:node@c-6.me)  16728097  |  42 
+> [ 335.994500] (7:node@c-6.me)  16728098  |  42 
+> [ 335.994500] (7:node@c-6.me)  16728100  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728104  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728112  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728128  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728160  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728224  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728352  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728608  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16729120  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16730144  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16732192  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16736288  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16744480  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16760864  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16416  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  81952  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  213024  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  475168  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  999456  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  2048032  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  4145184  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  8339488  | 16728096 
+> [ 335.994500] (7:node@c-6.me) Predecessor: 16509405
+> [ 366.994000] (3:node@c-2.me) My finger table:
+> [ 366.994000] (3:node@c-2.me) Start | Succ 
+> [ 366.994000] (3:node@c-2.me)  533745  | 1319738 
+> [ 366.994000] (3:node@c-2.me)  533746  | 1319738 
+> [ 366.994000] (3:node@c-2.me)  533748  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533752  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533760  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533776  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533808  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533872  | 533744 
+> [ 366.994000] (3:node@c-2.me)  534000  | 533744 
+> [ 366.994000] (3:node@c-2.me)  534256  | 533744 
+> [ 366.994000] (3:node@c-2.me)  534768  | 533744 
+> [ 366.994000] (3:node@c-2.me)  535792  | 533744 
+> [ 366.994000] (3:node@c-2.me)  537840  | 533744 
+> [ 366.994000] (3:node@c-2.me)  541936  | 533744 
+> [ 366.994000] (3:node@c-2.me)  550128  | 533744 
+> [ 366.994000] (3:node@c-2.me)  566512  | 533744 
+> [ 366.994000] (3:node@c-2.me)  599280  | 533744 
+> [ 366.994000] (3:node@c-2.me)  664816  | 533744 
+> [ 366.994000] (3:node@c-2.me)  795888  | 533744 
+> [ 366.994000] (3:node@c-2.me)  1058032  | 533744 
+> [ 366.994000] (3:node@c-2.me)  1582320  | 533744 
+> [ 366.994000] (3:node@c-2.me)  2630896  | 533744 
+> [ 366.994000] (3:node@c-2.me)  4728048  | 533744 
+> [ 366.994000] (3:node@c-2.me)  8922352  | 533744 
+> [ 366.994000] (3:node@c-2.me) Predecessor: 366680
+> [ 370.993500] (6:node@c-5.me) My finger table:
+> [ 370.993500] (6:node@c-5.me) Start | Succ 
+> [ 370.993500] (6:node@c-5.me)  10874877  | 533744 
+> [ 370.993500] (6:node@c-5.me)  10874878  | 533744 
+> [ 370.993500] (6:node@c-5.me)  10874880  | 533744 
+> [ 370.993500] (6:node@c-5.me)  10874884  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10874892  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10874908  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10874940  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10875004  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10875132  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10875388  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10875900  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10876924  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10878972  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10883068  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10891260  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10907644  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10940412  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  11005948  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  11137020  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  11399164  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  11923452  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  12972028  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  15069180  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  2486268  | 10874876 
+> [ 370.993500] (6:node@c-5.me) Predecessor: -1
+> [ 375.993800] (2:node@c-1.me) My finger table:
+> [ 375.993800] (2:node@c-1.me) Start | Succ 
+> [ 375.993800] (2:node@c-1.me)  366681  | 533744 
+> [ 375.993800] (2:node@c-1.me)  366682  | 1319738 
+> [ 375.993800] (2:node@c-1.me)  366684  | 533744 
+> [ 375.993800] (2:node@c-1.me)  366688  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366696  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366712  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366744  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366808  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366936  | 366680 
+> [ 375.993800] (2:node@c-1.me)  367192  | 366680 
+> [ 375.993800] (2:node@c-1.me)  367704  | 366680 
+> [ 375.993800] (2:node@c-1.me)  368728  | 366680 
+> [ 375.993800] (2:node@c-1.me)  370776  | 366680 
+> [ 375.993800] (2:node@c-1.me)  374872  | 366680 
+> [ 375.993800] (2:node@c-1.me)  383064  | 366680 
+> [ 375.993800] (2:node@c-1.me)  399448  | 366680 
+> [ 375.993800] (2:node@c-1.me)  432216  | 366680 
+> [ 375.993800] (2:node@c-1.me)  497752  | 366680 
+> [ 375.993800] (2:node@c-1.me)  628824  | 366680 
+> [ 375.993800] (2:node@c-1.me)  890968  | 366680 
+> [ 375.993800] (2:node@c-1.me)  1415256  | 366680 
+> [ 375.993800] (2:node@c-1.me)  2463832  | 366680 
+> [ 375.993800] (2:node@c-1.me)  4560984  | 366680 
+> [ 375.993800] (2:node@c-1.me)  8755288  | 366680 
+> [ 375.993800] (2:node@c-1.me) Predecessor: 42
+> [ 376.993800] (1:node@c-0.me) My finger table:
+> [ 376.993800] (1:node@c-0.me) Start | Succ 
+> [ 376.993800] (1:node@c-0.me)   43  | 366680 
+> [ 376.993800] (1:node@c-0.me)   44  | 366680 
+> [ 376.993800] (1:node@c-0.me)   46  | 366680 
+> [ 376.993800] (1:node@c-0.me)   50  |  42 
+> [ 376.993800] (1:node@c-0.me)   58  |  42 
+> [ 376.993800] (1:node@c-0.me)   74  |  42 
+> [ 376.993800] (1:node@c-0.me)  106  |  42 
+> [ 376.993800] (1:node@c-0.me)  170  |  42 
+> [ 376.993800] (1:node@c-0.me)  298  |  42 
+> [ 376.993800] (1:node@c-0.me)  554  |  42 
+> [ 376.993800] (1:node@c-0.me)  1066  |  42 
+> [ 376.993800] (1:node@c-0.me)  2090  |  42 
+> [ 376.993800] (1:node@c-0.me)  4138  |  42 
+> [ 376.993800] (1:node@c-0.me)  8234  |  42 
+> [ 376.993800] (1:node@c-0.me)  16426  |  42 
+> [ 376.993800] (1:node@c-0.me)  32810  |  42 
+> [ 376.993800] (1:node@c-0.me)  65578  |  42 
+> [ 376.993800] (1:node@c-0.me)  131114  |  42 
+> [ 376.993800] (1:node@c-0.me)  262186  |  42 
+> [ 376.993800] (1:node@c-0.me)  524330  |  42 
+> [ 376.993800] (1:node@c-0.me)  1048618  |  42 
+> [ 376.993800] (1:node@c-0.me)  2097194  |  42 
+> [ 376.993800] (1:node@c-0.me)  4194346  |  42 
+> [ 376.993800] (1:node@c-0.me)  8388650  |  42 
+> [ 376.993800] (1:node@c-0.me) Predecessor: 16728096
+> [ 376.993800] (4:node@c-3.me) My finger table:
+> [ 376.993800] (4:node@c-3.me) Start | Succ 
+> [ 376.993800] (4:node@c-3.me)  1319739  | 6518808 
+> [ 376.993800] (4:node@c-3.me)  1319740  | 6518808 
+> [ 376.993800] (4:node@c-3.me)  1319742  | 6518808 
+> [ 376.993800] (4:node@c-3.me)  1319746  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319754  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319770  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319802  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319866  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319994  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1320250  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1320762  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1321786  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1323834  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1327930  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1336122  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1352506  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1385274  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1450810  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1581882  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1844026  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  2368314  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  3416890  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  5514042  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  9708346  | 1319738 
+> [ 376.993800] (4:node@c-3.me) Predecessor: 533744
+> [ 378.993800] (10:node@c-9.me) My finger table:
+> [ 378.993800] (10:node@c-9.me) Start | Succ 
+> [ 378.993800] (10:node@c-9.me)  2015254  | 10004760 
+> [ 378.993800] (10:node@c-9.me)  2015255  | 16728096 
+> [ 378.993800] (10:node@c-9.me)  2015257  | 10004760 
+> [ 378.993800] (10:node@c-9.me)  2015261  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015269  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015285  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015317  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015381  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015509  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015765  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2016277  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2017301  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2019349  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2023445  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2031637  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2048021  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2080789  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2146325  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2277397  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2539541  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  3063829  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  4112405  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  6209557  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  10403861  | 2015253 
+> [ 378.993800] (10:node@c-9.me) Predecessor: -1
+> [ 378.993800] (5:node@c-4.me) My finger table:
+> [ 378.993800] (5:node@c-4.me) Start | Succ 
+> [ 378.993800] (5:node@c-4.me)  16509406  | 16728096 
+> [ 378.993800] (5:node@c-4.me)  16509407  |  42 
+> [ 378.993800] (5:node@c-4.me)  16509409  | 16728096 
+> [ 378.993800] (5:node@c-4.me)  16509413  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509421  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509437  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509469  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509533  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509661  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509917  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16510429  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16511453  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16513501  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16517597  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16525789  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16542173  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16574941  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16640477  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16771549  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  256477  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  780765  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  1829341  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  3926493  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  8120797  | 16509405 
+> [ 378.993800] (5:node@c-4.me) Predecessor: 10004760
+> [ 379.993800] (8:node@c-7.me) My finger table:
+> [ 379.993800] (8:node@c-7.me) Start | Succ 
+> [ 379.993800] (8:node@c-7.me)  10004761  | 16509405 
+> [ 379.993800] (8:node@c-7.me)  10004762  | 16509405 
+> [ 379.993800] (8:node@c-7.me)  10004764  | 16509405 
+> [ 379.993800] (8:node@c-7.me)  10004768  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10004776  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10004792  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10004824  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10004888  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10005016  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10005272  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10005784  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10006808  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10008856  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10012952  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10021144  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10037528  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10070296  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10135832  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10266904  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10529048  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  11053336  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  12101912  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  14199064  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  1616152  | 10004760 
+> [ 379.993800] (8:node@c-7.me) Predecessor: 6518808
+> [ 385.993700] (3:node@c-2.me) My finger table:
+> [ 385.993700] (3:node@c-2.me) Start | Succ 
+> [ 385.993700] (3:node@c-2.me)  533745  | 1319738 
+> [ 385.993700] (3:node@c-2.me)  533746  | 1319738 
+> [ 385.993700] (3:node@c-2.me)  533748  | 1319738 
+> [ 385.993700] (3:node@c-2.me)  533752  | 533744 
+> [ 385.993700] (3:node@c-2.me)  533760  | 533744 
+> [ 385.993700] (3:node@c-2.me)  533776  | 533744 
+> [ 385.993700] (3:node@c-2.me)  533808  | 533744 
+> [ 385.993700] (3:node@c-2.me)  533872  | 533744 
+> [ 385.993700] (3:node@c-2.me)  534000  | 533744 
+> [ 385.993700] (3:node@c-2.me)  534256  | 533744 
+> [ 385.993700] (3:node@c-2.me)  534768  | 533744 
+> [ 385.993700] (3:node@c-2.me)  535792  | 533744 
+> [ 385.993700] (3:node@c-2.me)  537840  | 533744 
+> [ 385.993700] (3:node@c-2.me)  541936  | 533744 
+> [ 385.993700] (3:node@c-2.me)  550128  | 533744 
+> [ 385.993700] (3:node@c-2.me)  566512  | 533744 
+> [ 385.993700] (3:node@c-2.me)  599280  | 533744 
+> [ 385.993700] (3:node@c-2.me)  664816  | 533744 
+> [ 385.993700] (3:node@c-2.me)  795888  | 533744 
+> [ 385.993700] (3:node@c-2.me)  1058032  | 533744 
+> [ 385.993700] (3:node@c-2.me)  1582320  | 533744 
+> [ 385.993700] (3:node@c-2.me)  2630896  | 533744 
+> [ 385.993700] (3:node@c-2.me)  4728048  | 533744 
+> [ 385.993700] (3:node@c-2.me)  8922352  | 533744 
+> [ 385.993700] (3:node@c-2.me) Predecessor: 366680
+> [ 387.993700] (7:node@c-6.me) My finger table:
+> [ 387.993700] (7:node@c-6.me) Start | Succ 
+> [ 387.993700] (7:node@c-6.me)  16728097  |  42 
+> [ 387.993700] (7:node@c-6.me)  16728098  |  42 
+> [ 387.993700] (7:node@c-6.me)  16728100  |  42 
+> [ 387.993700] (7:node@c-6.me)  16728104  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728112  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728128  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728160  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728224  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728352  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728608  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16729120  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16730144  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16732192  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16736288  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16744480  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16760864  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16416  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  81952  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  213024  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  475168  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  999456  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  2048032  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  4145184  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  8339488  | 16728096 
+> [ 387.993700] (7:node@c-6.me) Predecessor: 16509405
+> [ 389.993600] (9:node@c-8.me) My finger table:
+> [ 389.993600] (9:node@c-8.me) Start | Succ 
+> [ 389.993600] (9:node@c-8.me)  6518809  | 10004760 
+> [ 389.993600] (9:node@c-8.me)  6518810  | 10004760 
+> [ 389.993600] (9:node@c-8.me)  6518812  | 10004760 
+> [ 389.993600] (9:node@c-8.me)  6518816  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6518824  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6518840  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6518872  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6518936  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6519064  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6519320  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6519832  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6520856  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6522904  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6527000  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6535192  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6551576  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6584344  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6649880  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6780952  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  7043096  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  7567384  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  8615960  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  10713112  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  14907416  | 6518808 
+> [ 389.993600] (9:node@c-8.me) Predecessor: 1319738
+> [ 435.993000] (9:node@c-8.me) My finger table:
+> [ 435.993000] (9:node@c-8.me) Start | Succ 
+> [ 435.993000] (9:node@c-8.me)  6518809  | 10004760 
+> [ 435.993000] (9:node@c-8.me)  6518810  | 10004760 
+> [ 435.993000] (9:node@c-8.me)  6518812  | 10004760 
+> [ 435.993000] (9:node@c-8.me)  6518816  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6518824  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6518840  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6518872  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6518936  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6519064  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6519320  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6519832  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6520856  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6522904  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6527000  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6535192  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6551576  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6584344  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6649880  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6780952  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  7043096  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  7567384  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  8615960  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  10713112  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  14907416  | 6518808 
+> [ 435.993000] (9:node@c-8.me) Predecessor: 2015253
+> [ 492.992000] (6:node@c-5.me) My finger table:
+> [ 492.992000] (6:node@c-5.me) Start | Succ 
+> [ 492.992000] (6:node@c-5.me)  10874877  | 16509405 
+> [ 492.992000] (6:node@c-5.me)  10874878  | 533744 
+> [ 492.992000] (6:node@c-5.me)  10874880  | 533744 
+> [ 492.992000] (6:node@c-5.me)  10874884  | 16509405 
+> [ 492.992000] (6:node@c-5.me)  10874892  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10874908  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10874940  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10875004  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10875132  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10875388  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10875900  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10876924  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10878972  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10883068  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10891260  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10907644  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10940412  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  11005948  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  11137020  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  11399164  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  11923452  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  12972028  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  15069180  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  2486268  | 10874876 
+> [ 492.992000] (6:node@c-5.me) Predecessor: -1
+> [ 500.991800] (1:node@c-0.me) My finger table:
+> [ 500.991800] (1:node@c-0.me) Start | Succ 
+> [ 500.991800] (1:node@c-0.me)   43  | 366680 
+> [ 500.991800] (1:node@c-0.me)   44  | 366680 
+> [ 500.991800] (1:node@c-0.me)   46  | 366680 
+> [ 500.991800] (1:node@c-0.me)   50  | 366680 
+> [ 500.991800] (1:node@c-0.me)   58  |  42 
+> [ 500.991800] (1:node@c-0.me)   74  |  42 
+> [ 500.991800] (1:node@c-0.me)  106  |  42 
+> [ 500.991800] (1:node@c-0.me)  170  |  42 
+> [ 500.991800] (1:node@c-0.me)  298  |  42 
+> [ 500.991800] (1:node@c-0.me)  554  |  42 
+> [ 500.991800] (1:node@c-0.me)  1066  |  42 
+> [ 500.991800] (1:node@c-0.me)  2090  |  42 
+> [ 500.991800] (1:node@c-0.me)  4138  |  42 
+> [ 500.991800] (1:node@c-0.me)  8234  |  42 
+> [ 500.991800] (1:node@c-0.me)  16426  |  42 
+> [ 500.991800] (1:node@c-0.me)  32810  |  42 
+> [ 500.991800] (1:node@c-0.me)  65578  |  42 
+> [ 500.991800] (1:node@c-0.me)  131114  |  42 
+> [ 500.991800] (1:node@c-0.me)  262186  |  42 
+> [ 500.991800] (1:node@c-0.me)  524330  |  42 
+> [ 500.991800] (1:node@c-0.me)  1048618  |  42 
+> [ 500.991800] (1:node@c-0.me)  2097194  |  42 
+> [ 500.991800] (1:node@c-0.me)  4194346  |  42 
+> [ 500.991800] (1:node@c-0.me)  8388650  |  42 
+> [ 500.991800] (1:node@c-0.me) Predecessor: 16728096
+> [ 504.991900] (5:node@c-4.me) My finger table:
+> [ 504.991900] (5:node@c-4.me) Start | Succ 
+> [ 504.991900] (5:node@c-4.me)  16509406  | 16728096 
+> [ 504.991900] (5:node@c-4.me)  16509407  |  42 
+> [ 504.991900] (5:node@c-4.me)  16509409  | 16728096 
+> [ 504.991900] (5:node@c-4.me)  16509413  | 16728096 
+> [ 504.991900] (5:node@c-4.me)  16509421  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509437  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509469  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509533  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509661  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509917  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16510429  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16511453  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16513501  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16517597  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16525789  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16542173  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16574941  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16640477  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16771549  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  256477  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  780765  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  1829341  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  3926493  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  8120797  | 16509405 
+> [ 504.991900] (5:node@c-4.me) Predecessor: 10004760
+> [ 508.991700] (4:node@c-3.me) My finger table:
+> [ 508.991700] (4:node@c-3.me) Start | Succ 
+> [ 508.991700] (4:node@c-3.me)  1319739  | 2015253 
+> [ 508.991700] (4:node@c-3.me)  1319740  | 6518808 
+> [ 508.991700] (4:node@c-3.me)  1319742  | 6518808 
+> [ 508.991700] (4:node@c-3.me)  1319746  | 2015253 
+> [ 508.991700] (4:node@c-3.me)  1319754  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1319770  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1319802  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1319866  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1319994  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1320250  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1320762  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1321786  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1323834  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1327930  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1336122  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1352506  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1385274  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1450810  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1581882  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1844026  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  2368314  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  3416890  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  5514042  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  9708346  | 1319738 
+> [ 508.991700] (4:node@c-3.me) Predecessor: 533744
+> [ 509.991700] (10:node@c-9.me) My finger table:
+> [ 509.991700] (10:node@c-9.me) Start | Succ 
+> [ 509.991700] (10:node@c-9.me)  2015254  | 6518808 
+> [ 509.991700] (10:node@c-9.me)  2015255  | 16728096 
+> [ 509.991700] (10:node@c-9.me)  2015257  | 10004760 
+> [ 509.991700] (10:node@c-9.me)  2015261  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015269  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015285  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015317  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015381  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015509  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015765  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2016277  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2017301  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2019349  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2023445  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2031637  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2048021  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2080789  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2146325  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2277397  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2539541  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  3063829  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  4112405  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  6209557  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  10403861  | 2015253 
+> [ 509.991700] (10:node@c-9.me) Predecessor: 1319738
+> [ 513.991600] (2:node@c-1.me) My finger table:
+> [ 513.991600] (2:node@c-1.me) Start | Succ 
+> [ 513.991600] (2:node@c-1.me)  366681  | 533744 
+> [ 513.991600] (2:node@c-1.me)  366682  | 1319738 
+> [ 513.991600] (2:node@c-1.me)  366684  | 533744 
+> [ 513.991600] (2:node@c-1.me)  366688  | 533744 
+> [ 513.991600] (2:node@c-1.me)  366696  | 366680 
+> [ 513.991600] (2:node@c-1.me)  366712  | 366680 
+> [ 513.991600] (2:node@c-1.me)  366744  | 366680 
+> [ 513.991600] (2:node@c-1.me)  366808  | 366680 
+> [ 513.991600] (2:node@c-1.me)  366936  | 366680 
+> [ 513.991600] (2:node@c-1.me)  367192  | 366680 
+> [ 513.991600] (2:node@c-1.me)  367704  | 366680 
+> [ 513.991600] (2:node@c-1.me)  368728  | 366680 
+> [ 513.991600] (2:node@c-1.me)  370776  | 366680 
+> [ 513.991600] (2:node@c-1.me)  374872  | 366680 
+> [ 513.991600] (2:node@c-1.me)  383064  | 366680 
+> [ 513.991600] (2:node@c-1.me)  399448  | 366680 
+> [ 513.991600] (2:node@c-1.me)  432216  | 366680 
+> [ 513.991600] (2:node@c-1.me)  497752  | 366680 
+> [ 513.991600] (2:node@c-1.me)  628824  | 366680 
+> [ 513.991600] (2:node@c-1.me)  890968  | 366680 
+> [ 513.991600] (2:node@c-1.me)  1415256  | 366680 
+> [ 513.991600] (2:node@c-1.me)  2463832  | 366680 
+> [ 513.991600] (2:node@c-1.me)  4560984  | 366680 
+> [ 513.991600] (2:node@c-1.me)  8755288  | 366680 
+> [ 513.991600] (2:node@c-1.me) Predecessor: 42
+> [ 516.991600] (10:node@c-9.me) My finger table:
+> [ 516.991600] (10:node@c-9.me) Start | Succ 
+> [ 516.991600] (10:node@c-9.me)  2015254  | 6518808 
+> [ 516.991600] (10:node@c-9.me)  2015255  | 16728096 
+> [ 516.991600] (10:node@c-9.me)  2015257  | 10004760 
+> [ 516.991600] (10:node@c-9.me)  2015261  | 6518808 
+> [ 516.991600] (10:node@c-9.me)  2015269  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015285  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015317  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015381  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015509  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015765  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2016277  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2017301  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2019349  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2023445  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2031637  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2048021  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2080789  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2146325  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2277397  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2539541  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  3063829  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  4112405  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  6209557  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  10403861  | 2015253 
+> [ 516.991600] (10:node@c-9.me) Predecessor: 1319738
+> [ 516.991600] (3:node@c-2.me) My finger table:
+> [ 516.991600] (3:node@c-2.me) Start | Succ 
+> [ 516.991600] (3:node@c-2.me)  533745  | 1319738 
+> [ 516.991600] (3:node@c-2.me)  533746  | 1319738 
+> [ 516.991600] (3:node@c-2.me)  533748  | 1319738 
+> [ 516.991600] (3:node@c-2.me)  533752  | 1319738 
+> [ 516.991600] (3:node@c-2.me)  533760  | 533744 
+> [ 516.991600] (3:node@c-2.me)  533776  | 533744 
+> [ 516.991600] (3:node@c-2.me)  533808  | 533744 
+> [ 516.991600] (3:node@c-2.me)  533872  | 533744 
+> [ 516.991600] (3:node@c-2.me)  534000  | 533744 
+> [ 516.991600] (3:node@c-2.me)  534256  | 533744 
+> [ 516.991600] (3:node@c-2.me)  534768  | 533744 
+> [ 516.991600] (3:node@c-2.me)  535792  | 533744 
+> [ 516.991600] (3:node@c-2.me)  537840  | 533744 
+> [ 516.991600] (3:node@c-2.me)  541936  | 533744 
+> [ 516.991600] (3:node@c-2.me)  550128  | 533744 
+> [ 516.991600] (3:node@c-2.me)  566512  | 533744 
+> [ 516.991600] (3:node@c-2.me)  599280  | 533744 
+> [ 516.991600] (3:node@c-2.me)  664816  | 533744 
+> [ 516.991600] (3:node@c-2.me)  795888  | 533744 
+> [ 516.991600] (3:node@c-2.me)  1058032  | 533744 
+> [ 516.991600] (3:node@c-2.me)  1582320  | 533744 
+> [ 516.991600] (3:node@c-2.me)  2630896  | 533744 
+> [ 516.991600] (3:node@c-2.me)  4728048  | 533744 
+> [ 516.991600] (3:node@c-2.me)  8922352  | 533744 
+> [ 516.991600] (3:node@c-2.me) Predecessor: 366680
+> [ 519.991600] (7:node@c-6.me) My finger table:
+> [ 519.991600] (7:node@c-6.me) Start | Succ 
+> [ 519.991600] (7:node@c-6.me)  16728097  |  42 
+> [ 519.991600] (7:node@c-6.me)  16728098  |  42 
+> [ 519.991600] (7:node@c-6.me)  16728100  |  42 
+> [ 519.991600] (7:node@c-6.me)  16728104  |  42 
+> [ 519.991600] (7:node@c-6.me)  16728112  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728128  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728160  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728224  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728352  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728608  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16729120  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16730144  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16732192  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16736288  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16744480  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16760864  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16416  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  81952  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  213024  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  475168  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  999456  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  2048032  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  4145184  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  8339488  | 16728096 
+> [ 519.991600] (7:node@c-6.me) Predecessor: 16509405
+> [ 524.991500] (8:node@c-7.me) My finger table:
+> [ 524.991500] (8:node@c-7.me) Start | Succ 
+> [ 524.991500] (8:node@c-7.me)  10004761  | 16509405 
+> [ 524.991500] (8:node@c-7.me)  10004762  | 16509405 
+> [ 524.991500] (8:node@c-7.me)  10004764  | 16509405 
+> [ 524.991500] (8:node@c-7.me)  10004768  | 16509405 
+> [ 524.991500] (8:node@c-7.me)  10004776  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10004792  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10004824  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10004888  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10005016  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10005272  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10005784  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10006808  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10008856  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10012952  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10021144  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10037528  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10070296  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10135832  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10266904  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10529048  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  11053336  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  12101912  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  14199064  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  1616152  | 10004760 
+> [ 524.991500] (8:node@c-7.me) Predecessor: 6518808
+> [ 529.991500] (5:node@c-4.me) My finger table:
+> [ 529.991500] (5:node@c-4.me) Start | Succ 
+> [ 529.991500] (5:node@c-4.me)  16509406  | 16728096 
+> [ 529.991500] (5:node@c-4.me)  16509407  |  42 
+> [ 529.991500] (5:node@c-4.me)  16509409  | 16728096 
+> [ 529.991500] (5:node@c-4.me)  16509413  | 16728096 
+> [ 529.991500] (5:node@c-4.me)  16509421  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509437  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509469  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509533  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509661  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509917  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16510429  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16511453  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16513501  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16517597  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16525789  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16542173  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16574941  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16640477  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16771549  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  256477  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  780765  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  1829341  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  3926493  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  8120797  | 16509405 
+> [ 529.991500] (5:node@c-4.me) Predecessor: 10874876
+> [ 540.991400] (9:node@c-8.me) My finger table:
+> [ 540.991400] (9:node@c-8.me) Start | Succ 
+> [ 540.991400] (9:node@c-8.me)  6518809  | 10004760 
+> [ 540.991400] (9:node@c-8.me)  6518810  | 10004760 
+> [ 540.991400] (9:node@c-8.me)  6518812  | 10004760 
+> [ 540.991400] (9:node@c-8.me)  6518816  | 10004760 
+> [ 540.991400] (9:node@c-8.me)  6518824  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6518840  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6518872  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6518936  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6519064  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6519320  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6519832  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6520856  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6522904  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6527000  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6535192  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6551576  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6584344  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6649880  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6780952  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  7043096  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  7567384  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  8615960  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  10713112  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  14907416  | 6518808 
+> [ 540.991400] (9:node@c-8.me) Predecessor: 2015253
+> [ 613.990100] (6:node@c-5.me) My finger table:
+> [ 613.990100] (6:node@c-5.me) Start | Succ 
+> [ 613.990100] (6:node@c-5.me)  10874877  | 16509405 
+> [ 613.990100] (6:node@c-5.me)  10874878  | 533744 
+> [ 613.990100] (6:node@c-5.me)  10874880  | 533744 
+> [ 613.990100] (6:node@c-5.me)  10874884  | 16509405 
+> [ 613.990100] (6:node@c-5.me)  10874892  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10874908  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10874940  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10875004  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10875132  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10875388  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10875900  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10876924  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10878972  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10883068  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10891260  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10907644  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10940412  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  11005948  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  11137020  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  11399164  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  11923452  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  12972028  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  15069180  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  2486268  | 10874876 
+> [ 613.990100] (6:node@c-5.me) Predecessor: 10004760
+> [ 629.989800] (1:node@c-0.me) My finger table:
+> [ 629.989800] (1:node@c-0.me) Start | Succ 
+> [ 629.989800] (1:node@c-0.me)   43  | 366680 
+> [ 629.989800] (1:node@c-0.me)   44  | 366680 
+> [ 629.989800] (1:node@c-0.me)   46  | 366680 
+> [ 629.989800] (1:node@c-0.me)   50  | 366680 
+> [ 629.989800] (1:node@c-0.me)   58  | 366680 
+> [ 629.989800] (1:node@c-0.me)   74  |  42 
+> [ 629.989800] (1:node@c-0.me)  106  |  42 
+> [ 629.989800] (1:node@c-0.me)  170  |  42 
+> [ 629.989800] (1:node@c-0.me)  298  |  42 
+> [ 629.989800] (1:node@c-0.me)  554  |  42 
+> [ 629.989800] (1:node@c-0.me)  1066  |  42 
+> [ 629.989800] (1:node@c-0.me)  2090  |  42 
+> [ 629.989800] (1:node@c-0.me)  4138  |  42 
+> [ 629.989800] (1:node@c-0.me)  8234  |  42 
+> [ 629.989800] (1:node@c-0.me)  16426  |  42 
+> [ 629.989800] (1:node@c-0.me)  32810  |  42 
+> [ 629.989800] (1:node@c-0.me)  65578  |  42 
+> [ 629.989800] (1:node@c-0.me)  131114  |  42 
+> [ 629.989800] (1:node@c-0.me)  262186  |  42 
+> [ 629.989800] (1:node@c-0.me)  524330  |  42 
+> [ 629.989800] (1:node@c-0.me)  1048618  |  42 
+> [ 629.989800] (1:node@c-0.me)  2097194  |  42 
+> [ 629.989800] (1:node@c-0.me)  4194346  |  42 
+> [ 629.989800] (1:node@c-0.me)  8388650  |  42 
+> [ 629.989800] (1:node@c-0.me) Predecessor: 16728096
+> [ 629.989800] (6:node@c-5.me) My finger table:
+> [ 629.989800] (6:node@c-5.me) Start | Succ 
+> [ 629.989800] (6:node@c-5.me)  10874877  | 16509405 
+> [ 629.989800] (6:node@c-5.me)  10874878  | 533744 
+> [ 629.989800] (6:node@c-5.me)  10874880  | 533744 
+> [ 629.989800] (6:node@c-5.me)  10874884  | 16509405 
+> [ 629.989800] (6:node@c-5.me)  10874892  | 16509405 
+> [ 629.989800] (6:node@c-5.me)  10874908  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10874940  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10875004  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10875132  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10875388  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10875900  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10876924  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10878972  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10883068  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10891260  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10907644  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10940412  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  11005948  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  11137020  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  11399164  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  11923452  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  12972028  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  15069180  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  2486268  | 10874876 
+> [ 629.989800] (6:node@c-5.me) Predecessor: 10004760
+> [ 632.989700] (4:node@c-3.me) My finger table:
+> [ 632.989700] (4:node@c-3.me) Start | Succ 
+> [ 632.989700] (4:node@c-3.me)  1319739  | 2015253 
+> [ 632.989700] (4:node@c-3.me)  1319740  | 6518808 
+> [ 632.989700] (4:node@c-3.me)  1319742  | 6518808 
+> [ 632.989700] (4:node@c-3.me)  1319746  | 2015253 
+> [ 632.989700] (4:node@c-3.me)  1319754  | 2015253 
+> [ 632.989700] (4:node@c-3.me)  1319770  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1319802  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1319866  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1319994  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1320250  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1320762  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1321786  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1323834  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1327930  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1336122  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1352506  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1385274  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1450810  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1581882  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1844026  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  2368314  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  3416890  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  5514042  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  9708346  | 1319738 
+> [ 632.989700] (4:node@c-3.me) Predecessor: 533744
+> [ 637.989600] (2:node@c-1.me) My finger table:
+> [ 637.989600] (2:node@c-1.me) Start | Succ 
+> [ 637.989600] (2:node@c-1.me)  366681  | 533744 
+> [ 637.989600] (2:node@c-1.me)  366682  | 1319738 
+> [ 637.989600] (2:node@c-1.me)  366684  | 533744 
+> [ 637.989600] (2:node@c-1.me)  366688  | 533744 
+> [ 637.989600] (2:node@c-1.me)  366696  | 533744 
+> [ 637.989600] (2:node@c-1.me)  366712  | 366680 
+> [ 637.989600] (2:node@c-1.me)  366744  | 366680 
+> [ 637.989600] (2:node@c-1.me)  366808  | 366680 
+> [ 637.989600] (2:node@c-1.me)  366936  | 366680 
+> [ 637.989600] (2:node@c-1.me)  367192  | 366680 
+> [ 637.989600] (2:node@c-1.me)  367704  | 366680 
+> [ 637.989600] (2:node@c-1.me)  368728  | 366680 
+> [ 637.989600] (2:node@c-1.me)  370776  | 366680 
+> [ 637.989600] (2:node@c-1.me)  374872  | 366680 
+> [ 637.989600] (2:node@c-1.me)  383064  | 366680 
+> [ 637.989600] (2:node@c-1.me)  399448  | 366680 
+> [ 637.989600] (2:node@c-1.me)  432216  | 366680 
+> [ 637.989600] (2:node@c-1.me)  497752  | 366680 
+> [ 637.989600] (2:node@c-1.me)  628824  | 366680 
+> [ 637.989600] (2:node@c-1.me)  890968  | 366680 
+> [ 637.989600] (2:node@c-1.me)  1415256  | 366680 
+> [ 637.989600] (2:node@c-1.me)  2463832  | 366680 
+> [ 637.989600] (2:node@c-1.me)  4560984  | 366680 
+> [ 637.989600] (2:node@c-1.me)  8755288  | 366680 
+> [ 637.989600] (2:node@c-1.me) Predecessor: 42
+> [ 638.989600] (3:node@c-2.me) My finger table:
+> [ 638.989600] (3:node@c-2.me) Start | Succ 
+> [ 638.989600] (3:node@c-2.me)  533745  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533746  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533748  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533752  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533760  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533776  | 533744 
+> [ 638.989600] (3:node@c-2.me)  533808  | 533744 
+> [ 638.989600] (3:node@c-2.me)  533872  | 533744 
+> [ 638.989600] (3:node@c-2.me)  534000  | 533744 
+> [ 638.989600] (3:node@c-2.me)  534256  | 533744 
+> [ 638.989600] (3:node@c-2.me)  534768  | 533744 
+> [ 638.989600] (3:node@c-2.me)  535792  | 533744 
+> [ 638.989600] (3:node@c-2.me)  537840  | 533744 
+> [ 638.989600] (3:node@c-2.me)  541936  | 533744 
+> [ 638.989600] (3:node@c-2.me)  550128  | 533744 
+> [ 638.989600] (3:node@c-2.me)  566512  | 533744 
+> [ 638.989600] (3:node@c-2.me)  599280  | 533744 
+> [ 638.989600] (3:node@c-2.me)  664816  | 533744 
+> [ 638.989600] (3:node@c-2.me)  795888  | 533744 
+> [ 638.989600] (3:node@c-2.me)  1058032  | 533744 
+> [ 638.989600] (3:node@c-2.me)  1582320  | 533744 
+> [ 638.989600] (3:node@c-2.me)  2630896  | 533744 
+> [ 638.989600] (3:node@c-2.me)  4728048  | 533744 
+> [ 638.989600] (3:node@c-2.me)  8922352  | 533744 
+> [ 638.989600] (3:node@c-2.me) Predecessor: 366680
+> [ 641.989600] (10:node@c-9.me) My finger table:
+> [ 641.989600] (10:node@c-9.me) Start | Succ 
+> [ 641.989600] (10:node@c-9.me)  2015254  | 6518808 
+> [ 641.989600] (10:node@c-9.me)  2015255  | 16728096 
+> [ 641.989600] (10:node@c-9.me)  2015257  | 10004760 
+> [ 641.989600] (10:node@c-9.me)  2015261  | 6518808 
+> [ 641.989600] (10:node@c-9.me)  2015269  | 6518808 
+> [ 641.989600] (10:node@c-9.me)  2015285  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2015317  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2015381  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2015509  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2015765  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2016277  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2017301  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2019349  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2023445  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2031637  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2048021  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2080789  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2146325  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2277397  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2539541  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  3063829  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  4112405  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  6209557  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  10403861  | 2015253 
+> [ 641.989600] (10:node@c-9.me) Predecessor: 1319738
+> [ 645.989500] (7:node@c-6.me) My finger table:
+> [ 645.989500] (7:node@c-6.me) Start | Succ 
+> [ 645.989500] (7:node@c-6.me)  16728097  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728098  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728100  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728104  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728112  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728128  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16728160  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16728224  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16728352  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16728608  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16729120  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16730144  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16732192  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16736288  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16744480  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16760864  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16416  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  81952  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  213024  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  475168  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  999456  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  2048032  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  4145184  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  8339488  | 16728096 
+> [ 645.989500] (7:node@c-6.me) Predecessor: 16509405
+> [ 645.989600] (5:node@c-4.me) My finger table:
+> [ 645.989600] (5:node@c-4.me) Start | Succ 
+> [ 645.989600] (5:node@c-4.me)  16509406  | 16728096 
+> [ 645.989600] (5:node@c-4.me)  16509407  |  42 
+> [ 645.989600] (5:node@c-4.me)  16509409  | 16728096 
+> [ 645.989600] (5:node@c-4.me)  16509413  | 16728096 
+> [ 645.989600] (5:node@c-4.me)  16509421  | 16728096 
+> [ 645.989600] (5:node@c-4.me)  16509437  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16509469  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16509533  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16509661  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16509917  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16510429  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16511453  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16513501  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16517597  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16525789  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16542173  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16574941  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16640477  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16771549  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  256477  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  780765  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  1829341  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  3926493  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  8120797  | 16509405 
+> [ 645.989600] (5:node@c-4.me) Predecessor: 10874876
+> [ 655.989400] (8:node@c-7.me) My finger table:
+> [ 655.989400] (8:node@c-7.me) Start | Succ 
+> [ 655.989400] (8:node@c-7.me)  10004761  | 10874876 
+> [ 655.989400] (8:node@c-7.me)  10004762  | 16509405 
+> [ 655.989400] (8:node@c-7.me)  10004764  | 16509405 
+> [ 655.989400] (8:node@c-7.me)  10004768  | 16509405 
+> [ 655.989400] (8:node@c-7.me)  10004776  | 10874876 
+> [ 655.989400] (8:node@c-7.me)  10004792  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10004824  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10004888  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10005016  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10005272  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10005784  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10006808  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10008856  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10012952  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10021144  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10037528  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10070296  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10135832  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10266904  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10529048  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  11053336  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  12101912  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  14199064  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  1616152  | 10004760 
+> [ 655.989400] (8:node@c-7.me) Predecessor: 6518808
+> [ 662.989300] (9:node@c-8.me) My finger table:
+> [ 662.989300] (9:node@c-8.me) Start | Succ 
+> [ 662.989300] (9:node@c-8.me)  6518809  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518810  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518812  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518816  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518824  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518840  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6518872  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6518936  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6519064  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6519320  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6519832  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6520856  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6522904  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6527000  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6535192  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6551576  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6584344  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6649880  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6780952  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  7043096  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  7567384  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  8615960  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  10713112  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  14907416  | 6518808 
+> [ 662.989300] (9:node@c-8.me) Predecessor: 2015253
+> [ 754.987800] (1:node@c-0.me) My finger table:
+> [ 754.987800] (1:node@c-0.me) Start | Succ 
+> [ 754.987800] (1:node@c-0.me)   43  | 366680 
+> [ 754.987800] (1:node@c-0.me)   44  | 366680 
+> [ 754.987800] (1:node@c-0.me)   46  | 366680 
+> [ 754.987800] (1:node@c-0.me)   50  | 366680 
+> [ 754.987800] (1:node@c-0.me)   58  | 366680 
+> [ 754.987800] (1:node@c-0.me)   74  | 366680 
+> [ 754.987800] (1:node@c-0.me)  106  |  42 
+> [ 754.987800] (1:node@c-0.me)  170  |  42 
+> [ 754.987800] (1:node@c-0.me)  298  |  42 
+> [ 754.987800] (1:node@c-0.me)  554  |  42 
+> [ 754.987800] (1:node@c-0.me)  1066  |  42 
+> [ 754.987800] (1:node@c-0.me)  2090  |  42 
+> [ 754.987800] (1:node@c-0.me)  4138  |  42 
+> [ 754.987800] (1:node@c-0.me)  8234  |  42 
+> [ 754.987800] (1:node@c-0.me)  16426  |  42 
+> [ 754.987800] (1:node@c-0.me)  32810  |  42 
+> [ 754.987800] (1:node@c-0.me)  65578  |  42 
+> [ 754.987800] (1:node@c-0.me)  131114  |  42 
+> [ 754.987800] (1:node@c-0.me)  262186  |  42 
+> [ 754.987800] (1:node@c-0.me)  524330  |  42 
+> [ 754.987800] (1:node@c-0.me)  1048618  |  42 
+> [ 754.987800] (1:node@c-0.me)  2097194  |  42 
+> [ 754.987800] (1:node@c-0.me)  4194346  |  42 
+> [ 754.987800] (1:node@c-0.me)  8388650  |  42 
+> [ 754.987800] (1:node@c-0.me) Predecessor: 16728096
+> [ 757.987800] (4:node@c-3.me) My finger table:
+> [ 757.987800] (4:node@c-3.me) Start | Succ 
+> [ 757.987800] (4:node@c-3.me)  1319739  | 2015253 
+> [ 757.987800] (4:node@c-3.me)  1319740  | 6518808 
+> [ 757.987800] (4:node@c-3.me)  1319742  | 6518808 
+> [ 757.987800] (4:node@c-3.me)  1319746  | 2015253 
+> [ 757.987800] (4:node@c-3.me)  1319754  | 2015253 
+> [ 757.987800] (4:node@c-3.me)  1319770  | 2015253 
+> [ 757.987800] (4:node@c-3.me)  1319802  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1319866  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1319994  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1320250  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1320762  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1321786  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1323834  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1327930  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1336122  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1352506  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1385274  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1450810  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1581882  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1844026  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  2368314  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  3416890  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  5514042  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  9708346  | 1319738 
+> [ 757.987800] (4:node@c-3.me) Predecessor: 533744
+> [ 762.987700] (10:node@c-9.me) My finger table:
+> [ 762.987700] (10:node@c-9.me) Start | Succ 
+> [ 762.987700] (10:node@c-9.me)  2015254  | 6518808 
+> [ 762.987700] (10:node@c-9.me)  2015255  | 16728096 
+> [ 762.987700] (10:node@c-9.me)  2015257  | 10004760 
+> [ 762.987700] (10:node@c-9.me)  2015261  | 6518808 
+> [ 762.987700] (10:node@c-9.me)  2015269  | 6518808 
+> [ 762.987700] (10:node@c-9.me)  2015285  | 6518808 
+> [ 762.987700] (10:node@c-9.me)  2015317  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2015381  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2015509  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2015765  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2016277  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2017301  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2019349  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2023445  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2031637  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2048021  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2080789  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2146325  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2277397  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2539541  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  3063829  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  4112405  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  6209557  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  10403861  | 2015253 
+> [ 762.987700] (10:node@c-9.me) Predecessor: 1319738
+> [ 762.987700] (6:node@c-5.me) My finger table:
+> [ 762.987700] (6:node@c-5.me) Start | Succ 
+> [ 762.987700] (6:node@c-5.me)  10874877  | 16509405 
+> [ 762.987700] (6:node@c-5.me)  10874878  | 533744 
+> [ 762.987700] (6:node@c-5.me)  10874880  | 533744 
+> [ 762.987700] (6:node@c-5.me)  10874884  | 16509405 
+> [ 762.987700] (6:node@c-5.me)  10874892  | 16509405 
+> [ 762.987700] (6:node@c-5.me)  10874908  | 16509405 
+> [ 762.987700] (6:node@c-5.me)  10874940  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10875004  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10875132  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10875388  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10875900  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10876924  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10878972  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10883068  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10891260  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10907644  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10940412  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  11005948  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  11137020  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  11399164  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  11923452  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  12972028  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  15069180  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  2486268  | 10874876 
+> [ 762.987700] (6:node@c-5.me) Predecessor: 10004760
+> [ 767.987600] (2:node@c-1.me) My finger table:
+> [ 767.987600] (2:node@c-1.me) Start | Succ 
+> [ 767.987600] (2:node@c-1.me)  366681  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366682  | 1319738 
+> [ 767.987600] (2:node@c-1.me)  366684  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366688  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366696  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366712  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366744  | 366680 
+> [ 767.987600] (2:node@c-1.me)  366808  | 366680 
+> [ 767.987600] (2:node@c-1.me)  366936  | 366680 
+> [ 767.987600] (2:node@c-1.me)  367192  | 366680 
+> [ 767.987600] (2:node@c-1.me)  367704  | 366680 
+> [ 767.987600] (2:node@c-1.me)  368728  | 366680 
+> [ 767.987600] (2:node@c-1.me)  370776  | 366680 
+> [ 767.987600] (2:node@c-1.me)  374872  | 366680 
+> [ 767.987600] (2:node@c-1.me)  383064  | 366680 
+> [ 767.987600] (2:node@c-1.me)  399448  | 366680 
+> [ 767.987600] (2:node@c-1.me)  432216  | 366680 
+> [ 767.987600] (2:node@c-1.me)  497752  | 366680 
+> [ 767.987600] (2:node@c-1.me)  628824  | 366680 
+> [ 767.987600] (2:node@c-1.me)  890968  | 366680 
+> [ 767.987600] (2:node@c-1.me)  1415256  | 366680 
+> [ 767.987600] (2:node@c-1.me)  2463832  | 366680 
+> [ 767.987600] (2:node@c-1.me)  4560984  | 366680 
+> [ 767.987600] (2:node@c-1.me)  8755288  | 366680 
+> [ 767.987600] (2:node@c-1.me) Predecessor: 42
+> [ 771.987500] (5:node@c-4.me) My finger table:
+> [ 771.987500] (5:node@c-4.me) Start | Succ 
+> [ 771.987500] (5:node@c-4.me)  16509406  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509407  |  42 
+> [ 771.987500] (5:node@c-4.me)  16509409  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509413  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509421  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509437  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509469  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16509533  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16509661  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16509917  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16510429  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16511453  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16513501  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16517597  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16525789  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16542173  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16574941  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16640477  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16771549  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  256477  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  780765  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  1829341  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  3926493  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  8120797  | 16509405 
+> [ 771.987500] (5:node@c-4.me) Predecessor: 10874876
+> [ 776.987500] (3:node@c-2.me) My finger table:
+> [ 776.987500] (3:node@c-2.me) Start | Succ 
+> [ 776.987500] (3:node@c-2.me)  533745  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533746  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533748  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533752  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533760  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533776  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533808  | 533744 
+> [ 776.987500] (3:node@c-2.me)  533872  | 533744 
+> [ 776.987500] (3:node@c-2.me)  534000  | 533744 
+> [ 776.987500] (3:node@c-2.me)  534256  | 533744 
+> [ 776.987500] (3:node@c-2.me)  534768  | 533744 
+> [ 776.987500] (3:node@c-2.me)  535792  | 533744 
+> [ 776.987500] (3:node@c-2.me)  537840  | 533744 
+> [ 776.987500] (3:node@c-2.me)  541936  | 533744 
+> [ 776.987500] (3:node@c-2.me)  550128  | 533744 
+> [ 776.987500] (3:node@c-2.me)  566512  | 533744 
+> [ 776.987500] (3:node@c-2.me)  599280  | 533744 
+> [ 776.987500] (3:node@c-2.me)  664816  | 533744 
+> [ 776.987500] (3:node@c-2.me)  795888  | 533744 
+> [ 776.987500] (3:node@c-2.me)  1058032  | 533744 
+> [ 776.987500] (3:node@c-2.me)  1582320  | 533744 
+> [ 776.987500] (3:node@c-2.me)  2630896  | 533744 
+> [ 776.987500] (3:node@c-2.me)  4728048  | 533744 
+> [ 776.987500] (3:node@c-2.me)  8922352  | 533744 
+> [ 776.987500] (3:node@c-2.me) Predecessor: 366680
+> [ 823.987500] (8:node@c-7.me) My finger table:
+> [ 823.987500] (8:node@c-7.me) Start | Succ 
+> [ 823.987500] (8:node@c-7.me)  10004761  | 10874876 
+> [ 823.987500] (8:node@c-7.me)  10004762  | 16509405 
+> [ 823.987500] (8:node@c-7.me)  10004764  | 16509405 
+> [ 823.987500] (8:node@c-7.me)  10004768  | 16509405 
+> [ 823.987500] (8:node@c-7.me)  10004776  | 10874876 
+> [ 823.987500] (8:node@c-7.me)  10004792  | 10874876 
+> [ 823.987500] (8:node@c-7.me)  10004824  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10004888  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10005016  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10005272  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10005784  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10006808  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10008856  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10012952  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10021144  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10037528  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10070296  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10135832  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10266904  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10529048  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  11053336  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  12101912  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  14199064  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  1616152  | 10004760 
+> [ 823.987500] (8:node@c-7.me) Predecessor: 6518808
+> [ 824.987500] (7:node@c-6.me) My finger table:
+> [ 824.987500] (7:node@c-6.me) Start | Succ 
+> [ 824.987500] (7:node@c-6.me)  16728097  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728098  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728100  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728104  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728112  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728128  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728160  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16728224  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16728352  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16728608  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16729120  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16730144  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16732192  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16736288  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16744480  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16760864  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16416  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  81952  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  213024  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  475168  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  999456  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  2048032  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  4145184  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  8339488  | 16728096 
+> [ 824.987500] (7:node@c-6.me) Predecessor: 16509405
+> [ 876.987500] (9:node@c-8.me) My finger table:
+> [ 876.987500] (9:node@c-8.me) Start | Succ 
+> [ 876.987500] (9:node@c-8.me)  6518809  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518810  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518812  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518816  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518824  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518840  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518872  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6518936  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6519064  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6519320  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6519832  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6520856  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6522904  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6527000  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6535192  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6551576  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6584344  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6649880  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6780952  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  7043096  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  7567384  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  8615960  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  10713112  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  14907416  | 6518808 
+> [ 876.987500] (9:node@c-8.me) Predecessor: 2015253
+> [ 880.986500] (1:node@c-0.me) My finger table:
+> [ 880.986500] (1:node@c-0.me) Start | Succ 
+> [ 880.986500] (1:node@c-0.me)   43  | 366680 
+> [ 880.986500] (1:node@c-0.me)   44  | 366680 
+> [ 880.986500] (1:node@c-0.me)   46  | 366680 
+> [ 880.986500] (1:node@c-0.me)   50  | 366680 
+> [ 880.986500] (1:node@c-0.me)   58  | 366680 
+> [ 880.986500] (1:node@c-0.me)   74  | 366680 
+> [ 880.986500] (1:node@c-0.me)  106  | 366680 
+> [ 880.986500] (1:node@c-0.me)  170  |  42 
+> [ 880.986500] (1:node@c-0.me)  298  |  42 
+> [ 880.986500] (1:node@c-0.me)  554  |  42 
+> [ 880.986500] (1:node@c-0.me)  1066  |  42 
+> [ 880.986500] (1:node@c-0.me)  2090  |  42 
+> [ 880.986500] (1:node@c-0.me)  4138  |  42 
+> [ 880.986500] (1:node@c-0.me)  8234  |  42 
+> [ 880.986500] (1:node@c-0.me)  16426  |  42 
+> [ 880.986500] (1:node@c-0.me)  32810  |  42 
+> [ 880.986500] (1:node@c-0.me)  65578  |  42 
+> [ 880.986500] (1:node@c-0.me)  131114  |  42 
+> [ 880.986500] (1:node@c-0.me)  262186  |  42 
+> [ 880.986500] (1:node@c-0.me)  524330  |  42 
+> [ 880.986500] (1:node@c-0.me)  1048618  |  42 
+> [ 880.986500] (1:node@c-0.me)  2097194  |  42 
+> [ 880.986500] (1:node@c-0.me)  4194346  |  42 
+> [ 880.986500] (1:node@c-0.me)  8388650  |  42 
+> [ 880.986500] (1:node@c-0.me) Predecessor: 16728096
+> [ 904.987100] (3:node@c-2.me) My finger table:
+> [ 904.987100] (3:node@c-2.me) Start | Succ 
+> [ 904.987100] (3:node@c-2.me)  533745  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533746  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533748  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533752  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533760  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533776  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533808  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533872  | 533744 
+> [ 904.987100] (3:node@c-2.me)  534000  | 533744 
+> [ 904.987100] (3:node@c-2.me)  534256  | 533744 
+> [ 904.987100] (3:node@c-2.me)  534768  | 533744 
+> [ 904.987100] (3:node@c-2.me)  535792  | 533744 
+> [ 904.987100] (3:node@c-2.me)  537840  | 533744 
+> [ 904.987100] (3:node@c-2.me)  541936  | 533744 
+> [ 904.987100] (3:node@c-2.me)  550128  | 533744 
+> [ 904.987100] (3:node@c-2.me)  566512  | 533744 
+> [ 904.987100] (3:node@c-2.me)  599280  | 533744 
+> [ 904.987100] (3:node@c-2.me)  664816  | 533744 
+> [ 904.987100] (3:node@c-2.me)  795888  | 533744 
+> [ 904.987100] (3:node@c-2.me)  1058032  | 533744 
+> [ 904.987100] (3:node@c-2.me)  1582320  | 533744 
+> [ 904.987100] (3:node@c-2.me)  2630896  | 533744 
+> [ 904.987100] (3:node@c-2.me)  4728048  | 533744 
+> [ 904.987100] (3:node@c-2.me)  8922352  | 533744 
+> [ 904.987100] (3:node@c-2.me) Predecessor: 366680
+> [ 924.987500] (5:node@c-4.me) My finger table:
+> [ 924.987500] (5:node@c-4.me) Start | Succ 
+> [ 924.987500] (5:node@c-4.me)  16509406  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509407  |  42 
+> [ 924.987500] (5:node@c-4.me)  16509409  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509413  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509421  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509437  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509469  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509533  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16509661  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16509917  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16510429  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16511453  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16513501  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16517597  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16525789  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16542173  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16574941  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16640477  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16771549  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  256477  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  780765  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  1829341  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  3926493  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  8120797  | 16509405 
+> [ 924.987500] (5:node@c-4.me) Predecessor: 10874876
+> [ 936.987400] (6:node@c-5.me) My finger table:
+> [ 936.987400] (6:node@c-5.me) Start | Succ 
+> [ 936.987400] (6:node@c-5.me)  10874877  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10874878  | 533744 
+> [ 936.987400] (6:node@c-5.me)  10874880  | 533744 
+> [ 936.987400] (6:node@c-5.me)  10874884  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10874892  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10874908  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10874940  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10875004  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10875132  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10875388  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10875900  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10876924  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10878972  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10883068  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10891260  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10907644  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10940412  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  11005948  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  11137020  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  11399164  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  11923452  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  12972028  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  15069180  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  2486268  | 10874876 
+> [ 936.987400] (6:node@c-5.me) Predecessor: 10004760
+> [ 945.985300] (7:node@c-6.me) My finger table:
+> [ 945.985300] (7:node@c-6.me) Start | Succ 
+> [ 945.985300] (7:node@c-6.me)  16728097  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728098  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728100  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728104  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728112  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728128  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728160  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728224  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16728352  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16728608  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16729120  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16730144  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16732192  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16736288  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16744480  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16760864  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16416  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  81952  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  213024  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  475168  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  999456  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  2048032  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  4145184  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  8339488  | 16728096 
+> [ 945.985300] (7:node@c-6.me) Predecessor: 16509405
+> [ 952.985200] (2:node@c-1.me) My finger table:
+> [ 952.985200] (2:node@c-1.me) Start | Succ 
+> [ 952.985200] (2:node@c-1.me)  366681  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366682  | 1319738 
+> [ 952.985200] (2:node@c-1.me)  366684  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366688  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366696  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366712  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366744  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366808  | 366680 
+> [ 952.985200] (2:node@c-1.me)  366936  | 366680 
+> [ 952.985200] (2:node@c-1.me)  367192  | 366680 
+> [ 952.985200] (2:node@c-1.me)  367704  | 366680 
+> [ 952.985200] (2:node@c-1.me)  368728  | 366680 
+> [ 952.985200] (2:node@c-1.me)  370776  | 366680 
+> [ 952.985200] (2:node@c-1.me)  374872  | 366680 
+> [ 952.985200] (2:node@c-1.me)  383064  | 366680 
+> [ 952.985200] (2:node@c-1.me)  399448  | 366680 
+> [ 952.985200] (2:node@c-1.me)  432216  | 366680 
+> [ 952.985200] (2:node@c-1.me)  497752  | 366680 
+> [ 952.985200] (2:node@c-1.me)  628824  | 366680 
+> [ 952.985200] (2:node@c-1.me)  890968  | 366680 
+> [ 952.985200] (2:node@c-1.me)  1415256  | 366680 
+> [ 952.985200] (2:node@c-1.me)  2463832  | 366680 
+> [ 952.985200] (2:node@c-1.me)  4560984  | 366680 
+> [ 952.985200] (2:node@c-1.me)  8755288  | 366680 
+> [ 952.985200] (2:node@c-1.me) Predecessor: 42
+> [ 967.986900] (4:node@c-3.me) My finger table:
+> [ 967.986900] (4:node@c-3.me) Start | Succ 
+> [ 967.986900] (4:node@c-3.me)  1319739  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319740  | 6518808 
+> [ 967.986900] (4:node@c-3.me)  1319742  | 6518808 
+> [ 967.986900] (4:node@c-3.me)  1319746  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319754  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319770  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319802  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319866  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1319994  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1320250  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1320762  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1321786  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1323834  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1327930  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1336122  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1352506  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1385274  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1450810  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1581882  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1844026  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  2368314  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  3416890  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  5514042  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  9708346  | 1319738 
+> [ 967.986900] (4:node@c-3.me) Predecessor: 533744
+> [1207.985300] (0:@) Messages created: 1690
+> [1207.985300] (0:@) Simulated time: 1207.99
index 78b5acc..19bc5ff 100644 (file)
@@ -1,6 +1,6 @@
 #! ./tesh
 
-p Testing the Chord implementation with MSG
+p> Testing the Chord implementation with MSG
 
 ! output sort
 $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../msg_platform.xml ${srcdir:=.}/chord.xml --log=msg_chord.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
@@ -20,404 +20,350 @@ $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../msg_platfo
 > [  0.000000] (8:node@Jacquelin)   17  |   1 
 > [  0.000000] (8:node@Jacquelin)   33  |   1 
 > [  0.000000] (8:node@Jacquelin) Predecessor: -1
-> [  6.274448] (1:node@Gatien) My finger table:
-> [  6.274448] (1:node@Gatien) Start | Succ 
-> [  6.274448] (1:node@Gatien)   49  |   1 
-> [  6.274448] (1:node@Gatien)   50  |  48 
-> [  6.274448] (1:node@Gatien)   52  |  48 
-> [  6.274448] (1:node@Gatien)   56  |  48 
-> [  6.274448] (1:node@Gatien)    0  |  48 
-> [  6.274448] (1:node@Gatien)   16  |  48 
-> [  6.274448] (1:node@Gatien) Predecessor: -1
-> [ 10.888356] (2:node@McGee) My finger table:
-> [ 10.888356] (2:node@McGee) Start | Succ 
-> [ 10.888356] (2:node@McGee)   43  |   1 
-> [ 10.888356] (2:node@McGee)   44  |  42 
-> [ 10.888356] (2:node@McGee)   46  |  42 
-> [ 10.888356] (2:node@McGee)   50  |  42 
-> [ 10.888356] (2:node@McGee)   58  |  42 
-> [ 10.888356] (2:node@McGee)   10  |  42 
-> [ 10.888356] (2:node@McGee) Predecessor: -1
-> [ 18.043675] (3:node@iRMX) My finger table:
-> [ 18.043675] (3:node@iRMX) Start | Succ 
-> [ 18.043675] (3:node@iRMX)   39  |   1 
-> [ 18.043675] (3:node@iRMX)   40  |  38 
-> [ 18.043675] (3:node@iRMX)   42  |  38 
-> [ 18.043675] (3:node@iRMX)   46  |  38 
-> [ 18.043675] (3:node@iRMX)   54  |  38 
-> [ 18.043675] (3:node@iRMX)    6  |  38 
-> [ 18.043675] (3:node@iRMX) Predecessor: -1
-> [ 20.005344] (4:node@Geoff) My finger table:
-> [ 20.005344] (4:node@Geoff) Start | Succ 
-> [ 20.005344] (4:node@Geoff)   33  |   1 
-> [ 20.005344] (4:node@Geoff)   34  |  32 
-> [ 20.005344] (4:node@Geoff)   36  |  32 
-> [ 20.005344] (4:node@Geoff)   40  |  32 
-> [ 20.005344] (4:node@Geoff)   48  |  32 
-> [ 20.005344] (4:node@Geoff)    0  |  32 
-> [ 20.005344] (4:node@Geoff) Predecessor: -1
-> [ 26.812602] (5:node@TeX) My finger table:
-> [ 26.812602] (5:node@TeX) Start | Succ 
-> [ 26.812602] (5:node@TeX)   22  |   1 
-> [ 26.812602] (5:node@TeX)   23  |  21 
-> [ 26.812602] (5:node@TeX)   25  |  21 
-> [ 26.812602] (5:node@TeX)   29  |  21 
-> [ 26.812602] (5:node@TeX)   37  |  21 
-> [ 26.812602] (5:node@TeX)   53  |  21 
-> [ 26.812602] (5:node@TeX) Predecessor: -1
-> [ 30.925131] (6:node@Jean_Yves) My finger table:
-> [ 30.925131] (6:node@Jean_Yves) Start | Succ 
-> [ 30.925131] (6:node@Jean_Yves)   15  |   1 
-> [ 30.925131] (6:node@Jean_Yves)   16  |  14 
-> [ 30.925131] (6:node@Jean_Yves)   18  |  14 
-> [ 30.925131] (6:node@Jean_Yves)   22  |  14 
-> [ 30.925131] (6:node@Jean_Yves)   30  |  14 
-> [ 30.925131] (6:node@Jean_Yves)   46  |  14 
-> [ 30.925131] (6:node@Jean_Yves) Predecessor: -1
-> [ 36.048886] (7:node@Boivin) My finger table:
-> [ 36.048886] (7:node@Boivin) Start | Succ 
-> [ 36.048886] (7:node@Boivin)    9  |   1 
-> [ 36.048886] (7:node@Boivin)   10  |   8 
-> [ 36.048886] (7:node@Boivin)   12  |   8 
-> [ 36.048886] (7:node@Boivin)   16  |   8 
-> [ 36.048886] (7:node@Boivin)   24  |   8 
-> [ 36.048886] (7:node@Boivin)   40  |   8 
-> [ 36.048886] (7:node@Boivin) Predecessor: -1
-> [ 75.000000] (8:node@Jacquelin) My finger table:
-> [ 75.000000] (8:node@Jacquelin) Start | Succ 
-> [ 75.000000] (8:node@Jacquelin)    2  |   1 
-> [ 75.000000] (8:node@Jacquelin)    3  |   1 
-> [ 75.000000] (8:node@Jacquelin)    5  |   1 
-> [ 75.000000] (8:node@Jacquelin)    9  |   1 
-> [ 75.000000] (8:node@Jacquelin)   17  |   1 
-> [ 75.000000] (8:node@Jacquelin)   33  |   1 
-> [ 75.000000] (8:node@Jacquelin) Predecessor: 32
-> [ 80.000000] (8:node@Jacquelin) My finger table:
-> [ 80.000000] (8:node@Jacquelin) Start | Succ 
-> [ 80.000000] (8:node@Jacquelin)    2  |   1 
-> [ 80.000000] (8:node@Jacquelin)    3  |   1 
-> [ 80.000000] (8:node@Jacquelin)    5  |   1 
-> [ 80.000000] (8:node@Jacquelin)    9  |   1 
-> [ 80.000000] (8:node@Jacquelin)   17  |   1 
-> [ 80.000000] (8:node@Jacquelin)   33  |   1 
-> [ 80.000000] (8:node@Jacquelin) Predecessor: 42
-> [ 81.274448] (8:node@Jacquelin) My finger table:
-> [ 81.274448] (8:node@Jacquelin) Start | Succ 
-> [ 81.274448] (8:node@Jacquelin)    2  |  42 
-> [ 81.274448] (8:node@Jacquelin)    3  |   1 
-> [ 81.274448] (8:node@Jacquelin)    5  |   1 
-> [ 81.274448] (8:node@Jacquelin)    9  |   1 
-> [ 81.274448] (8:node@Jacquelin)   17  |   1 
-> [ 81.274448] (8:node@Jacquelin)   33  |   1 
-> [ 81.274448] (8:node@Jacquelin) Predecessor: 48
-> [116.655207] (2:node@McGee) My finger table:
-> [116.655207] (2:node@McGee) Start | Succ 
-> [116.655207] (2:node@McGee)   43  |  48 
-> [116.655207] (2:node@McGee)   44  |  42 
-> [116.655207] (2:node@McGee)   46  |  42 
-> [116.655207] (2:node@McGee)   50  |  42 
-> [116.655207] (2:node@McGee)   58  |  42 
-> [116.655207] (2:node@McGee)   10  |  42 
-> [116.655207] (2:node@McGee) Predecessor: 1
-> [141.383343] (1:node@Gatien) My finger table:
-> [141.383343] (1:node@Gatien) Start | Succ 
-> [141.383343] (1:node@Gatien)   49  |   1 
-> [141.383343] (1:node@Gatien)   50  |  48 
-> [141.383343] (1:node@Gatien)   52  |  48 
-> [141.383343] (1:node@Gatien)   56  |  48 
-> [141.383343] (1:node@Gatien)    0  |  48 
-> [141.383343] (1:node@Gatien)   16  |  48 
-> [141.383343] (1:node@Gatien) Predecessor: 42
-> [193.730915] (2:node@McGee) My finger table:
-> [193.730915] (2:node@McGee) Start | Succ 
-> [193.730915] (2:node@McGee)   43  |  48 
-> [193.730915] (2:node@McGee)   44  |  42 
-> [193.730915] (2:node@McGee)   46  |  42 
-> [193.730915] (2:node@McGee)   50  |  42 
-> [193.730915] (2:node@McGee)   58  |  42 
-> [193.730915] (2:node@McGee)   10  |  42 
-> [193.730915] (2:node@McGee) Predecessor: 8
-> [242.028917] (1:node@Gatien) My finger table:
-> [242.028917] (1:node@Gatien) Start | Succ 
-> [242.028917] (1:node@Gatien)   49  |   1 
-> [242.028917] (1:node@Gatien)   50  |   1 
-> [242.028917] (1:node@Gatien)   52  |  48 
-> [242.028917] (1:node@Gatien)   56  |  48 
-> [242.028917] (1:node@Gatien)    0  |  48 
-> [242.028917] (1:node@Gatien)   16  |  48 
-> [242.028917] (1:node@Gatien) Predecessor: 42
-> [242.939681] (2:node@McGee) My finger table:
-> [242.939681] (2:node@McGee) Start | Succ 
-> [242.939681] (2:node@McGee)   43  |  48 
-> [242.939681] (2:node@McGee)   44  |  42 
-> [242.939681] (2:node@McGee)   46  |  42 
-> [242.939681] (2:node@McGee)   50  |  42 
-> [242.939681] (2:node@McGee)   58  |  42 
-> [242.939681] (2:node@McGee)   10  |  42 
-> [242.939681] (2:node@McGee) Predecessor: 38
-> [246.478513] (2:node@McGee) My finger table:
-> [246.478513] (2:node@McGee) Start | Succ 
-> [246.478513] (2:node@McGee)   43  |  48 
-> [246.478513] (2:node@McGee)   44  |  48 
-> [246.478513] (2:node@McGee)   46  |  42 
-> [246.478513] (2:node@McGee)   50  |  42 
-> [246.478513] (2:node@McGee)   58  |  42 
-> [246.478513] (2:node@McGee)   10  |  42 
-> [246.478513] (2:node@McGee) Predecessor: 38
-> [248.768529] (7:node@Boivin) My finger table:
-> [248.768529] (7:node@Boivin) Start | Succ 
-> [248.768529] (7:node@Boivin)    9  |  38 
-> [248.768529] (7:node@Boivin)   10  |  38 
-> [248.768529] (7:node@Boivin)   12  |   8 
-> [248.768529] (7:node@Boivin)   16  |   8 
-> [248.768529] (7:node@Boivin)   24  |   8 
-> [248.768529] (7:node@Boivin)   40  |   8 
-> [248.768529] (7:node@Boivin) Predecessor: -1
-> [255.578816] (4:node@Geoff) My finger table:
-> [255.578816] (4:node@Geoff) Start | Succ 
-> [255.578816] (4:node@Geoff)   33  |  42 
-> [255.578816] (4:node@Geoff)   34  |  42 
-> [255.578816] (4:node@Geoff)   36  |  32 
-> [255.578816] (4:node@Geoff)   40  |  32 
-> [255.578816] (4:node@Geoff)   48  |  32 
-> [255.578816] (4:node@Geoff)    0  |  32 
-> [255.578816] (4:node@Geoff) Predecessor: -1
-> [268.081409] (8:node@Jacquelin) My finger table:
-> [268.081409] (8:node@Jacquelin) Start | Succ 
-> [268.081409] (8:node@Jacquelin)    2  |   8 
-> [268.081409] (8:node@Jacquelin)    3  |   8 
-> [268.081409] (8:node@Jacquelin)    5  |   1 
-> [268.081409] (8:node@Jacquelin)    9  |   1 
-> [268.081409] (8:node@Jacquelin)   17  |   1 
-> [268.081409] (8:node@Jacquelin)   33  |   1 
-> [268.081409] (8:node@Jacquelin) Predecessor: 48
-> [269.130295] (7:node@Boivin) My finger table:
-> [269.130295] (7:node@Boivin) Start | Succ 
-> [269.130295] (7:node@Boivin)    9  |  38 
-> [269.130295] (7:node@Boivin)   10  |  38 
-> [269.130295] (7:node@Boivin)   12  |   8 
-> [269.130295] (7:node@Boivin)   16  |   8 
-> [269.130295] (7:node@Boivin)   24  |   8 
-> [269.130295] (7:node@Boivin)   40  |   8 
-> [269.130295] (7:node@Boivin) Predecessor: 1
-> [272.405922] (3:node@iRMX) My finger table:
-> [272.405922] (3:node@iRMX) Start | Succ 
-> [272.405922] (3:node@iRMX)   39  |  42 
-> [272.405922] (3:node@iRMX)   40  |  42 
-> [272.405922] (3:node@iRMX)   42  |  38 
-> [272.405922] (3:node@iRMX)   46  |  38 
-> [272.405922] (3:node@iRMX)   54  |  38 
-> [272.405922] (3:node@iRMX)    6  |  38 
-> [272.405922] (3:node@iRMX) Predecessor: -1
-> [284.571217] (5:node@TeX) My finger table:
-> [284.571217] (5:node@TeX) Start | Succ 
-> [284.571217] (5:node@TeX)   22  |  38 
-> [284.571217] (5:node@TeX)   23  |  38 
-> [284.571217] (5:node@TeX)   25  |  21 
-> [284.571217] (5:node@TeX)   29  |  21 
-> [284.571217] (5:node@TeX)   37  |  21 
-> [284.571217] (5:node@TeX)   53  |  21 
-> [284.571217] (5:node@TeX) Predecessor: -1
-> [289.289472] (3:node@iRMX) My finger table:
-> [289.289472] (3:node@iRMX) Start | Succ 
-> [289.289472] (3:node@iRMX)   39  |  42 
-> [289.289472] (3:node@iRMX)   40  |  42 
-> [289.289472] (3:node@iRMX)   42  |  38 
-> [289.289472] (3:node@iRMX)   46  |  38 
-> [289.289472] (3:node@iRMX)   54  |  38 
-> [289.289472] (3:node@iRMX)    6  |  38 
-> [289.289472] (3:node@iRMX) Predecessor: 21
-> [305.097152] (6:node@Jean_Yves) My finger table:
-> [305.097152] (6:node@Jean_Yves) Start | Succ 
-> [305.097152] (6:node@Jean_Yves)   15  |  21 
-> [305.097152] (6:node@Jean_Yves)   16  |  21 
-> [305.097152] (6:node@Jean_Yves)   18  |  14 
-> [305.097152] (6:node@Jean_Yves)   22  |  14 
-> [305.097152] (6:node@Jean_Yves)   30  |  14 
-> [305.097152] (6:node@Jean_Yves)   46  |  14 
-> [305.097152] (6:node@Jean_Yves) Predecessor: -1
-> [313.745119] (3:node@iRMX) My finger table:
-> [313.745119] (3:node@iRMX) Start | Succ 
-> [313.745119] (3:node@iRMX)   39  |  42 
-> [313.745119] (3:node@iRMX)   40  |  42 
-> [313.745119] (3:node@iRMX)   42  |  38 
-> [313.745119] (3:node@iRMX)   46  |  38 
-> [313.745119] (3:node@iRMX)   54  |  38 
-> [313.745119] (3:node@iRMX)    6  |  38 
-> [313.745119] (3:node@iRMX) Predecessor: 32
-> [338.952043] (5:node@TeX) My finger table:
-> [338.952043] (5:node@TeX) Start | Succ 
-> [338.952043] (5:node@TeX)   22  |  32 
-> [338.952043] (5:node@TeX)   23  |  38 
-> [338.952043] (5:node@TeX)   25  |  21 
-> [338.952043] (5:node@TeX)   29  |  21 
-> [338.952043] (5:node@TeX)   37  |  21 
-> [338.952043] (5:node@TeX)   53  |  21 
-> [338.952043] (5:node@TeX) Predecessor: 14
-> [359.463171] (4:node@Geoff) My finger table:
-> [359.463171] (4:node@Geoff) Start | Succ 
-> [359.463171] (4:node@Geoff)   33  |  38 
-> [359.463171] (4:node@Geoff)   34  |  42 
-> [359.463171] (4:node@Geoff)   36  |  32 
-> [359.463171] (4:node@Geoff)   40  |  32 
-> [359.463171] (4:node@Geoff)   48  |  32 
-> [359.463171] (4:node@Geoff)    0  |  32 
-> [359.463171] (4:node@Geoff) Predecessor: 21
-> [365.649541] (1:node@Gatien) My finger table:
-> [365.649541] (1:node@Gatien) Start | Succ 
-> [365.649541] (1:node@Gatien)   49  |   1 
-> [365.649541] (1:node@Gatien)   50  |   1 
-> [365.649541] (1:node@Gatien)   52  |   1 
-> [365.649541] (1:node@Gatien)   56  |  48 
-> [365.649541] (1:node@Gatien)    0  |  48 
-> [365.649541] (1:node@Gatien)   16  |  48 
-> [365.649541] (1:node@Gatien) Predecessor: 42
-> [367.870562] (2:node@McGee) My finger table:
-> [367.870562] (2:node@McGee) Start | Succ 
-> [367.870562] (2:node@McGee)   43  |  48 
-> [367.870562] (2:node@McGee)   44  |  48 
-> [367.870562] (2:node@McGee)   46  |  48 
-> [367.870562] (2:node@McGee)   50  |  42 
-> [367.870562] (2:node@McGee)   58  |  42 
-> [367.870562] (2:node@McGee)   10  |  42 
-> [367.870562] (2:node@McGee) Predecessor: 38
-> [371.550256] (7:node@Boivin) My finger table:
-> [371.550256] (7:node@Boivin) Start | Succ 
-> [371.550256] (7:node@Boivin)    9  |  21 
-> [371.550256] (7:node@Boivin)   10  |  38 
-> [371.550256] (7:node@Boivin)   12  |  21 
-> [371.550256] (7:node@Boivin)   16  |   8 
-> [371.550256] (7:node@Boivin)   24  |   8 
-> [371.550256] (7:node@Boivin)   40  |   8 
-> [371.550256] (7:node@Boivin) Predecessor: 1
-> [388.564180] (4:node@Geoff) My finger table:
-> [388.564180] (4:node@Geoff) Start | Succ 
-> [388.564180] (4:node@Geoff)   33  |  38 
-> [388.564180] (4:node@Geoff)   34  |  42 
-> [388.564180] (4:node@Geoff)   36  |  38 
-> [388.564180] (4:node@Geoff)   40  |  32 
-> [388.564180] (4:node@Geoff)   48  |  32 
-> [388.564180] (4:node@Geoff)    0  |  32 
-> [388.564180] (4:node@Geoff) Predecessor: 21
-> [389.021761] (8:node@Jacquelin) My finger table:
-> [389.021761] (8:node@Jacquelin) Start | Succ 
-> [389.021761] (8:node@Jacquelin)    2  |   8 
-> [389.021761] (8:node@Jacquelin)    3  |   8 
-> [389.021761] (8:node@Jacquelin)    5  |   8 
-> [389.021761] (8:node@Jacquelin)    9  |   1 
-> [389.021761] (8:node@Jacquelin)   17  |   1 
-> [389.021761] (8:node@Jacquelin)   33  |   1 
-> [389.021761] (8:node@Jacquelin) Predecessor: 48
-> [393.088792] (3:node@iRMX) My finger table:
-> [393.088792] (3:node@iRMX) Start | Succ 
-> [393.088792] (3:node@iRMX)   39  |  42 
-> [393.088792] (3:node@iRMX)   40  |  42 
-> [393.088792] (3:node@iRMX)   42  |  42 
-> [393.088792] (3:node@iRMX)   46  |  38 
-> [393.088792] (3:node@iRMX)   54  |  38 
-> [393.088792] (3:node@iRMX)    6  |  38 
-> [393.088792] (3:node@iRMX) Predecessor: 32
-> [412.961743] (5:node@TeX) My finger table:
-> [412.961743] (5:node@TeX) Start | Succ 
-> [412.961743] (5:node@TeX)   22  |  32 
-> [412.961743] (5:node@TeX)   23  |  38 
-> [412.961743] (5:node@TeX)   25  |  32 
-> [412.961743] (5:node@TeX)   29  |  21 
-> [412.961743] (5:node@TeX)   37  |  21 
-> [412.961743] (5:node@TeX)   53  |  21 
-> [412.961743] (5:node@TeX) Predecessor: 14
-> [434.596538] (6:node@Jean_Yves) My finger table:
-> [434.596538] (6:node@Jean_Yves) Start | Succ 
-> [434.596538] (6:node@Jean_Yves)   15  |  21 
-> [434.596538] (6:node@Jean_Yves)   16  |  21 
-> [434.596538] (6:node@Jean_Yves)   18  |  14 
-> [434.596538] (6:node@Jean_Yves)   22  |  14 
-> [434.596538] (6:node@Jean_Yves)   30  |  14 
-> [434.596538] (6:node@Jean_Yves)   46  |  14 
-> [434.596538] (6:node@Jean_Yves) Predecessor: 8
-> [443.806985] (6:node@Jean_Yves) My finger table:
-> [443.806985] (6:node@Jean_Yves) Start | Succ 
-> [443.806985] (6:node@Jean_Yves)   15  |  21 
-> [443.806985] (6:node@Jean_Yves)   16  |  21 
-> [443.806985] (6:node@Jean_Yves)   18  |  21 
-> [443.806985] (6:node@Jean_Yves)   22  |  14 
-> [443.806985] (6:node@Jean_Yves)   30  |  14 
-> [443.806985] (6:node@Jean_Yves)   46  |  14 
-> [443.806985] (6:node@Jean_Yves) Predecessor: 8
-> [488.763655] (1:node@Gatien) My finger table:
-> [488.763655] (1:node@Gatien) Start | Succ 
-> [488.763655] (1:node@Gatien)   49  |   1 
-> [488.763655] (1:node@Gatien)   50  |   1 
-> [488.763655] (1:node@Gatien)   52  |   1 
-> [488.763655] (1:node@Gatien)   56  |   1 
-> [488.763655] (1:node@Gatien)    0  |  48 
-> [488.763655] (1:node@Gatien)   16  |  48 
-> [488.763655] (1:node@Gatien) Predecessor: 42
-> [502.910503] (2:node@McGee) My finger table:
-> [502.910503] (2:node@McGee) Start | Succ 
-> [502.910503] (2:node@McGee)   43  |  48 
-> [502.910503] (2:node@McGee)   44  |  48 
-> [502.910503] (2:node@McGee)   46  |  48 
-> [502.910503] (2:node@McGee)   50  |   1 
-> [502.910503] (2:node@McGee)   58  |  42 
-> [502.910503] (2:node@McGee)   10  |  42 
-> [502.910503] (2:node@McGee) Predecessor: 38
-> [511.133139] (8:node@Jacquelin) My finger table:
-> [511.133139] (8:node@Jacquelin) Start | Succ 
-> [511.133139] (8:node@Jacquelin)    2  |   8 
-> [511.133139] (8:node@Jacquelin)    3  |   8 
-> [511.133139] (8:node@Jacquelin)    5  |   8 
-> [511.133139] (8:node@Jacquelin)    9  |  14 
-> [511.133139] (8:node@Jacquelin)   17  |   1 
-> [511.133139] (8:node@Jacquelin)   33  |   1 
-> [511.133139] (8:node@Jacquelin) Predecessor: 48
-> [528.169821] (7:node@Boivin) My finger table:
-> [528.169821] (7:node@Boivin) Start | Succ 
-> [528.169821] (7:node@Boivin)    9  |  14 
-> [528.169821] (7:node@Boivin)   10  |  38 
-> [528.169821] (7:node@Boivin)   12  |  21 
-> [528.169821] (7:node@Boivin)   16  |  21 
-> [528.169821] (7:node@Boivin)   24  |   8 
-> [528.169821] (7:node@Boivin)   40  |   8 
-> [528.169821] (7:node@Boivin) Predecessor: 1
-> [538.778249] (3:node@iRMX) My finger table:
-> [538.778249] (3:node@iRMX) Start | Succ 
-> [538.778249] (3:node@iRMX)   39  |  42 
-> [538.778249] (3:node@iRMX)   40  |  42 
-> [538.778249] (3:node@iRMX)   42  |  42 
-> [538.778249] (3:node@iRMX)   46  |  48 
-> [538.778249] (3:node@iRMX)   54  |  38 
-> [538.778249] (3:node@iRMX)    6  |  38 
-> [538.778249] (3:node@iRMX) Predecessor: 32
-> [561.853873] (5:node@TeX) My finger table:
-> [561.853873] (5:node@TeX) Start | Succ 
-> [561.853873] (5:node@TeX)   22  |  32 
-> [561.853873] (5:node@TeX)   23  |  38 
-> [561.853873] (5:node@TeX)   25  |  32 
-> [561.853873] (5:node@TeX)   29  |  32 
-> [561.853873] (5:node@TeX)   37  |  21 
-> [561.853873] (5:node@TeX)   53  |  21 
-> [561.853873] (5:node@TeX) Predecessor: 14
-> [564.892208] (4:node@Geoff) My finger table:
-> [564.892208] (4:node@Geoff) Start | Succ 
-> [564.892208] (4:node@Geoff)   33  |  38 
-> [564.892208] (4:node@Geoff)   34  |  42 
-> [564.892208] (4:node@Geoff)   36  |  38 
-> [564.892208] (4:node@Geoff)   40  |  42 
-> [564.892208] (4:node@Geoff)   48  |  32 
-> [564.892208] (4:node@Geoff)    0  |  32 
-> [564.892208] (4:node@Geoff) Predecessor: 21
-> [580.440544] (6:node@Jean_Yves) My finger table:
-> [580.440544] (6:node@Jean_Yves) Start | Succ 
-> [580.440544] (6:node@Jean_Yves)   15  |  21 
-> [580.440544] (6:node@Jean_Yves)   16  |  21 
-> [580.440544] (6:node@Jean_Yves)   18  |  21 
-> [580.440544] (6:node@Jean_Yves)   22  |  32 
-> [580.440544] (6:node@Jean_Yves)   30  |  14 
-> [580.440544] (6:node@Jean_Yves)   46  |  14 
-> [580.440544] (6:node@Jean_Yves) Predecessor: 8
-> [805.312658] (0:@) Messages created: 789
-> [805.312658] (0:@) Simulated time: 805.313
+> [  6.274348] (1:node@Gatien) My finger table:
+> [  6.274348] (1:node@Gatien) Start | Succ 
+> [  6.274348] (1:node@Gatien)   49  |   1 
+> [  6.274348] (1:node@Gatien)   50  |  48 
+> [  6.274348] (1:node@Gatien)   52  |  48 
+> [  6.274348] (1:node@Gatien)   56  |  48 
+> [  6.274348] (1:node@Gatien)    0  |  48 
+> [  6.274348] (1:node@Gatien)   16  |  48 
+> [  6.274348] (1:node@Gatien) Predecessor: -1
+> [ 10.888156] (2:node@McGee) My finger table:
+> [ 10.888156] (2:node@McGee) Start | Succ 
+> [ 10.888156] (2:node@McGee)   43  |   1 
+> [ 10.888156] (2:node@McGee)   44  |  42 
+> [ 10.888156] (2:node@McGee)   46  |  42 
+> [ 10.888156] (2:node@McGee)   50  |  42 
+> [ 10.888156] (2:node@McGee)   58  |  42 
+> [ 10.888156] (2:node@McGee)   10  |  42 
+> [ 10.888156] (2:node@McGee) Predecessor: -1
+> [ 18.043375] (3:node@iRMX) My finger table:
+> [ 18.043375] (3:node@iRMX) Start | Succ 
+> [ 18.043375] (3:node@iRMX)   39  |   1 
+> [ 18.043375] (3:node@iRMX)   40  |  38 
+> [ 18.043375] (3:node@iRMX)   42  |  38 
+> [ 18.043375] (3:node@iRMX)   46  |  38 
+> [ 18.043375] (3:node@iRMX)   54  |  38 
+> [ 18.043375] (3:node@iRMX)    6  |  38 
+> [ 18.043375] (3:node@iRMX) Predecessor: -1
+> [ 20.004944] (4:node@Geoff) My finger table:
+> [ 20.004944] (4:node@Geoff) Start | Succ 
+> [ 20.004944] (4:node@Geoff)   33  |   1 
+> [ 20.004944] (4:node@Geoff)   34  |  32 
+> [ 20.004944] (4:node@Geoff)   36  |  32 
+> [ 20.004944] (4:node@Geoff)   40  |  32 
+> [ 20.004944] (4:node@Geoff)   48  |  32 
+> [ 20.004944] (4:node@Geoff)    0  |  32 
+> [ 20.004944] (4:node@Geoff) Predecessor: -1
+> [ 26.812102] (5:node@TeX) My finger table:
+> [ 26.812102] (5:node@TeX) Start | Succ 
+> [ 26.812102] (5:node@TeX)   22  |   1 
+> [ 26.812102] (5:node@TeX)   23  |  21 
+> [ 26.812102] (5:node@TeX)   25  |  21 
+> [ 26.812102] (5:node@TeX)   29  |  21 
+> [ 26.812102] (5:node@TeX)   37  |  21 
+> [ 26.812102] (5:node@TeX)   53  |  21 
+> [ 26.812102] (5:node@TeX) Predecessor: -1
+> [ 30.924531] (6:node@Jean_Yves) My finger table:
+> [ 30.924531] (6:node@Jean_Yves) Start | Succ 
+> [ 30.924531] (6:node@Jean_Yves)   15  |   1 
+> [ 30.924531] (6:node@Jean_Yves)   16  |  14 
+> [ 30.924531] (6:node@Jean_Yves)   18  |  14 
+> [ 30.924531] (6:node@Jean_Yves)   22  |  14 
+> [ 30.924531] (6:node@Jean_Yves)   30  |  14 
+> [ 30.924531] (6:node@Jean_Yves)   46  |  14 
+> [ 30.924531] (6:node@Jean_Yves) Predecessor: -1
+> [ 36.048186] (7:node@Boivin) My finger table:
+> [ 36.048186] (7:node@Boivin) Start | Succ 
+> [ 36.048186] (7:node@Boivin)    9  |   1 
+> [ 36.048186] (7:node@Boivin)   10  |   8 
+> [ 36.048186] (7:node@Boivin)   12  |   8 
+> [ 36.048186] (7:node@Boivin)   16  |   8 
+> [ 36.048186] (7:node@Boivin)   24  |   8 
+> [ 36.048186] (7:node@Boivin)   40  |   8 
+> [ 36.048186] (7:node@Boivin) Predecessor: -1
+> [ 74.998500] (8:node@Jacquelin) My finger table:
+> [ 74.998500] (8:node@Jacquelin) Start | Succ 
+> [ 74.998500] (8:node@Jacquelin)    2  |   1 
+> [ 74.998500] (8:node@Jacquelin)    3  |   1 
+> [ 74.998500] (8:node@Jacquelin)    5  |   1 
+> [ 74.998500] (8:node@Jacquelin)    9  |   1 
+> [ 74.998500] (8:node@Jacquelin)   17  |   1 
+> [ 74.998500] (8:node@Jacquelin)   33  |   1 
+> [ 74.998500] (8:node@Jacquelin) Predecessor: 32
+> [ 75.886856] (8:node@Jacquelin) My finger table:
+> [ 75.886856] (8:node@Jacquelin) Start | Succ 
+> [ 75.886856] (8:node@Jacquelin)    2  |  32 
+> [ 75.886856] (8:node@Jacquelin)    3  |   1 
+> [ 75.886856] (8:node@Jacquelin)    5  |   1 
+> [ 75.886856] (8:node@Jacquelin)    9  |   1 
+> [ 75.886856] (8:node@Jacquelin)   17  |   1 
+> [ 75.886856] (8:node@Jacquelin)   33  |   1 
+> [ 75.886856] (8:node@Jacquelin) Predecessor: 42
+> [ 77.161304] (8:node@Jacquelin) My finger table:
+> [ 77.161304] (8:node@Jacquelin) Start | Succ 
+> [ 77.161304] (8:node@Jacquelin)    2  |  32 
+> [ 77.161304] (8:node@Jacquelin)    3  |   1 
+> [ 77.161304] (8:node@Jacquelin)    5  |   1 
+> [ 77.161304] (8:node@Jacquelin)    9  |   1 
+> [ 77.161304] (8:node@Jacquelin)   17  |   1 
+> [ 77.161304] (8:node@Jacquelin)   33  |   1 
+> [ 77.161304] (8:node@Jacquelin) Predecessor: 48
+> [102.428555] (4:node@Geoff) My finger table:
+> [102.428555] (4:node@Geoff) Start | Succ 
+> [102.428555] (4:node@Geoff)   33  |  48 
+> [102.428555] (4:node@Geoff)   34  |  32 
+> [102.428555] (4:node@Geoff)   36  |  32 
+> [102.428555] (4:node@Geoff)   40  |  32 
+> [102.428555] (4:node@Geoff)   48  |  32 
+> [102.428555] (4:node@Geoff)    0  |  32 
+> [102.428555] (4:node@Geoff) Predecessor: 1
+> [128.446154] (1:node@Gatien) My finger table:
+> [128.446154] (1:node@Gatien) Start | Succ 
+> [128.446154] (1:node@Gatien)   49  |   1 
+> [128.446154] (1:node@Gatien)   50  |  48 
+> [128.446154] (1:node@Gatien)   52  |  48 
+> [128.446154] (1:node@Gatien)   56  |  48 
+> [128.446154] (1:node@Gatien)    0  |  48 
+> [128.446154] (1:node@Gatien)   16  |  48 
+> [128.446154] (1:node@Gatien) Predecessor: 32
+> [138.445954] (1:node@Gatien) My finger table:
+> [138.445954] (1:node@Gatien) Start | Succ 
+> [138.445954] (1:node@Gatien)   49  |   1 
+> [138.445954] (1:node@Gatien)   50  |  48 
+> [138.445954] (1:node@Gatien)   52  |  48 
+> [138.445954] (1:node@Gatien)   56  |  48 
+> [138.445954] (1:node@Gatien)    0  |  48 
+> [138.445954] (1:node@Gatien)   16  |  48 
+> [138.445954] (1:node@Gatien) Predecessor: 42
+> [211.728421] (2:node@McGee) My finger table:
+> [211.728421] (2:node@McGee) Start | Succ 
+> [211.728421] (2:node@McGee)   43  |  48 
+> [211.728421] (2:node@McGee)   44  |  42 
+> [211.728421] (2:node@McGee)   46  |  42 
+> [211.728421] (2:node@McGee)   50  |  42 
+> [211.728421] (2:node@McGee)   58  |  42 
+> [211.728421] (2:node@McGee)   10  |  42 
+> [211.728421] (2:node@McGee) Predecessor: 38
+> [248.221993] (1:node@Gatien) My finger table:
+> [248.221993] (1:node@Gatien) Start | Succ 
+> [248.221993] (1:node@Gatien)   49  |   1 
+> [248.221993] (1:node@Gatien)   50  |   1 
+> [248.221993] (1:node@Gatien)   52  |  48 
+> [248.221993] (1:node@Gatien)   56  |  48 
+> [248.221993] (1:node@Gatien)    0  |  48 
+> [248.221993] (1:node@Gatien)   16  |  48 
+> [248.221993] (1:node@Gatien) Predecessor: 42
+> [251.135518] (7:node@Boivin) My finger table:
+> [251.135518] (7:node@Boivin) Start | Succ 
+> [251.135518] (7:node@Boivin)    9  |  38 
+> [251.135518] (7:node@Boivin)   10  |  38 
+> [251.135518] (7:node@Boivin)   12  |   8 
+> [251.135518] (7:node@Boivin)   16  |   8 
+> [251.135518] (7:node@Boivin)   24  |   8 
+> [251.135518] (7:node@Boivin)   40  |   8 
+> [251.135518] (7:node@Boivin) Predecessor: -1
+> [259.451693] (2:node@McGee) My finger table:
+> [259.451693] (2:node@McGee) Start | Succ 
+> [259.451693] (2:node@McGee)   43  |  48 
+> [259.451693] (2:node@McGee)   44  |  48 
+> [259.451693] (2:node@McGee)   46  |  42 
+> [259.451693] (2:node@McGee)   50  |  42 
+> [259.451693] (2:node@McGee)   58  |  42 
+> [259.451693] (2:node@McGee)   10  |  42 
+> [259.451693] (2:node@McGee) Predecessor: 38
+> [309.452319] (4:node@Geoff) My finger table:
+> [309.452319] (4:node@Geoff) Start | Succ 
+> [309.452319] (4:node@Geoff)   33  |  38 
+> [309.452319] (4:node@Geoff)   34  |  38 
+> [309.452319] (4:node@Geoff)   36  |  32 
+> [309.452319] (4:node@Geoff)   40  |  32 
+> [309.452319] (4:node@Geoff)   48  |  32 
+> [309.452319] (4:node@Geoff)    0  |  32 
+> [309.452319] (4:node@Geoff) Predecessor: 1
+> [309.457663] (8:node@Jacquelin) My finger table:
+> [309.457663] (8:node@Jacquelin) Start | Succ 
+> [309.457663] (8:node@Jacquelin)    2  |  32 
+> [309.457663] (8:node@Jacquelin)    3  |  32 
+> [309.457663] (8:node@Jacquelin)    5  |   1 
+> [309.457663] (8:node@Jacquelin)    9  |   1 
+> [309.457663] (8:node@Jacquelin)   17  |   1 
+> [309.457663] (8:node@Jacquelin)   33  |   1 
+> [309.457663] (8:node@Jacquelin) Predecessor: 48
+> [323.904249] (6:node@Jean_Yves) My finger table:
+> [323.904249] (6:node@Jean_Yves) Start | Succ 
+> [323.904249] (6:node@Jean_Yves)   15  |  38 
+> [323.904249] (6:node@Jean_Yves)   16  |  38 
+> [323.904249] (6:node@Jean_Yves)   18  |  14 
+> [323.904249] (6:node@Jean_Yves)   22  |  14 
+> [323.904249] (6:node@Jean_Yves)   30  |  14 
+> [323.904249] (6:node@Jean_Yves)   46  |  14 
+> [323.904249] (6:node@Jean_Yves) Predecessor: -1
+> [325.353251] (3:node@iRMX) My finger table:
+> [325.353251] (3:node@iRMX) Start | Succ 
+> [325.353251] (3:node@iRMX)   39  |  42 
+> [325.353251] (3:node@iRMX)   40  |  38 
+> [325.353251] (3:node@iRMX)   42  |  38 
+> [325.353251] (3:node@iRMX)   46  |  38 
+> [325.353251] (3:node@iRMX)   54  |  38 
+> [325.353251] (3:node@iRMX)    6  |  38 
+> [325.353251] (3:node@iRMX) Predecessor: 32
+> [330.576799] (3:node@iRMX) My finger table:
+> [330.576799] (3:node@iRMX) Start | Succ 
+> [330.576799] (3:node@iRMX)   39  |  42 
+> [330.576799] (3:node@iRMX)   40  |  42 
+> [330.576799] (3:node@iRMX)   42  |  38 
+> [330.576799] (3:node@iRMX)   46  |  38 
+> [330.576799] (3:node@iRMX)   54  |  38 
+> [330.576799] (3:node@iRMX)    6  |  38 
+> [330.576799] (3:node@iRMX) Predecessor: 32
+> [352.615320] (5:node@TeX) My finger table:
+> [352.615320] (5:node@TeX) Start | Succ 
+> [352.615320] (5:node@TeX)   22  |  32 
+> [352.615320] (5:node@TeX)   23  |  32 
+> [352.615320] (5:node@TeX)   25  |  21 
+> [352.615320] (5:node@TeX)   29  |  21 
+> [352.615320] (5:node@TeX)   37  |  21 
+> [352.615320] (5:node@TeX)   53  |  21 
+> [352.615320] (5:node@TeX) Predecessor: -1
+> [369.575244] (1:node@Gatien) My finger table:
+> [369.575244] (1:node@Gatien) Start | Succ 
+> [369.575244] (1:node@Gatien)   49  |   1 
+> [369.575244] (1:node@Gatien)   50  |   1 
+> [369.575244] (1:node@Gatien)   52  |   1 
+> [369.575244] (1:node@Gatien)   56  |  48 
+> [369.575244] (1:node@Gatien)    0  |  48 
+> [369.575244] (1:node@Gatien)   16  |  48 
+> [369.575244] (1:node@Gatien) Predecessor: 42
+> [382.882723] (2:node@McGee) My finger table:
+> [382.882723] (2:node@McGee) Start | Succ 
+> [382.882723] (2:node@McGee)   43  |  48 
+> [382.882723] (2:node@McGee)   44  |  48 
+> [382.882723] (2:node@McGee)   46  |  48 
+> [382.882723] (2:node@McGee)   50  |  42 
+> [382.882723] (2:node@McGee)   58  |  42 
+> [382.882723] (2:node@McGee)   10  |  42 
+> [382.882723] (2:node@McGee) Predecessor: 38
+> [384.345510] (4:node@Geoff) My finger table:
+> [384.345510] (4:node@Geoff) Start | Succ 
+> [384.345510] (4:node@Geoff)   33  |  38 
+> [384.345510] (4:node@Geoff)   34  |  38 
+> [384.345510] (4:node@Geoff)   36  |  32 
+> [384.345510] (4:node@Geoff)   40  |  32 
+> [384.345510] (4:node@Geoff)   48  |  32 
+> [384.345510] (4:node@Geoff)    0  |  32 
+> [384.345510] (4:node@Geoff) Predecessor: 21
+> [420.326446] (7:node@Boivin) My finger table:
+> [420.326446] (7:node@Boivin) Start | Succ 
+> [420.326446] (7:node@Boivin)    9  |  21 
+> [420.326446] (7:node@Boivin)   10  |  38 
+> [420.326446] (7:node@Boivin)   12  |  21 
+> [420.326446] (7:node@Boivin)   16  |   8 
+> [420.326446] (7:node@Boivin)   24  |   8 
+> [420.326446] (7:node@Boivin)   40  |   8 
+> [420.326446] (7:node@Boivin) Predecessor: -1
+> [440.893903] (5:node@TeX) My finger table:
+> [440.893903] (5:node@TeX) Start | Succ 
+> [440.893903] (5:node@TeX)   22  |  32 
+> [440.893903] (5:node@TeX)   23  |  32 
+> [440.893903] (5:node@TeX)   25  |  21 
+> [440.893903] (5:node@TeX)   29  |  21 
+> [440.893903] (5:node@TeX)   37  |  21 
+> [440.893903] (5:node@TeX)   53  |  21 
+> [440.893903] (5:node@TeX) Predecessor: 14
+> [479.759018] (3:node@iRMX) My finger table:
+> [479.759018] (3:node@iRMX) Start | Succ 
+> [479.759018] (3:node@iRMX)   39  |  42 
+> [479.759018] (3:node@iRMX)   40  |  42 
+> [479.759018] (3:node@iRMX)   42  |  42 
+> [479.759018] (3:node@iRMX)   46  |  38 
+> [479.759018] (3:node@iRMX)   54  |  38 
+> [479.759018] (3:node@iRMX)    6  |  38 
+> [479.759018] (3:node@iRMX) Predecessor: 32
+> [482.033272] (4:node@Geoff) My finger table:
+> [482.033272] (4:node@Geoff) Start | Succ 
+> [482.033272] (4:node@Geoff)   33  |  38 
+> [482.033272] (4:node@Geoff)   34  |  38 
+> [482.033272] (4:node@Geoff)   36  |  38 
+> [482.033272] (4:node@Geoff)   40  |  32 
+> [482.033272] (4:node@Geoff)   48  |  32 
+> [482.033272] (4:node@Geoff)    0  |  32 
+> [482.033272] (4:node@Geoff) Predecessor: 21
+> [490.659190] (1:node@Gatien) My finger table:
+> [490.659190] (1:node@Gatien) Start | Succ 
+> [490.659190] (1:node@Gatien)   49  |   1 
+> [490.659190] (1:node@Gatien)   50  |   1 
+> [490.659190] (1:node@Gatien)   52  |   1 
+> [490.659190] (1:node@Gatien)   56  |   1 
+> [490.659190] (1:node@Gatien)    0  |  48 
+> [490.659190] (1:node@Gatien)   16  |  48 
+> [490.659190] (1:node@Gatien) Predecessor: 42
+> [498.176314] (3:node@iRMX) My finger table:
+> [498.176314] (3:node@iRMX) Start | Succ 
+> [498.176314] (3:node@iRMX)   39  |  42 
+> [498.176314] (3:node@iRMX)   40  |  42 
+> [498.176314] (3:node@iRMX)   42  |  42 
+> [498.176314] (3:node@iRMX)   46  |  38 
+> [498.176314] (3:node@iRMX)   54  |  38 
+> [498.176314] (3:node@iRMX)    6  |  38 
+> [498.176314] (3:node@iRMX) Predecessor: 32
+> [498.611193] (6:node@Jean_Yves) My finger table:
+> [498.611193] (6:node@Jean_Yves) Start | Succ 
+> [498.611193] (6:node@Jean_Yves)   15  |  21 
+> [498.611193] (6:node@Jean_Yves)   16  |  38 
+> [498.611193] (6:node@Jean_Yves)   18  |  21 
+> [498.611193] (6:node@Jean_Yves)   22  |  14 
+> [498.611193] (6:node@Jean_Yves)   30  |  14 
+> [498.611193] (6:node@Jean_Yves)   46  |  14 
+> [498.611193] (6:node@Jean_Yves) Predecessor: -1
+> [500.558742] (8:node@Jacquelin) My finger table:
+> [500.558742] (8:node@Jacquelin) Start | Succ 
+> [500.558742] (8:node@Jacquelin)    2  |  14 
+> [500.558742] (8:node@Jacquelin)    3  |  32 
+> [500.558742] (8:node@Jacquelin)    5  |  14 
+> [500.558742] (8:node@Jacquelin)    9  |   1 
+> [500.558742] (8:node@Jacquelin)   17  |   1 
+> [500.558742] (8:node@Jacquelin)   33  |   1 
+> [500.558742] (8:node@Jacquelin) Predecessor: 48
+> [505.760908] (2:node@McGee) My finger table:
+> [505.760908] (2:node@McGee) Start | Succ 
+> [505.760908] (2:node@McGee)   43  |  48 
+> [505.760908] (2:node@McGee)   44  |  48 
+> [505.760908] (2:node@McGee)   46  |  48 
+> [505.760908] (2:node@McGee)   50  |   1 
+> [505.760908] (2:node@McGee)   58  |  42 
+> [505.760908] (2:node@McGee)   10  |  42 
+> [505.760908] (2:node@McGee) Predecessor: 38
+> [509.829088] (5:node@TeX) My finger table:
+> [509.829088] (5:node@TeX) Start | Succ 
+> [509.829088] (5:node@TeX)   22  |  32 
+> [509.829088] (5:node@TeX)   23  |  32 
+> [509.829088] (5:node@TeX)   25  |  32 
+> [509.829088] (5:node@TeX)   29  |  21 
+> [509.829088] (5:node@TeX)   37  |  21 
+> [509.829088] (5:node@TeX)   53  |  21 
+> [509.829088] (5:node@TeX) Predecessor: 14
+> [533.786389] (6:node@Jean_Yves) My finger table:
+> [533.786389] (6:node@Jean_Yves) Start | Succ 
+> [533.786389] (6:node@Jean_Yves)   15  |  21 
+> [533.786389] (6:node@Jean_Yves)   16  |  38 
+> [533.786389] (6:node@Jean_Yves)   18  |  21 
+> [533.786389] (6:node@Jean_Yves)   22  |  14 
+> [533.786389] (6:node@Jean_Yves)   30  |  14 
+> [533.786389] (6:node@Jean_Yves)   46  |  14 
+> [533.786389] (6:node@Jean_Yves) Predecessor: 8
+> [549.075353] (7:node@Boivin) My finger table:
+> [549.075353] (7:node@Boivin) Start | Succ 
+> [549.075353] (7:node@Boivin)    9  |  14 
+> [549.075353] (7:node@Boivin)   10  |  38 
+> [549.075353] (7:node@Boivin)   12  |  21 
+> [549.075353] (7:node@Boivin)   16  |  21 
+> [549.075353] (7:node@Boivin)   24  |   8 
+> [549.075353] (7:node@Boivin)   40  |   8 
+> [549.075353] (7:node@Boivin) Predecessor: -1
+> [753.389688] (0:@) Messages created: 605
+> [753.389688] (0:@) Simulated time: 753.39
 
 ! output sort
 $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.xml ${srcdir:=.}/chord10.xml --log=msg_chord.thres:verbose "--log=root.fmt:[%11.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:Constant
@@ -567,2408 +513,2327 @@ $ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.
 > [   5.000000] (8:node@c-7.me)  14199064  | 10004760 
 > [   5.000000] (8:node@c-7.me)  1616152  | 10004760 
 > [   5.000000] (8:node@c-7.me) Predecessor: -1
-> [   6.000000] (2:node@c-1.me) My finger table:
-> [   6.000000] (2:node@c-1.me) Start | Succ 
-> [   6.000000] (2:node@c-1.me)  366681  |  42 
-> [   6.000000] (2:node@c-1.me)  366682  | 366680 
-> [   6.000000] (2:node@c-1.me)  366684  | 366680 
-> [   6.000000] (2:node@c-1.me)  366688  | 366680 
-> [   6.000000] (2:node@c-1.me)  366696  | 366680 
-> [   6.000000] (2:node@c-1.me)  366712  | 366680 
-> [   6.000000] (2:node@c-1.me)  366744  | 366680 
-> [   6.000000] (2:node@c-1.me)  366808  | 366680 
-> [   6.000000] (2:node@c-1.me)  366936  | 366680 
-> [   6.000000] (2:node@c-1.me)  367192  | 366680 
-> [   6.000000] (2:node@c-1.me)  367704  | 366680 
-> [   6.000000] (2:node@c-1.me)  368728  | 366680 
-> [   6.000000] (2:node@c-1.me)  370776  | 366680 
-> [   6.000000] (2:node@c-1.me)  374872  | 366680 
-> [   6.000000] (2:node@c-1.me)  383064  | 366680 
-> [   6.000000] (2:node@c-1.me)  399448  | 366680 
-> [   6.000000] (2:node@c-1.me)  432216  | 366680 
-> [   6.000000] (2:node@c-1.me)  497752  | 366680 
-> [   6.000000] (2:node@c-1.me)  628824  | 366680 
-> [   6.000000] (2:node@c-1.me)  890968  | 366680 
-> [   6.000000] (2:node@c-1.me)  1415256  | 366680 
-> [   6.000000] (2:node@c-1.me)  2463832  | 366680 
-> [   6.000000] (2:node@c-1.me)  4560984  | 366680 
-> [   6.000000] (2:node@c-1.me)  8755288  | 366680 
-> [   6.000000] (2:node@c-1.me) Predecessor: -1
-> [   8.000000] (7:node@c-6.me) My finger table:
-> [   8.000000] (7:node@c-6.me) Start | Succ 
-> [   8.000000] (7:node@c-6.me)  16728097  | 1319738 
-> [   8.000000] (7:node@c-6.me)  16728098  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728100  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [   8.000000] (7:node@c-6.me)  16416  | 16728096 
-> [   8.000000] (7:node@c-6.me)  81952  | 16728096 
-> [   8.000000] (7:node@c-6.me)  213024  | 16728096 
-> [   8.000000] (7:node@c-6.me)  475168  | 16728096 
-> [   8.000000] (7:node@c-6.me)  999456  | 16728096 
-> [   8.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [   8.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [   8.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [   8.000000] (7:node@c-6.me) Predecessor: -1
-> [   9.000000] (10:node@c-9.me) My finger table:
-> [   9.000000] (10:node@c-9.me) Start | Succ 
-> [   9.000000] (10:node@c-9.me)  2015254  | 1319738 
-> [   9.000000] (10:node@c-9.me)  2015255  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015257  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015261  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [   9.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [   9.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [   9.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [   9.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [   9.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [   9.000000] (10:node@c-9.me) Predecessor: -1
-> [  11.000000] (4:node@c-3.me) My finger table:
-> [  11.000000] (4:node@c-3.me) Start | Succ 
-> [  11.000000] (4:node@c-3.me)  1319739  |  42 
-> [  11.000000] (4:node@c-3.me)  1319740  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [  11.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [  11.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [  11.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [  11.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [  11.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [  11.000000] (4:node@c-3.me) Predecessor: -1
-> [  16.000000] (9:node@c-8.me) My finger table:
-> [  16.000000] (9:node@c-8.me) Start | Succ 
-> [  16.000000] (9:node@c-8.me)  6518809  |  42 
-> [  16.000000] (9:node@c-8.me)  6518810  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [  16.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [  16.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [  16.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [  16.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [  16.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [  16.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [  16.000000] (9:node@c-8.me) Predecessor: -1
-> [  26.000000] (4:node@c-3.me) My finger table:
-> [  26.000000] (4:node@c-3.me) Start | Succ 
-> [  26.000000] (4:node@c-3.me)  1319739  |  42 
-> [  26.000000] (4:node@c-3.me)  1319740  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [  26.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [  26.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [  26.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [  26.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [  26.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [  26.000000] (4:node@c-3.me) Predecessor: 16728096
-> [  31.000000] (2:node@c-1.me) My finger table:
-> [  31.000000] (2:node@c-1.me) Start | Succ 
-> [  31.000000] (2:node@c-1.me)  366681  |  42 
-> [  31.000000] (2:node@c-1.me)  366682  | 366680 
-> [  31.000000] (2:node@c-1.me)  366684  | 366680 
-> [  31.000000] (2:node@c-1.me)  366688  | 366680 
-> [  31.000000] (2:node@c-1.me)  366696  | 366680 
-> [  31.000000] (2:node@c-1.me)  366712  | 366680 
-> [  31.000000] (2:node@c-1.me)  366744  | 366680 
-> [  31.000000] (2:node@c-1.me)  366808  | 366680 
-> [  31.000000] (2:node@c-1.me)  366936  | 366680 
-> [  31.000000] (2:node@c-1.me)  367192  | 366680 
-> [  31.000000] (2:node@c-1.me)  367704  | 366680 
-> [  31.000000] (2:node@c-1.me)  368728  | 366680 
-> [  31.000000] (2:node@c-1.me)  370776  | 366680 
-> [  31.000000] (2:node@c-1.me)  374872  | 366680 
-> [  31.000000] (2:node@c-1.me)  383064  | 366680 
-> [  31.000000] (2:node@c-1.me)  399448  | 366680 
-> [  31.000000] (2:node@c-1.me)  432216  | 366680 
-> [  31.000000] (2:node@c-1.me)  497752  | 366680 
-> [  31.000000] (2:node@c-1.me)  628824  | 366680 
-> [  31.000000] (2:node@c-1.me)  890968  | 366680 
-> [  31.000000] (2:node@c-1.me)  1415256  | 366680 
-> [  31.000000] (2:node@c-1.me)  2463832  | 366680 
-> [  31.000000] (2:node@c-1.me)  4560984  | 366680 
-> [  31.000000] (2:node@c-1.me)  8755288  | 366680 
-> [  31.000000] (2:node@c-1.me) Predecessor: 16509405
-> [  32.000000] (5:node@c-4.me) My finger table:
-> [  32.000000] (5:node@c-4.me) Start | Succ 
-> [  32.000000] (5:node@c-4.me)  16509406  | 366680 
-> [  32.000000] (5:node@c-4.me)  16509407  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509409  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509413  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509421  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [  32.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [  32.000000] (5:node@c-4.me)  256477  | 16509405 
-> [  32.000000] (5:node@c-4.me)  780765  | 16509405 
-> [  32.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [  32.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [  32.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [  32.000000] (5:node@c-4.me) Predecessor: 10004760
-> [  38.000000] (3:node@c-2.me) My finger table:
-> [  38.000000] (3:node@c-2.me) Start | Succ 
-> [  38.000000] (3:node@c-2.me)  533745  | 16509405 
-> [  38.000000] (3:node@c-2.me)  533746  | 533744 
-> [  38.000000] (3:node@c-2.me)  533748  | 533744 
-> [  38.000000] (3:node@c-2.me)  533752  | 533744 
-> [  38.000000] (3:node@c-2.me)  533760  | 533744 
-> [  38.000000] (3:node@c-2.me)  533776  | 533744 
-> [  38.000000] (3:node@c-2.me)  533808  | 533744 
-> [  38.000000] (3:node@c-2.me)  533872  | 533744 
-> [  38.000000] (3:node@c-2.me)  534000  | 533744 
-> [  38.000000] (3:node@c-2.me)  534256  | 533744 
-> [  38.000000] (3:node@c-2.me)  534768  | 533744 
-> [  38.000000] (3:node@c-2.me)  535792  | 533744 
-> [  38.000000] (3:node@c-2.me)  537840  | 533744 
-> [  38.000000] (3:node@c-2.me)  541936  | 533744 
-> [  38.000000] (3:node@c-2.me)  550128  | 533744 
-> [  38.000000] (3:node@c-2.me)  566512  | 533744 
-> [  38.000000] (3:node@c-2.me)  599280  | 533744 
-> [  38.000000] (3:node@c-2.me)  664816  | 533744 
-> [  38.000000] (3:node@c-2.me)  795888  | 533744 
-> [  38.000000] (3:node@c-2.me)  1058032  | 533744 
-> [  38.000000] (3:node@c-2.me)  1582320  | 533744 
-> [  38.000000] (3:node@c-2.me)  2630896  | 533744 
-> [  38.000000] (3:node@c-2.me)  4728048  | 533744 
-> [  38.000000] (3:node@c-2.me)  8922352  | 533744 
-> [  38.000000] (3:node@c-2.me) Predecessor: 10874876
-> [  50.000000] (1:node@c-0.me) My finger table:
-> [  50.000000] (1:node@c-0.me) Start | Succ 
-> [  50.000000] (1:node@c-0.me)   43  |  42 
-> [  50.000000] (1:node@c-0.me)   44  |  42 
-> [  50.000000] (1:node@c-0.me)   46  |  42 
-> [  50.000000] (1:node@c-0.me)   50  |  42 
-> [  50.000000] (1:node@c-0.me)   58  |  42 
-> [  50.000000] (1:node@c-0.me)   74  |  42 
-> [  50.000000] (1:node@c-0.me)  106  |  42 
-> [  50.000000] (1:node@c-0.me)  170  |  42 
-> [  50.000000] (1:node@c-0.me)  298  |  42 
-> [  50.000000] (1:node@c-0.me)  554  |  42 
-> [  50.000000] (1:node@c-0.me)  1066  |  42 
-> [  50.000000] (1:node@c-0.me)  2090  |  42 
-> [  50.000000] (1:node@c-0.me)  4138  |  42 
-> [  50.000000] (1:node@c-0.me)  8234  |  42 
-> [  50.000000] (1:node@c-0.me)  16426  |  42 
-> [  50.000000] (1:node@c-0.me)  32810  |  42 
-> [  50.000000] (1:node@c-0.me)  65578  |  42 
-> [  50.000000] (1:node@c-0.me)  131114  |  42 
-> [  50.000000] (1:node@c-0.me)  262186  |  42 
-> [  50.000000] (1:node@c-0.me)  524330  |  42 
-> [  50.000000] (1:node@c-0.me)  1048618  |  42 
-> [  50.000000] (1:node@c-0.me)  2097194  |  42 
-> [  50.000000] (1:node@c-0.me)  4194346  |  42 
-> [  50.000000] (1:node@c-0.me)  8388650  |  42 
-> [  50.000000] (1:node@c-0.me) Predecessor: 366680
-> [  60.000000] (1:node@c-0.me) My finger table:
-> [  60.000000] (1:node@c-0.me) Start | Succ 
-> [  60.000000] (1:node@c-0.me)   43  |  42 
-> [  60.000000] (1:node@c-0.me)   44  |  42 
-> [  60.000000] (1:node@c-0.me)   46  |  42 
-> [  60.000000] (1:node@c-0.me)   50  |  42 
-> [  60.000000] (1:node@c-0.me)   58  |  42 
-> [  60.000000] (1:node@c-0.me)   74  |  42 
-> [  60.000000] (1:node@c-0.me)  106  |  42 
-> [  60.000000] (1:node@c-0.me)  170  |  42 
-> [  60.000000] (1:node@c-0.me)  298  |  42 
-> [  60.000000] (1:node@c-0.me)  554  |  42 
-> [  60.000000] (1:node@c-0.me)  1066  |  42 
-> [  60.000000] (1:node@c-0.me)  2090  |  42 
-> [  60.000000] (1:node@c-0.me)  4138  |  42 
-> [  60.000000] (1:node@c-0.me)  8234  |  42 
-> [  60.000000] (1:node@c-0.me)  16426  |  42 
-> [  60.000000] (1:node@c-0.me)  32810  |  42 
-> [  60.000000] (1:node@c-0.me)  65578  |  42 
-> [  60.000000] (1:node@c-0.me)  131114  |  42 
-> [  60.000000] (1:node@c-0.me)  262186  |  42 
-> [  60.000000] (1:node@c-0.me)  524330  |  42 
-> [  60.000000] (1:node@c-0.me)  1048618  |  42 
-> [  60.000000] (1:node@c-0.me)  2097194  |  42 
-> [  60.000000] (1:node@c-0.me)  4194346  |  42 
-> [  60.000000] (1:node@c-0.me)  8388650  |  42 
-> [  60.000000] (1:node@c-0.me) Predecessor: 1319738
-> [  70.000000] (1:node@c-0.me) My finger table:
-> [  70.000000] (1:node@c-0.me) Start | Succ 
-> [  70.000000] (1:node@c-0.me)   43  | 1319738 
-> [  70.000000] (1:node@c-0.me)   44  |  42 
-> [  70.000000] (1:node@c-0.me)   46  |  42 
-> [  70.000000] (1:node@c-0.me)   50  |  42 
-> [  70.000000] (1:node@c-0.me)   58  |  42 
-> [  70.000000] (1:node@c-0.me)   74  |  42 
-> [  70.000000] (1:node@c-0.me)  106  |  42 
-> [  70.000000] (1:node@c-0.me)  170  |  42 
-> [  70.000000] (1:node@c-0.me)  298  |  42 
-> [  70.000000] (1:node@c-0.me)  554  |  42 
-> [  70.000000] (1:node@c-0.me)  1066  |  42 
-> [  70.000000] (1:node@c-0.me)  2090  |  42 
-> [  70.000000] (1:node@c-0.me)  4138  |  42 
-> [  70.000000] (1:node@c-0.me)  8234  |  42 
-> [  70.000000] (1:node@c-0.me)  16426  |  42 
-> [  70.000000] (1:node@c-0.me)  32810  |  42 
-> [  70.000000] (1:node@c-0.me)  65578  |  42 
-> [  70.000000] (1:node@c-0.me)  131114  |  42 
-> [  70.000000] (1:node@c-0.me)  262186  |  42 
-> [  70.000000] (1:node@c-0.me)  524330  |  42 
-> [  70.000000] (1:node@c-0.me)  1048618  |  42 
-> [  70.000000] (1:node@c-0.me)  2097194  |  42 
-> [  70.000000] (1:node@c-0.me)  4194346  |  42 
-> [  70.000000] (1:node@c-0.me)  8388650  |  42 
-> [  70.000000] (1:node@c-0.me) Predecessor: 6518808
-> [  85.000000] (4:node@c-3.me) My finger table:
-> [  85.000000] (4:node@c-3.me) Start | Succ 
-> [  85.000000] (4:node@c-3.me)  1319739  | 6518808 
-> [  85.000000] (4:node@c-3.me)  1319740  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [  85.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [  85.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [  85.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [  85.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [  85.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [  85.000000] (4:node@c-3.me) Predecessor: 42
-> [  86.000000] (8:node@c-7.me) My finger table:
-> [  86.000000] (8:node@c-7.me) Start | Succ 
-> [  86.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [  86.000000] (8:node@c-7.me)  10004762  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004764  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004768  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [  86.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [  86.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [  86.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [  86.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [  86.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [  86.000000] (8:node@c-7.me) Predecessor: 533744
-> [  90.000000] (7:node@c-6.me) My finger table:
-> [  90.000000] (7:node@c-6.me) Start | Succ 
-> [  90.000000] (7:node@c-6.me)  16728097  | 1319738 
-> [  90.000000] (7:node@c-6.me)  16728098  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728100  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [  90.000000] (7:node@c-6.me)  16416  | 16728096 
-> [  90.000000] (7:node@c-6.me)  81952  | 16728096 
-> [  90.000000] (7:node@c-6.me)  213024  | 16728096 
-> [  90.000000] (7:node@c-6.me)  475168  | 16728096 
-> [  90.000000] (7:node@c-6.me)  999456  | 16728096 
-> [  90.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [  90.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [  90.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [  90.000000] (7:node@c-6.me) Predecessor: 2015253
-> [ 109.000000] (9:node@c-8.me) My finger table:
-> [ 109.000000] (9:node@c-8.me) Start | Succ 
-> [ 109.000000] (9:node@c-8.me)  6518809  |  42 
-> [ 109.000000] (9:node@c-8.me)  6518810  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 109.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 109.000000] (9:node@c-8.me) Predecessor: 366680
-> [ 110.000000] (9:node@c-8.me) My finger table:
-> [ 110.000000] (9:node@c-8.me) Start | Succ 
-> [ 110.000000] (9:node@c-8.me)  6518809  |  42 
-> [ 110.000000] (9:node@c-8.me)  6518810  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 110.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 110.000000] (9:node@c-8.me) Predecessor: 1319738
-> [ 174.000000] (1:node@c-0.me) My finger table:
-> [ 174.000000] (1:node@c-0.me) Start | Succ 
-> [ 174.000000] (1:node@c-0.me)   43  | 1319738 
-> [ 174.000000] (1:node@c-0.me)   44  |  42 
-> [ 174.000000] (1:node@c-0.me)   46  |  42 
-> [ 174.000000] (1:node@c-0.me)   50  |  42 
-> [ 174.000000] (1:node@c-0.me)   58  |  42 
-> [ 174.000000] (1:node@c-0.me)   74  |  42 
-> [ 174.000000] (1:node@c-0.me)  106  |  42 
-> [ 174.000000] (1:node@c-0.me)  170  |  42 
-> [ 174.000000] (1:node@c-0.me)  298  |  42 
-> [ 174.000000] (1:node@c-0.me)  554  |  42 
-> [ 174.000000] (1:node@c-0.me)  1066  |  42 
-> [ 174.000000] (1:node@c-0.me)  2090  |  42 
-> [ 174.000000] (1:node@c-0.me)  4138  |  42 
-> [ 174.000000] (1:node@c-0.me)  8234  |  42 
-> [ 174.000000] (1:node@c-0.me)  16426  |  42 
-> [ 174.000000] (1:node@c-0.me)  32810  |  42 
-> [ 174.000000] (1:node@c-0.me)  65578  |  42 
-> [ 174.000000] (1:node@c-0.me)  131114  |  42 
-> [ 174.000000] (1:node@c-0.me)  262186  |  42 
-> [ 174.000000] (1:node@c-0.me)  524330  |  42 
-> [ 174.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 174.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 174.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 174.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 174.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 245.000000] (8:node@c-7.me) My finger table:
-> [ 245.000000] (8:node@c-7.me) Start | Succ 
-> [ 245.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 245.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 245.000000] (8:node@c-7.me)  10004764  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004768  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 245.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 245.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 246.000000] (3:node@c-2.me) My finger table:
-> [ 246.000000] (3:node@c-2.me) Start | Succ 
-> [ 246.000000] (3:node@c-2.me)  533745  | 10004760 
-> [ 246.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 246.000000] (3:node@c-2.me)  533748  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533752  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533760  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 246.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 246.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 246.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 246.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 246.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 246.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 246.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 246.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 246.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 246.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 246.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 246.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 246.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 246.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 246.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 246.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 246.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 246.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 246.000000] (5:node@c-4.me) My finger table:
-> [ 246.000000] (5:node@c-4.me) Start | Succ 
-> [ 246.000000] (5:node@c-4.me)  16509406  | 366680 
-> [ 246.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 246.000000] (5:node@c-4.me)  16509409  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509413  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509421  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 246.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 246.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 247.000000] (6:node@c-5.me) My finger table:
-> [ 247.000000] (6:node@c-5.me) Start | Succ 
-> [ 247.000000] (6:node@c-5.me)  10874877  | 533744 
-> [ 247.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 247.000000] (6:node@c-5.me)  10874880  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10874884  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10874892  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10874908  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 247.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 247.000000] (6:node@c-5.me) Predecessor: -1
-> [ 247.000000] (7:node@c-6.me) My finger table:
-> [ 247.000000] (7:node@c-6.me) Start | Succ 
-> [ 247.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 247.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 247.000000] (7:node@c-6.me)  16728100  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 247.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 247.000000] (7:node@c-6.me) Predecessor: 2015253
-> [ 253.000000] (1:node@c-0.me) My finger table:
-> [ 253.000000] (1:node@c-0.me) Start | Succ 
-> [ 253.000000] (1:node@c-0.me)   43  | 1319738 
-> [ 253.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 253.000000] (1:node@c-0.me)   46  |  42 
-> [ 253.000000] (1:node@c-0.me)   50  |  42 
-> [ 253.000000] (1:node@c-0.me)   58  |  42 
-> [ 253.000000] (1:node@c-0.me)   74  |  42 
-> [ 253.000000] (1:node@c-0.me)  106  |  42 
-> [ 253.000000] (1:node@c-0.me)  170  |  42 
-> [ 253.000000] (1:node@c-0.me)  298  |  42 
-> [ 253.000000] (1:node@c-0.me)  554  |  42 
-> [ 253.000000] (1:node@c-0.me)  1066  |  42 
-> [ 253.000000] (1:node@c-0.me)  2090  |  42 
-> [ 253.000000] (1:node@c-0.me)  4138  |  42 
-> [ 253.000000] (1:node@c-0.me)  8234  |  42 
-> [ 253.000000] (1:node@c-0.me)  16426  |  42 
-> [ 253.000000] (1:node@c-0.me)  32810  |  42 
-> [ 253.000000] (1:node@c-0.me)  65578  |  42 
-> [ 253.000000] (1:node@c-0.me)  131114  |  42 
-> [ 253.000000] (1:node@c-0.me)  262186  |  42 
-> [ 253.000000] (1:node@c-0.me)  524330  |  42 
-> [ 253.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 253.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 253.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 253.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 253.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 255.000000] (2:node@c-1.me) My finger table:
-> [ 255.000000] (2:node@c-1.me) Start | Succ 
-> [ 255.000000] (2:node@c-1.me)  366681  | 1319738 
-> [ 255.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 255.000000] (2:node@c-1.me)  366684  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366688  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366696  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 255.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 255.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 255.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 255.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 255.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 255.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 255.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 255.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 255.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 255.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 255.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 255.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 255.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 255.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 255.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 255.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 255.000000] (2:node@c-1.me) Predecessor: 16509405
-> [ 260.000000] (4:node@c-3.me) My finger table:
-> [ 260.000000] (4:node@c-3.me) Start | Succ 
-> [ 260.000000] (4:node@c-3.me)  1319739  | 6518808 
-> [ 260.000000] (4:node@c-3.me)  1319740  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 260.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 260.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 292.000000] (7:node@c-6.me) My finger table:
-> [ 292.000000] (7:node@c-6.me) Start | Succ 
-> [ 292.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 292.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 292.000000] (7:node@c-6.me)  16728100  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 292.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 292.000000] (7:node@c-6.me) Predecessor: 6518808
-> [ 300.000000] (9:node@c-8.me) My finger table:
-> [ 300.000000] (9:node@c-8.me) Start | Succ 
-> [ 300.000000] (9:node@c-8.me)  6518809  | 16728096 
-> [ 300.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 300.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 300.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 300.000000] (9:node@c-8.me) Predecessor: 1319738
-> [ 301.000000] (10:node@c-9.me) My finger table:
-> [ 301.000000] (10:node@c-9.me) Start | Succ 
-> [ 301.000000] (10:node@c-9.me)  2015254  | 16728096 
-> [ 301.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 301.000000] (10:node@c-9.me)  2015257  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015261  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 301.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 301.000000] (10:node@c-9.me) Predecessor: -1
-> [ 302.000000] (2:node@c-1.me) My finger table:
-> [ 302.000000] (2:node@c-1.me) Start | Succ 
-> [ 302.000000] (2:node@c-1.me)  366681  | 1319738 
-> [ 302.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 302.000000] (2:node@c-1.me)  366684  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366688  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366696  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 302.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 302.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 302.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 302.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 302.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 302.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 302.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 302.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 302.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 302.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 302.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 302.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 302.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 302.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 302.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 302.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 302.000000] (2:node@c-1.me) Predecessor: 42
-> [ 306.000000] (4:node@c-3.me) My finger table:
-> [ 306.000000] (4:node@c-3.me) Start | Succ 
-> [ 306.000000] (4:node@c-3.me)  1319739  | 6518808 
-> [ 306.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 306.000000] (4:node@c-3.me)  1319742  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 306.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 306.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 339.000000] (9:node@c-8.me) My finger table:
-> [ 339.000000] (9:node@c-8.me) Start | Succ 
-> [ 339.000000] (9:node@c-8.me)  6518809  | 16728096 
-> [ 339.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 339.000000] (9:node@c-8.me)  6518812  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 339.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 339.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 367.000000] (6:node@c-5.me) My finger table:
-> [ 367.000000] (6:node@c-5.me) Start | Succ 
-> [ 367.000000] (6:node@c-5.me)  10874877  | 533744 
-> [ 367.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 367.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 367.000000] (6:node@c-5.me)  10874884  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10874892  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10874908  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 367.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 367.000000] (6:node@c-5.me) Predecessor: -1
-> [ 368.000000] (3:node@c-2.me) My finger table:
-> [ 368.000000] (3:node@c-2.me) Start | Succ 
-> [ 368.000000] (3:node@c-2.me)  533745  | 10004760 
-> [ 368.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 368.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 368.000000] (3:node@c-2.me)  533752  | 533744 
-> [ 368.000000] (3:node@c-2.me)  533760  | 533744 
-> [ 368.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 368.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 368.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 368.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 368.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 368.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 368.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 368.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 368.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 368.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 368.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 368.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 368.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 368.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 368.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 368.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 368.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 368.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 368.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 368.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 368.000000] (5:node@c-4.me) My finger table:
-> [ 368.000000] (5:node@c-4.me) Start | Succ 
-> [ 368.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 368.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 368.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 368.000000] (5:node@c-4.me)  16509413  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509421  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 368.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 368.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 370.000000] (8:node@c-7.me) My finger table:
-> [ 370.000000] (8:node@c-7.me) Start | Succ 
-> [ 370.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 370.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 370.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 370.000000] (8:node@c-7.me)  10004768  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 370.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 370.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 373.000000] (7:node@c-6.me) My finger table:
-> [ 373.000000] (7:node@c-6.me) Start | Succ 
-> [ 373.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 373.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 373.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 373.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 373.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 373.000000] (7:node@c-6.me) Predecessor: 6518808
-> [ 375.000000] (2:node@c-1.me) My finger table:
-> [ 375.000000] (2:node@c-1.me) Start | Succ 
-> [ 375.000000] (2:node@c-1.me)  366681  | 1319738 
-> [ 375.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 375.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 375.000000] (2:node@c-1.me)  366688  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366696  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 375.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 375.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 375.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 375.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 375.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 375.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 375.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 375.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 375.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 375.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 375.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 375.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 375.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 375.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 375.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 375.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 375.000000] (2:node@c-1.me) Predecessor: 42
-> [ 382.000000] (1:node@c-0.me) My finger table:
-> [ 382.000000] (1:node@c-0.me) Start | Succ 
-> [ 382.000000] (1:node@c-0.me)   43  | 366680 
-> [ 382.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 382.000000] (1:node@c-0.me)   46  | 366680 
-> [ 382.000000] (1:node@c-0.me)   50  |  42 
-> [ 382.000000] (1:node@c-0.me)   58  |  42 
-> [ 382.000000] (1:node@c-0.me)   74  |  42 
-> [ 382.000000] (1:node@c-0.me)  106  |  42 
-> [ 382.000000] (1:node@c-0.me)  170  |  42 
-> [ 382.000000] (1:node@c-0.me)  298  |  42 
-> [ 382.000000] (1:node@c-0.me)  554  |  42 
-> [ 382.000000] (1:node@c-0.me)  1066  |  42 
-> [ 382.000000] (1:node@c-0.me)  2090  |  42 
-> [ 382.000000] (1:node@c-0.me)  4138  |  42 
-> [ 382.000000] (1:node@c-0.me)  8234  |  42 
-> [ 382.000000] (1:node@c-0.me)  16426  |  42 
-> [ 382.000000] (1:node@c-0.me)  32810  |  42 
-> [ 382.000000] (1:node@c-0.me)  65578  |  42 
-> [ 382.000000] (1:node@c-0.me)  131114  |  42 
-> [ 382.000000] (1:node@c-0.me)  262186  |  42 
-> [ 382.000000] (1:node@c-0.me)  524330  |  42 
-> [ 382.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 382.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 382.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 382.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 382.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 383.000000] (7:node@c-6.me) My finger table:
-> [ 383.000000] (7:node@c-6.me) Start | Succ 
-> [ 383.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 383.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 383.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 383.000000] (7:node@c-6.me)  16728104  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 383.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 383.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 385.000000] (10:node@c-9.me) My finger table:
-> [ 385.000000] (10:node@c-9.me) Start | Succ 
-> [ 385.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 385.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 385.000000] (10:node@c-9.me)  2015257  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015261  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 385.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 385.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 427.000000] (9:node@c-8.me) My finger table:
-> [ 427.000000] (9:node@c-8.me) Start | Succ 
-> [ 427.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 427.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 427.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 427.000000] (9:node@c-8.me)  6518816  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 427.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 427.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 432.000000] (10:node@c-9.me) My finger table:
-> [ 432.000000] (10:node@c-9.me) Start | Succ 
-> [ 432.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 432.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 432.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 432.000000] (10:node@c-9.me)  2015261  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 432.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 432.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 484.000000] (4:node@c-3.me) My finger table:
-> [ 484.000000] (4:node@c-3.me) Start | Succ 
-> [ 484.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 484.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 484.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 484.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 484.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 484.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 487.000000] (6:node@c-5.me) My finger table:
-> [ 487.000000] (6:node@c-5.me) Start | Succ 
-> [ 487.000000] (6:node@c-5.me)  10874877  | 533744 
-> [ 487.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 487.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 487.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 487.000000] (6:node@c-5.me)  10874892  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10874908  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 487.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 487.000000] (6:node@c-5.me) Predecessor: -1
-> [ 490.000000] (8:node@c-7.me) My finger table:
-> [ 490.000000] (8:node@c-7.me) Start | Succ 
-> [ 490.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 490.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 490.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 490.000000] (8:node@c-7.me)  10004768  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 490.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 490.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 491.000000] (8:node@c-7.me) My finger table:
-> [ 491.000000] (8:node@c-7.me) Start | Succ 
-> [ 491.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 491.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 491.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 491.000000] (8:node@c-7.me)  10004768  | 16509405 
-> [ 491.000000] (8:node@c-7.me)  10004776  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 491.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 491.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 496.000000] (7:node@c-6.me) My finger table:
-> [ 496.000000] (7:node@c-6.me) Start | Succ 
-> [ 496.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 496.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 496.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 496.000000] (7:node@c-6.me)  16728104  |  42 
-> [ 496.000000] (7:node@c-6.me)  16728112  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 496.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 496.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 497.000000] (3:node@c-2.me) My finger table:
-> [ 497.000000] (3:node@c-2.me) Start | Succ 
-> [ 497.000000] (3:node@c-2.me)  533745  | 6518808 
-> [ 497.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 497.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 497.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 497.000000] (3:node@c-2.me)  533760  | 533744 
-> [ 497.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 497.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 497.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 497.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 497.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 497.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 497.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 497.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 497.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 497.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 497.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 497.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 497.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 497.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 497.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 497.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 497.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 497.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 497.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 497.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 502.000000] (1:node@c-0.me) My finger table:
-> [ 502.000000] (1:node@c-0.me) Start | Succ 
-> [ 502.000000] (1:node@c-0.me)   43  | 366680 
-> [ 502.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 502.000000] (1:node@c-0.me)   46  | 366680 
-> [ 502.000000] (1:node@c-0.me)   50  | 366680 
-> [ 502.000000] (1:node@c-0.me)   58  |  42 
-> [ 502.000000] (1:node@c-0.me)   74  |  42 
-> [ 502.000000] (1:node@c-0.me)  106  |  42 
-> [ 502.000000] (1:node@c-0.me)  170  |  42 
-> [ 502.000000] (1:node@c-0.me)  298  |  42 
-> [ 502.000000] (1:node@c-0.me)  554  |  42 
-> [ 502.000000] (1:node@c-0.me)  1066  |  42 
-> [ 502.000000] (1:node@c-0.me)  2090  |  42 
-> [ 502.000000] (1:node@c-0.me)  4138  |  42 
-> [ 502.000000] (1:node@c-0.me)  8234  |  42 
-> [ 502.000000] (1:node@c-0.me)  16426  |  42 
-> [ 502.000000] (1:node@c-0.me)  32810  |  42 
-> [ 502.000000] (1:node@c-0.me)  65578  |  42 
-> [ 502.000000] (1:node@c-0.me)  131114  |  42 
-> [ 502.000000] (1:node@c-0.me)  262186  |  42 
-> [ 502.000000] (1:node@c-0.me)  524330  |  42 
-> [ 502.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 502.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 502.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 502.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 502.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 505.000000] (2:node@c-1.me) My finger table:
-> [ 505.000000] (2:node@c-1.me) Start | Succ 
-> [ 505.000000] (2:node@c-1.me)  366681  | 1319738 
-> [ 505.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 505.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 505.000000] (2:node@c-1.me)  366688  | 1319738 
-> [ 505.000000] (2:node@c-1.me)  366696  | 366680 
-> [ 505.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 505.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 505.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 505.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 505.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 505.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 505.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 505.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 505.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 505.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 505.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 505.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 505.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 505.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 505.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 505.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 505.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 505.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 505.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 505.000000] (2:node@c-1.me) Predecessor: 42
-> [ 513.000000] (5:node@c-4.me) My finger table:
-> [ 513.000000] (5:node@c-4.me) Start | Succ 
-> [ 513.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 513.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 513.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 513.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 513.000000] (5:node@c-4.me)  16509421  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 513.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 513.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 558.000000] (9:node@c-8.me) My finger table:
-> [ 558.000000] (9:node@c-8.me) Start | Succ 
-> [ 558.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 558.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 558.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 558.000000] (9:node@c-8.me)  6518816  | 10004760 
-> [ 558.000000] (9:node@c-8.me)  6518824  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 558.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 558.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 573.000000] (10:node@c-9.me) My finger table:
-> [ 573.000000] (10:node@c-9.me) Start | Succ 
-> [ 573.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 573.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 573.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 573.000000] (10:node@c-9.me)  2015261  | 6518808 
-> [ 573.000000] (10:node@c-9.me)  2015269  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 573.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 573.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 600.000000] (4:node@c-3.me) My finger table:
-> [ 600.000000] (4:node@c-3.me) Start | Succ 
-> [ 600.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 600.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 600.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 600.000000] (4:node@c-3.me)  1319746  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 600.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 600.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 610.000000] (6:node@c-5.me) My finger table:
-> [ 610.000000] (6:node@c-5.me) Start | Succ 
-> [ 610.000000] (6:node@c-5.me)  10874877  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 610.000000] (6:node@c-5.me)  10874908  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 610.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 610.000000] (6:node@c-5.me) Predecessor: -1
-> [ 656.000000] (5:node@c-4.me) My finger table:
-> [ 656.000000] (5:node@c-4.me) Start | Succ 
-> [ 656.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 656.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 656.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 656.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 656.000000] (5:node@c-4.me)  16509421  | 16728096 
-> [ 656.000000] (5:node@c-4.me)  16509437  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 656.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 656.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 657.000000] (7:node@c-6.me) My finger table:
-> [ 657.000000] (7:node@c-6.me) Start | Succ 
-> [ 657.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728104  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728112  |  42 
-> [ 657.000000] (7:node@c-6.me)  16728128  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 657.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 657.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 663.000000] (4:node@c-3.me) My finger table:
-> [ 663.000000] (4:node@c-3.me) Start | Succ 
-> [ 663.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 663.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 663.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 663.000000] (4:node@c-3.me)  1319746  | 2015253 
-> [ 663.000000] (4:node@c-3.me)  1319754  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 663.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 663.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 665.000000] (1:node@c-0.me) My finger table:
-> [ 665.000000] (1:node@c-0.me) Start | Succ 
-> [ 665.000000] (1:node@c-0.me)   43  | 366680 
-> [ 665.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 665.000000] (1:node@c-0.me)   46  | 366680 
-> [ 665.000000] (1:node@c-0.me)   50  | 366680 
-> [ 665.000000] (1:node@c-0.me)   58  | 366680 
-> [ 665.000000] (1:node@c-0.me)   74  |  42 
-> [ 665.000000] (1:node@c-0.me)  106  |  42 
-> [ 665.000000] (1:node@c-0.me)  170  |  42 
-> [ 665.000000] (1:node@c-0.me)  298  |  42 
-> [ 665.000000] (1:node@c-0.me)  554  |  42 
-> [ 665.000000] (1:node@c-0.me)  1066  |  42 
-> [ 665.000000] (1:node@c-0.me)  2090  |  42 
-> [ 665.000000] (1:node@c-0.me)  4138  |  42 
-> [ 665.000000] (1:node@c-0.me)  8234  |  42 
-> [ 665.000000] (1:node@c-0.me)  16426  |  42 
-> [ 665.000000] (1:node@c-0.me)  32810  |  42 
-> [ 665.000000] (1:node@c-0.me)  65578  |  42 
-> [ 665.000000] (1:node@c-0.me)  131114  |  42 
-> [ 665.000000] (1:node@c-0.me)  262186  |  42 
-> [ 665.000000] (1:node@c-0.me)  524330  |  42 
-> [ 665.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 665.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 665.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 665.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 665.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 669.000000] (8:node@c-7.me) My finger table:
-> [ 669.000000] (8:node@c-7.me) Start | Succ 
-> [ 669.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004768  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004776  | 16509405 
-> [ 669.000000] (8:node@c-7.me)  10004792  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 669.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 669.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 671.000000] (3:node@c-2.me) My finger table:
-> [ 671.000000] (3:node@c-2.me) Start | Succ 
-> [ 671.000000] (3:node@c-2.me)  533745  | 1319738 
-> [ 671.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 671.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 671.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 671.000000] (3:node@c-2.me)  533760  | 1319738 
-> [ 671.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 671.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 671.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 671.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 671.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 671.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 671.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 671.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 671.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 671.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 671.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 671.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 671.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 671.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 671.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 671.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 671.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 671.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 671.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 671.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 678.000000] (9:node@c-8.me) My finger table:
-> [ 678.000000] (9:node@c-8.me) Start | Succ 
-> [ 678.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 678.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 678.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 678.000000] (9:node@c-8.me)  6518816  | 10004760 
-> [ 678.000000] (9:node@c-8.me)  6518824  | 10004760 
-> [ 678.000000] (9:node@c-8.me)  6518840  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 678.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 678.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 683.000000] (2:node@c-1.me) My finger table:
-> [ 683.000000] (2:node@c-1.me) Start | Succ 
-> [ 683.000000] (2:node@c-1.me)  366681  | 533744 
-> [ 683.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 683.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 683.000000] (2:node@c-1.me)  366688  | 1319738 
-> [ 683.000000] (2:node@c-1.me)  366696  | 533744 
-> [ 683.000000] (2:node@c-1.me)  366712  | 366680 
-> [ 683.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 683.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 683.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 683.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 683.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 683.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 683.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 683.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 683.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 683.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 683.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 683.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 683.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 683.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 683.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 683.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 683.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 683.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 683.000000] (2:node@c-1.me) Predecessor: 42
-> [ 684.000000] (3:node@c-2.me) My finger table:
-> [ 684.000000] (3:node@c-2.me) Start | Succ 
-> [ 684.000000] (3:node@c-2.me)  533745  | 1319738 
-> [ 684.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 684.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 684.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 684.000000] (3:node@c-2.me)  533760  | 1319738 
-> [ 684.000000] (3:node@c-2.me)  533776  | 533744 
-> [ 684.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 684.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 684.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 684.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 684.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 684.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 684.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 684.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 684.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 684.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 684.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 684.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 684.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 684.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 684.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 684.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 684.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 684.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 684.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 721.000000] (10:node@c-9.me) My finger table:
-> [ 721.000000] (10:node@c-9.me) Start | Succ 
-> [ 721.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 721.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 721.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 721.000000] (10:node@c-9.me)  2015261  | 6518808 
-> [ 721.000000] (10:node@c-9.me)  2015269  | 6518808 
-> [ 721.000000] (10:node@c-9.me)  2015285  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 721.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 721.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 744.000000] (6:node@c-5.me) My finger table:
-> [ 744.000000] (6:node@c-5.me) Start | Succ 
-> [ 744.000000] (6:node@c-5.me)  10874877  | 16728096 
-> [ 744.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 744.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 744.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 744.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 744.000000] (6:node@c-5.me)  10874908  | 16728096 
-> [ 744.000000] (6:node@c-5.me)  10874940  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 744.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 744.000000] (6:node@c-5.me) Predecessor: -1
-> [ 777.000000] (7:node@c-6.me) My finger table:
-> [ 777.000000] (7:node@c-6.me) Start | Succ 
-> [ 777.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728104  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728112  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728128  |  42 
-> [ 777.000000] (7:node@c-6.me)  16728160  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 777.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 777.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 786.000000] (5:node@c-4.me) My finger table:
-> [ 786.000000] (5:node@c-4.me) Start | Succ 
-> [ 786.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 786.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509421  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509437  | 16728096 
-> [ 786.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 786.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 786.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 787.000000] (4:node@c-3.me) My finger table:
-> [ 787.000000] (4:node@c-3.me) Start | Succ 
-> [ 787.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 787.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 787.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 787.000000] (4:node@c-3.me)  1319746  | 2015253 
-> [ 787.000000] (4:node@c-3.me)  1319754  | 2015253 
-> [ 787.000000] (4:node@c-3.me)  1319770  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 787.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 787.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 788.000000] (1:node@c-0.me) My finger table:
-> [ 788.000000] (1:node@c-0.me) Start | Succ 
-> [ 788.000000] (1:node@c-0.me)   43  | 366680 
-> [ 788.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 788.000000] (1:node@c-0.me)   46  | 366680 
-> [ 788.000000] (1:node@c-0.me)   50  | 366680 
-> [ 788.000000] (1:node@c-0.me)   58  | 366680 
-> [ 788.000000] (1:node@c-0.me)   74  | 366680 
-> [ 788.000000] (1:node@c-0.me)  106  |  42 
-> [ 788.000000] (1:node@c-0.me)  170  |  42 
-> [ 788.000000] (1:node@c-0.me)  298  |  42 
-> [ 788.000000] (1:node@c-0.me)  554  |  42 
-> [ 788.000000] (1:node@c-0.me)  1066  |  42 
-> [ 788.000000] (1:node@c-0.me)  2090  |  42 
-> [ 788.000000] (1:node@c-0.me)  4138  |  42 
-> [ 788.000000] (1:node@c-0.me)  8234  |  42 
-> [ 788.000000] (1:node@c-0.me)  16426  |  42 
-> [ 788.000000] (1:node@c-0.me)  32810  |  42 
-> [ 788.000000] (1:node@c-0.me)  65578  |  42 
-> [ 788.000000] (1:node@c-0.me)  131114  |  42 
-> [ 788.000000] (1:node@c-0.me)  262186  |  42 
-> [ 788.000000] (1:node@c-0.me)  524330  |  42 
-> [ 788.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 788.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 788.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 788.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 788.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 793.000000] (3:node@c-2.me) My finger table:
-> [ 793.000000] (3:node@c-2.me) Start | Succ 
-> [ 793.000000] (3:node@c-2.me)  533745  | 1319738 
-> [ 793.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 793.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 793.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 793.000000] (3:node@c-2.me)  533760  | 1319738 
-> [ 793.000000] (3:node@c-2.me)  533776  | 1319738 
-> [ 793.000000] (3:node@c-2.me)  533808  | 533744 
-> [ 793.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 793.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 793.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 793.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 793.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 793.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 793.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 793.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 793.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 793.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 793.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 793.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 793.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 793.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 793.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 793.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 793.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 793.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 797.000000] (5:node@c-4.me) My finger table:
-> [ 797.000000] (5:node@c-4.me) Start | Succ 
-> [ 797.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 797.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509421  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509437  | 16728096 
-> [ 797.000000] (5:node@c-4.me)  16509469  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 797.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 797.000000] (5:node@c-4.me) Predecessor: 10874876
-> [ 798.000000] (8:node@c-7.me) My finger table:
-> [ 798.000000] (8:node@c-7.me) Start | Succ 
-> [ 798.000000] (8:node@c-7.me)  10004761  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004768  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004776  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004792  | 16509405 
-> [ 798.000000] (8:node@c-7.me)  10004824  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 798.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 798.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 801.000000] (9:node@c-8.me) My finger table:
-> [ 801.000000] (9:node@c-8.me) Start | Succ 
-> [ 801.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 801.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518816  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518824  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518840  | 10004760 
-> [ 801.000000] (9:node@c-8.me)  6518872  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 801.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 801.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 804.000000] (2:node@c-1.me) My finger table:
-> [ 804.000000] (2:node@c-1.me) Start | Succ 
-> [ 804.000000] (2:node@c-1.me)  366681  | 533744 
-> [ 804.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 804.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 804.000000] (2:node@c-1.me)  366688  | 1319738 
-> [ 804.000000] (2:node@c-1.me)  366696  | 533744 
-> [ 804.000000] (2:node@c-1.me)  366712  | 533744 
-> [ 804.000000] (2:node@c-1.me)  366744  | 366680 
-> [ 804.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 804.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 804.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 804.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 804.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 804.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 804.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 804.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 804.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 804.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 804.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 804.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 804.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 804.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 804.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 804.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 804.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 804.000000] (2:node@c-1.me) Predecessor: 42
-> [ 843.000000] (10:node@c-9.me) My finger table:
-> [ 843.000000] (10:node@c-9.me) Start | Succ 
-> [ 843.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 843.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015261  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015269  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015285  | 6518808 
-> [ 843.000000] (10:node@c-9.me)  2015317  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 843.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 843.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 865.000000] (6:node@c-5.me) My finger table:
-> [ 865.000000] (6:node@c-5.me) Start | Succ 
-> [ 865.000000] (6:node@c-5.me)  10874877  | 16509405 
-> [ 865.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 865.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 865.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 865.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 865.000000] (6:node@c-5.me)  10874908  | 16728096 
-> [ 865.000000] (6:node@c-5.me)  10874940  | 16509405 
-> [ 865.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 865.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 865.000000] (6:node@c-5.me) Predecessor: -1
-> [ 870.000000] (6:node@c-5.me) My finger table:
-> [ 870.000000] (6:node@c-5.me) Start | Succ 
-> [ 870.000000] (6:node@c-5.me)  10874877  | 16509405 
-> [ 870.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 870.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 870.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 870.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 870.000000] (6:node@c-5.me)  10874908  | 16728096 
-> [ 870.000000] (6:node@c-5.me)  10874940  | 16509405 
-> [ 870.000000] (6:node@c-5.me)  10875004  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 870.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 870.000000] (6:node@c-5.me) Predecessor: 10004760
-> [ 910.000000] (5:node@c-4.me) My finger table:
-> [ 910.000000] (5:node@c-4.me) Start | Succ 
-> [ 910.000000] (5:node@c-4.me)  16509406  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509407  | 366680 
-> [ 910.000000] (5:node@c-4.me)  16509409  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509413  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509421  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509437  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509469  | 16728096 
-> [ 910.000000] (5:node@c-4.me)  16509533  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16509661  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16509917  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16510429  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16511453  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16513501  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16517597  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16525789  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16542173  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16574941  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16640477  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  16771549  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  256477  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  780765  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  1829341  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  3926493  | 16509405 
-> [ 910.000000] (5:node@c-4.me)  8120797  | 16509405 
-> [ 910.000000] (5:node@c-4.me) Predecessor: 10874876
-> [ 912.000000] (1:node@c-0.me) My finger table:
-> [ 912.000000] (1:node@c-0.me) Start | Succ 
-> [ 912.000000] (1:node@c-0.me)   43  | 366680 
-> [ 912.000000] (1:node@c-0.me)   44  | 1319738 
-> [ 912.000000] (1:node@c-0.me)   46  | 366680 
-> [ 912.000000] (1:node@c-0.me)   50  | 366680 
-> [ 912.000000] (1:node@c-0.me)   58  | 366680 
-> [ 912.000000] (1:node@c-0.me)   74  | 366680 
-> [ 912.000000] (1:node@c-0.me)  106  | 366680 
-> [ 912.000000] (1:node@c-0.me)  170  |  42 
-> [ 912.000000] (1:node@c-0.me)  298  |  42 
-> [ 912.000000] (1:node@c-0.me)  554  |  42 
-> [ 912.000000] (1:node@c-0.me)  1066  |  42 
-> [ 912.000000] (1:node@c-0.me)  2090  |  42 
-> [ 912.000000] (1:node@c-0.me)  4138  |  42 
-> [ 912.000000] (1:node@c-0.me)  8234  |  42 
-> [ 912.000000] (1:node@c-0.me)  16426  |  42 
-> [ 912.000000] (1:node@c-0.me)  32810  |  42 
-> [ 912.000000] (1:node@c-0.me)  65578  |  42 
-> [ 912.000000] (1:node@c-0.me)  131114  |  42 
-> [ 912.000000] (1:node@c-0.me)  262186  |  42 
-> [ 912.000000] (1:node@c-0.me)  524330  |  42 
-> [ 912.000000] (1:node@c-0.me)  1048618  |  42 
-> [ 912.000000] (1:node@c-0.me)  2097194  |  42 
-> [ 912.000000] (1:node@c-0.me)  4194346  |  42 
-> [ 912.000000] (1:node@c-0.me)  8388650  |  42 
-> [ 912.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 913.000000] (3:node@c-2.me) My finger table:
-> [ 913.000000] (3:node@c-2.me) Start | Succ 
-> [ 913.000000] (3:node@c-2.me)  533745  | 1319738 
-> [ 913.000000] (3:node@c-2.me)  533746  | 10004760 
-> [ 913.000000] (3:node@c-2.me)  533748  | 10004760 
-> [ 913.000000] (3:node@c-2.me)  533752  | 6518808 
-> [ 913.000000] (3:node@c-2.me)  533760  | 1319738 
-> [ 913.000000] (3:node@c-2.me)  533776  | 1319738 
-> [ 913.000000] (3:node@c-2.me)  533808  | 1319738 
-> [ 913.000000] (3:node@c-2.me)  533872  | 533744 
-> [ 913.000000] (3:node@c-2.me)  534000  | 533744 
-> [ 913.000000] (3:node@c-2.me)  534256  | 533744 
-> [ 913.000000] (3:node@c-2.me)  534768  | 533744 
-> [ 913.000000] (3:node@c-2.me)  535792  | 533744 
-> [ 913.000000] (3:node@c-2.me)  537840  | 533744 
-> [ 913.000000] (3:node@c-2.me)  541936  | 533744 
-> [ 913.000000] (3:node@c-2.me)  550128  | 533744 
-> [ 913.000000] (3:node@c-2.me)  566512  | 533744 
-> [ 913.000000] (3:node@c-2.me)  599280  | 533744 
-> [ 913.000000] (3:node@c-2.me)  664816  | 533744 
-> [ 913.000000] (3:node@c-2.me)  795888  | 533744 
-> [ 913.000000] (3:node@c-2.me)  1058032  | 533744 
-> [ 913.000000] (3:node@c-2.me)  1582320  | 533744 
-> [ 913.000000] (3:node@c-2.me)  2630896  | 533744 
-> [ 913.000000] (3:node@c-2.me)  4728048  | 533744 
-> [ 913.000000] (3:node@c-2.me)  8922352  | 533744 
-> [ 913.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 921.000000] (8:node@c-7.me) My finger table:
-> [ 921.000000] (8:node@c-7.me) Start | Succ 
-> [ 921.000000] (8:node@c-7.me)  10004761  | 10874876 
-> [ 921.000000] (8:node@c-7.me)  10004762  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004764  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004768  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004776  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004792  | 16509405 
-> [ 921.000000] (8:node@c-7.me)  10004824  | 10874876 
-> [ 921.000000] (8:node@c-7.me)  10004888  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10005016  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10005272  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10005784  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10006808  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10008856  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10012952  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10021144  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10037528  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10070296  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10135832  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10266904  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  10529048  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  11053336  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  12101912  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  14199064  | 10004760 
-> [ 921.000000] (8:node@c-7.me)  1616152  | 10004760 
-> [ 921.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 964.000000] (2:node@c-1.me) My finger table:
-> [ 964.000000] (2:node@c-1.me) Start | Succ 
-> [ 964.000000] (2:node@c-1.me)  366681  | 533744 
-> [ 964.000000] (2:node@c-1.me)  366682  | 1319738 
-> [ 964.000000] (2:node@c-1.me)  366684  | 1319738 
-> [ 964.000000] (2:node@c-1.me)  366688  | 1319738 
-> [ 964.000000] (2:node@c-1.me)  366696  | 533744 
-> [ 964.000000] (2:node@c-1.me)  366712  | 533744 
-> [ 964.000000] (2:node@c-1.me)  366744  | 533744 
-> [ 964.000000] (2:node@c-1.me)  366808  | 366680 
-> [ 964.000000] (2:node@c-1.me)  366936  | 366680 
-> [ 964.000000] (2:node@c-1.me)  367192  | 366680 
-> [ 964.000000] (2:node@c-1.me)  367704  | 366680 
-> [ 964.000000] (2:node@c-1.me)  368728  | 366680 
-> [ 964.000000] (2:node@c-1.me)  370776  | 366680 
-> [ 964.000000] (2:node@c-1.me)  374872  | 366680 
-> [ 964.000000] (2:node@c-1.me)  383064  | 366680 
-> [ 964.000000] (2:node@c-1.me)  399448  | 366680 
-> [ 964.000000] (2:node@c-1.me)  432216  | 366680 
-> [ 964.000000] (2:node@c-1.me)  497752  | 366680 
-> [ 964.000000] (2:node@c-1.me)  628824  | 366680 
-> [ 964.000000] (2:node@c-1.me)  890968  | 366680 
-> [ 964.000000] (2:node@c-1.me)  1415256  | 366680 
-> [ 964.000000] (2:node@c-1.me)  2463832  | 366680 
-> [ 964.000000] (2:node@c-1.me)  4560984  | 366680 
-> [ 964.000000] (2:node@c-1.me)  8755288  | 366680 
-> [ 964.000000] (2:node@c-1.me) Predecessor: 42
-> [ 966.000000] (4:node@c-3.me) My finger table:
-> [ 966.000000] (4:node@c-3.me) Start | Succ 
-> [ 966.000000] (4:node@c-3.me)  1319739  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319740  | 6518808 
-> [ 966.000000] (4:node@c-3.me)  1319742  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319746  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319754  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319770  | 2015253 
-> [ 966.000000] (4:node@c-3.me)  1319802  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1319866  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1319994  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1320250  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1320762  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1321786  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1323834  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1327930  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1336122  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1352506  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1385274  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1450810  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1581882  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  1844026  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  2368314  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  3416890  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  5514042  | 1319738 
-> [ 966.000000] (4:node@c-3.me)  9708346  | 1319738 
-> [ 966.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 966.000000] (7:node@c-6.me) My finger table:
-> [ 966.000000] (7:node@c-6.me) Start | Succ 
-> [ 966.000000] (7:node@c-6.me)  16728097  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728098  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728100  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728104  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728112  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728128  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728160  |  42 
-> [ 966.000000] (7:node@c-6.me)  16728224  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16728352  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16728608  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16729120  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16730144  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16732192  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16736288  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16744480  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16760864  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  16416  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  81952  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  213024  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  475168  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  999456  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  2048032  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  4145184  | 16728096 
-> [ 966.000000] (7:node@c-6.me)  8339488  | 16728096 
-> [ 966.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 973.000000] (9:node@c-8.me) My finger table:
-> [ 973.000000] (9:node@c-8.me) Start | Succ 
-> [ 973.000000] (9:node@c-8.me)  6518809  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518810  | 16728096 
-> [ 973.000000] (9:node@c-8.me)  6518812  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518816  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518824  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518840  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518872  | 10004760 
-> [ 973.000000] (9:node@c-8.me)  6518936  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6519064  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6519320  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6519832  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6520856  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6522904  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6527000  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6535192  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6551576  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6584344  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6649880  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  6780952  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  7043096  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  7567384  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  8615960  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  10713112  | 6518808 
-> [ 973.000000] (9:node@c-8.me)  14907416  | 6518808 
-> [ 973.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 979.000000] (10:node@c-9.me) My finger table:
-> [ 979.000000] (10:node@c-9.me) Start | Succ 
-> [ 979.000000] (10:node@c-9.me)  2015254  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015255  | 16728096 
-> [ 979.000000] (10:node@c-9.me)  2015257  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015261  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015269  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015285  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015317  | 6518808 
-> [ 979.000000] (10:node@c-9.me)  2015381  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2015509  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2015765  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2016277  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2017301  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2019349  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2023445  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2031637  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2048021  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2080789  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2146325  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2277397  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  2539541  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  3063829  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  4112405  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  6209557  | 2015253 
-> [ 979.000000] (10:node@c-9.me)  10403861  | 2015253 
-> [ 979.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 987.000000] (6:node@c-5.me) My finger table:
-> [ 987.000000] (6:node@c-5.me) Start | Succ 
-> [ 987.000000] (6:node@c-5.me)  10874877  | 16509405 
-> [ 987.000000] (6:node@c-5.me)  10874878  | 533744 
-> [ 987.000000] (6:node@c-5.me)  10874880  | 533744 
-> [ 987.000000] (6:node@c-5.me)  10874884  | 533744 
-> [ 987.000000] (6:node@c-5.me)  10874892  | 533744 
-> [ 987.000000] (6:node@c-5.me)  10874908  | 16728096 
-> [ 987.000000] (6:node@c-5.me)  10874940  | 16509405 
-> [ 987.000000] (6:node@c-5.me)  10875004  | 16509405 
-> [ 987.000000] (6:node@c-5.me)  10875132  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10875388  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10875900  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10876924  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10878972  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10883068  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10891260  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10907644  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  10940412  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  11005948  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  11137020  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  11399164  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  11923452  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  12972028  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  15069180  | 10874876 
-> [ 987.000000] (6:node@c-5.me)  2486268  | 10874876 
-> [ 987.000000] (6:node@c-5.me) Predecessor: 10004760
-> [1196.000000] (0:@) Messages created: 1827
-> [1196.000000] (0:@) Simulated time: 1196
+> [   5.999900] (2:node@c-1.me) My finger table:
+> [   5.999900] (2:node@c-1.me) Start | Succ 
+> [   5.999900] (2:node@c-1.me)  366681  |  42 
+> [   5.999900] (2:node@c-1.me)  366682  | 366680 
+> [   5.999900] (2:node@c-1.me)  366684  | 366680 
+> [   5.999900] (2:node@c-1.me)  366688  | 366680 
+> [   5.999900] (2:node@c-1.me)  366696  | 366680 
+> [   5.999900] (2:node@c-1.me)  366712  | 366680 
+> [   5.999900] (2:node@c-1.me)  366744  | 366680 
+> [   5.999900] (2:node@c-1.me)  366808  | 366680 
+> [   5.999900] (2:node@c-1.me)  366936  | 366680 
+> [   5.999900] (2:node@c-1.me)  367192  | 366680 
+> [   5.999900] (2:node@c-1.me)  367704  | 366680 
+> [   5.999900] (2:node@c-1.me)  368728  | 366680 
+> [   5.999900] (2:node@c-1.me)  370776  | 366680 
+> [   5.999900] (2:node@c-1.me)  374872  | 366680 
+> [   5.999900] (2:node@c-1.me)  383064  | 366680 
+> [   5.999900] (2:node@c-1.me)  399448  | 366680 
+> [   5.999900] (2:node@c-1.me)  432216  | 366680 
+> [   5.999900] (2:node@c-1.me)  497752  | 366680 
+> [   5.999900] (2:node@c-1.me)  628824  | 366680 
+> [   5.999900] (2:node@c-1.me)  890968  | 366680 
+> [   5.999900] (2:node@c-1.me)  1415256  | 366680 
+> [   5.999900] (2:node@c-1.me)  2463832  | 366680 
+> [   5.999900] (2:node@c-1.me)  4560984  | 366680 
+> [   5.999900] (2:node@c-1.me)  8755288  | 366680 
+> [   5.999900] (2:node@c-1.me) Predecessor: -1
+> [   7.999900] (7:node@c-6.me) My finger table:
+> [   7.999900] (7:node@c-6.me) Start | Succ 
+> [   7.999900] (7:node@c-6.me)  16728097  | 1319738 
+> [   7.999900] (7:node@c-6.me)  16728098  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728100  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728104  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728112  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728128  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728160  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728224  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728352  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16728608  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16729120  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16730144  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16732192  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16736288  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16744480  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16760864  | 16728096 
+> [   7.999900] (7:node@c-6.me)  16416  | 16728096 
+> [   7.999900] (7:node@c-6.me)  81952  | 16728096 
+> [   7.999900] (7:node@c-6.me)  213024  | 16728096 
+> [   7.999900] (7:node@c-6.me)  475168  | 16728096 
+> [   7.999900] (7:node@c-6.me)  999456  | 16728096 
+> [   7.999900] (7:node@c-6.me)  2048032  | 16728096 
+> [   7.999900] (7:node@c-6.me)  4145184  | 16728096 
+> [   7.999900] (7:node@c-6.me)  8339488  | 16728096 
+> [   7.999900] (7:node@c-6.me) Predecessor: -1
+> [   8.999900] (10:node@c-9.me) My finger table:
+> [   8.999900] (10:node@c-9.me) Start | Succ 
+> [   8.999900] (10:node@c-9.me)  2015254  | 1319738 
+> [   8.999900] (10:node@c-9.me)  2015255  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015257  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015261  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015269  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015285  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015317  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015381  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015509  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2015765  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2016277  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2017301  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2019349  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2023445  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2031637  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2048021  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2080789  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2146325  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2277397  | 2015253 
+> [   8.999900] (10:node@c-9.me)  2539541  | 2015253 
+> [   8.999900] (10:node@c-9.me)  3063829  | 2015253 
+> [   8.999900] (10:node@c-9.me)  4112405  | 2015253 
+> [   8.999900] (10:node@c-9.me)  6209557  | 2015253 
+> [   8.999900] (10:node@c-9.me)  10403861  | 2015253 
+> [   8.999900] (10:node@c-9.me) Predecessor: -1
+> [  10.999800] (4:node@c-3.me) My finger table:
+> [  10.999800] (4:node@c-3.me) Start | Succ 
+> [  10.999800] (4:node@c-3.me)  1319739  |  42 
+> [  10.999800] (4:node@c-3.me)  1319740  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319742  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319746  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319754  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319770  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319802  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319866  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1319994  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1320250  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1320762  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1321786  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1323834  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1327930  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1336122  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1352506  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1385274  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1450810  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1581882  | 1319738 
+> [  10.999800] (4:node@c-3.me)  1844026  | 1319738 
+> [  10.999800] (4:node@c-3.me)  2368314  | 1319738 
+> [  10.999800] (4:node@c-3.me)  3416890  | 1319738 
+> [  10.999800] (4:node@c-3.me)  5514042  | 1319738 
+> [  10.999800] (4:node@c-3.me)  9708346  | 1319738 
+> [  10.999800] (4:node@c-3.me) Predecessor: -1
+> [  15.999700] (9:node@c-8.me) My finger table:
+> [  15.999700] (9:node@c-8.me) Start | Succ 
+> [  15.999700] (9:node@c-8.me)  6518809  |  42 
+> [  15.999700] (9:node@c-8.me)  6518810  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518812  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518816  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518824  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518840  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518872  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6518936  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6519064  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6519320  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6519832  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6520856  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6522904  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6527000  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6535192  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6551576  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6584344  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6649880  | 6518808 
+> [  15.999700] (9:node@c-8.me)  6780952  | 6518808 
+> [  15.999700] (9:node@c-8.me)  7043096  | 6518808 
+> [  15.999700] (9:node@c-8.me)  7567384  | 6518808 
+> [  15.999700] (9:node@c-8.me)  8615960  | 6518808 
+> [  15.999700] (9:node@c-8.me)  10713112  | 6518808 
+> [  15.999700] (9:node@c-8.me)  14907416  | 6518808 
+> [  15.999700] (9:node@c-8.me) Predecessor: -1
+> [  26.999600] (3:node@c-2.me) My finger table:
+> [  26.999600] (3:node@c-2.me) Start | Succ 
+> [  26.999600] (3:node@c-2.me)  533745  | 366680 
+> [  26.999600] (3:node@c-2.me)  533746  | 533744 
+> [  26.999600] (3:node@c-2.me)  533748  | 533744 
+> [  26.999600] (3:node@c-2.me)  533752  | 533744 
+> [  26.999600] (3:node@c-2.me)  533760  | 533744 
+> [  26.999600] (3:node@c-2.me)  533776  | 533744 
+> [  26.999600] (3:node@c-2.me)  533808  | 533744 
+> [  26.999600] (3:node@c-2.me)  533872  | 533744 
+> [  26.999600] (3:node@c-2.me)  534000  | 533744 
+> [  26.999600] (3:node@c-2.me)  534256  | 533744 
+> [  26.999600] (3:node@c-2.me)  534768  | 533744 
+> [  26.999600] (3:node@c-2.me)  535792  | 533744 
+> [  26.999600] (3:node@c-2.me)  537840  | 533744 
+> [  26.999600] (3:node@c-2.me)  541936  | 533744 
+> [  26.999600] (3:node@c-2.me)  550128  | 533744 
+> [  26.999600] (3:node@c-2.me)  566512  | 533744 
+> [  26.999600] (3:node@c-2.me)  599280  | 533744 
+> [  26.999600] (3:node@c-2.me)  664816  | 533744 
+> [  26.999600] (3:node@c-2.me)  795888  | 533744 
+> [  26.999600] (3:node@c-2.me)  1058032  | 533744 
+> [  26.999600] (3:node@c-2.me)  1582320  | 533744 
+> [  26.999600] (3:node@c-2.me)  2630896  | 533744 
+> [  26.999600] (3:node@c-2.me)  4728048  | 533744 
+> [  26.999600] (3:node@c-2.me)  8922352  | 533744 
+> [  26.999600] (3:node@c-2.me) Predecessor: 10874876
+> [  31.999400] (5:node@c-4.me) My finger table:
+> [  31.999400] (5:node@c-4.me) Start | Succ 
+> [  31.999400] (5:node@c-4.me)  16509406  | 366680 
+> [  31.999400] (5:node@c-4.me)  16509407  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509409  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509413  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509421  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509437  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509469  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509533  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509661  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16509917  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16510429  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16511453  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16513501  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16517597  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16525789  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16542173  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16574941  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16640477  | 16509405 
+> [  31.999400] (5:node@c-4.me)  16771549  | 16509405 
+> [  31.999400] (5:node@c-4.me)  256477  | 16509405 
+> [  31.999400] (5:node@c-4.me)  780765  | 16509405 
+> [  31.999400] (5:node@c-4.me)  1829341  | 16509405 
+> [  31.999400] (5:node@c-4.me)  3926493  | 16509405 
+> [  31.999400] (5:node@c-4.me)  8120797  | 16509405 
+> [  31.999400] (5:node@c-4.me) Predecessor: 10004760
+> [  32.999400] (2:node@c-1.me) My finger table:
+> [  32.999400] (2:node@c-1.me) Start | Succ 
+> [  32.999400] (2:node@c-1.me)  366681  |  42 
+> [  32.999400] (2:node@c-1.me)  366682  | 366680 
+> [  32.999400] (2:node@c-1.me)  366684  | 366680 
+> [  32.999400] (2:node@c-1.me)  366688  | 366680 
+> [  32.999400] (2:node@c-1.me)  366696  | 366680 
+> [  32.999400] (2:node@c-1.me)  366712  | 366680 
+> [  32.999400] (2:node@c-1.me)  366744  | 366680 
+> [  32.999400] (2:node@c-1.me)  366808  | 366680 
+> [  32.999400] (2:node@c-1.me)  366936  | 366680 
+> [  32.999400] (2:node@c-1.me)  367192  | 366680 
+> [  32.999400] (2:node@c-1.me)  367704  | 366680 
+> [  32.999400] (2:node@c-1.me)  368728  | 366680 
+> [  32.999400] (2:node@c-1.me)  370776  | 366680 
+> [  32.999400] (2:node@c-1.me)  374872  | 366680 
+> [  32.999400] (2:node@c-1.me)  383064  | 366680 
+> [  32.999400] (2:node@c-1.me)  399448  | 366680 
+> [  32.999400] (2:node@c-1.me)  432216  | 366680 
+> [  32.999400] (2:node@c-1.me)  497752  | 366680 
+> [  32.999400] (2:node@c-1.me)  628824  | 366680 
+> [  32.999400] (2:node@c-1.me)  890968  | 366680 
+> [  32.999400] (2:node@c-1.me)  1415256  | 366680 
+> [  32.999400] (2:node@c-1.me)  2463832  | 366680 
+> [  32.999400] (2:node@c-1.me)  4560984  | 366680 
+> [  32.999400] (2:node@c-1.me)  8755288  | 366680 
+> [  32.999400] (2:node@c-1.me) Predecessor: 533744
+> [  33.999400] (2:node@c-1.me) My finger table:
+> [  33.999400] (2:node@c-1.me) Start | Succ 
+> [  33.999400] (2:node@c-1.me)  366681  |  42 
+> [  33.999400] (2:node@c-1.me)  366682  | 366680 
+> [  33.999400] (2:node@c-1.me)  366684  | 366680 
+> [  33.999400] (2:node@c-1.me)  366688  | 366680 
+> [  33.999400] (2:node@c-1.me)  366696  | 366680 
+> [  33.999400] (2:node@c-1.me)  366712  | 366680 
+> [  33.999400] (2:node@c-1.me)  366744  | 366680 
+> [  33.999400] (2:node@c-1.me)  366808  | 366680 
+> [  33.999400] (2:node@c-1.me)  366936  | 366680 
+> [  33.999400] (2:node@c-1.me)  367192  | 366680 
+> [  33.999400] (2:node@c-1.me)  367704  | 366680 
+> [  33.999400] (2:node@c-1.me)  368728  | 366680 
+> [  33.999400] (2:node@c-1.me)  370776  | 366680 
+> [  33.999400] (2:node@c-1.me)  374872  | 366680 
+> [  33.999400] (2:node@c-1.me)  383064  | 366680 
+> [  33.999400] (2:node@c-1.me)  399448  | 366680 
+> [  33.999400] (2:node@c-1.me)  432216  | 366680 
+> [  33.999400] (2:node@c-1.me)  497752  | 366680 
+> [  33.999400] (2:node@c-1.me)  628824  | 366680 
+> [  33.999400] (2:node@c-1.me)  890968  | 366680 
+> [  33.999400] (2:node@c-1.me)  1415256  | 366680 
+> [  33.999400] (2:node@c-1.me)  2463832  | 366680 
+> [  33.999400] (2:node@c-1.me)  4560984  | 366680 
+> [  33.999400] (2:node@c-1.me)  8755288  | 366680 
+> [  33.999400] (2:node@c-1.me) Predecessor: 16509405
+> [  35.999300] (4:node@c-3.me) My finger table:
+> [  35.999300] (4:node@c-3.me) Start | Succ 
+> [  35.999300] (4:node@c-3.me)  1319739  |  42 
+> [  35.999300] (4:node@c-3.me)  1319740  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319742  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319746  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319754  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319770  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319802  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319866  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1319994  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1320250  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1320762  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1321786  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1323834  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1327930  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1336122  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1352506  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1385274  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1450810  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1581882  | 1319738 
+> [  35.999300] (4:node@c-3.me)  1844026  | 1319738 
+> [  35.999300] (4:node@c-3.me)  2368314  | 1319738 
+> [  35.999300] (4:node@c-3.me)  3416890  | 1319738 
+> [  35.999300] (4:node@c-3.me)  5514042  | 1319738 
+> [  35.999300] (4:node@c-3.me)  9708346  | 1319738 
+> [  35.999300] (4:node@c-3.me) Predecessor: 16728096
+> [  49.999000] (1:node@c-0.me) My finger table:
+> [  49.999000] (1:node@c-0.me) Start | Succ 
+> [  49.999000] (1:node@c-0.me)   43  |  42 
+> [  49.999000] (1:node@c-0.me)   44  |  42 
+> [  49.999000] (1:node@c-0.me)   46  |  42 
+> [  49.999000] (1:node@c-0.me)   50  |  42 
+> [  49.999000] (1:node@c-0.me)   58  |  42 
+> [  49.999000] (1:node@c-0.me)   74  |  42 
+> [  49.999000] (1:node@c-0.me)  106  |  42 
+> [  49.999000] (1:node@c-0.me)  170  |  42 
+> [  49.999000] (1:node@c-0.me)  298  |  42 
+> [  49.999000] (1:node@c-0.me)  554  |  42 
+> [  49.999000] (1:node@c-0.me)  1066  |  42 
+> [  49.999000] (1:node@c-0.me)  2090  |  42 
+> [  49.999000] (1:node@c-0.me)  4138  |  42 
+> [  49.999000] (1:node@c-0.me)  8234  |  42 
+> [  49.999000] (1:node@c-0.me)  16426  |  42 
+> [  49.999000] (1:node@c-0.me)  32810  |  42 
+> [  49.999000] (1:node@c-0.me)  65578  |  42 
+> [  49.999000] (1:node@c-0.me)  131114  |  42 
+> [  49.999000] (1:node@c-0.me)  262186  |  42 
+> [  49.999000] (1:node@c-0.me)  524330  |  42 
+> [  49.999000] (1:node@c-0.me)  1048618  |  42 
+> [  49.999000] (1:node@c-0.me)  2097194  |  42 
+> [  49.999000] (1:node@c-0.me)  4194346  |  42 
+> [  49.999000] (1:node@c-0.me)  8388650  |  42 
+> [  49.999000] (1:node@c-0.me) Predecessor: 366680
+> [  59.998800] (1:node@c-0.me) My finger table:
+> [  59.998800] (1:node@c-0.me) Start | Succ 
+> [  59.998800] (1:node@c-0.me)   43  | 366680 
+> [  59.998800] (1:node@c-0.me)   44  |  42 
+> [  59.998800] (1:node@c-0.me)   46  |  42 
+> [  59.998800] (1:node@c-0.me)   50  |  42 
+> [  59.998800] (1:node@c-0.me)   58  |  42 
+> [  59.998800] (1:node@c-0.me)   74  |  42 
+> [  59.998800] (1:node@c-0.me)  106  |  42 
+> [  59.998800] (1:node@c-0.me)  170  |  42 
+> [  59.998800] (1:node@c-0.me)  298  |  42 
+> [  59.998800] (1:node@c-0.me)  554  |  42 
+> [  59.998800] (1:node@c-0.me)  1066  |  42 
+> [  59.998800] (1:node@c-0.me)  2090  |  42 
+> [  59.998800] (1:node@c-0.me)  4138  |  42 
+> [  59.998800] (1:node@c-0.me)  8234  |  42 
+> [  59.998800] (1:node@c-0.me)  16426  |  42 
+> [  59.998800] (1:node@c-0.me)  32810  |  42 
+> [  59.998800] (1:node@c-0.me)  65578  |  42 
+> [  59.998800] (1:node@c-0.me)  131114  |  42 
+> [  59.998800] (1:node@c-0.me)  262186  |  42 
+> [  59.998800] (1:node@c-0.me)  524330  |  42 
+> [  59.998800] (1:node@c-0.me)  1048618  |  42 
+> [  59.998800] (1:node@c-0.me)  2097194  |  42 
+> [  59.998800] (1:node@c-0.me)  4194346  |  42 
+> [  59.998800] (1:node@c-0.me)  8388650  |  42 
+> [  59.998800] (1:node@c-0.me) Predecessor: 1319738
+> [  69.998600] (1:node@c-0.me) My finger table:
+> [  69.998600] (1:node@c-0.me) Start | Succ 
+> [  69.998600] (1:node@c-0.me)   43  | 366680 
+> [  69.998600] (1:node@c-0.me)   44  |  42 
+> [  69.998600] (1:node@c-0.me)   46  |  42 
+> [  69.998600] (1:node@c-0.me)   50  |  42 
+> [  69.998600] (1:node@c-0.me)   58  |  42 
+> [  69.998600] (1:node@c-0.me)   74  |  42 
+> [  69.998600] (1:node@c-0.me)  106  |  42 
+> [  69.998600] (1:node@c-0.me)  170  |  42 
+> [  69.998600] (1:node@c-0.me)  298  |  42 
+> [  69.998600] (1:node@c-0.me)  554  |  42 
+> [  69.998600] (1:node@c-0.me)  1066  |  42 
+> [  69.998600] (1:node@c-0.me)  2090  |  42 
+> [  69.998600] (1:node@c-0.me)  4138  |  42 
+> [  69.998600] (1:node@c-0.me)  8234  |  42 
+> [  69.998600] (1:node@c-0.me)  16426  |  42 
+> [  69.998600] (1:node@c-0.me)  32810  |  42 
+> [  69.998600] (1:node@c-0.me)  65578  |  42 
+> [  69.998600] (1:node@c-0.me)  131114  |  42 
+> [  69.998600] (1:node@c-0.me)  262186  |  42 
+> [  69.998600] (1:node@c-0.me)  524330  |  42 
+> [  69.998600] (1:node@c-0.me)  1048618  |  42 
+> [  69.998600] (1:node@c-0.me)  2097194  |  42 
+> [  69.998600] (1:node@c-0.me)  4194346  |  42 
+> [  69.998600] (1:node@c-0.me)  8388650  |  42 
+> [  69.998600] (1:node@c-0.me) Predecessor: 6518808
+> [  81.998500] (2:node@c-1.me) My finger table:
+> [  81.998500] (2:node@c-1.me) Start | Succ 
+> [  81.998500] (2:node@c-1.me)  366681  | 6518808 
+> [  81.998500] (2:node@c-1.me)  366682  | 366680 
+> [  81.998500] (2:node@c-1.me)  366684  | 366680 
+> [  81.998500] (2:node@c-1.me)  366688  | 366680 
+> [  81.998500] (2:node@c-1.me)  366696  | 366680 
+> [  81.998500] (2:node@c-1.me)  366712  | 366680 
+> [  81.998500] (2:node@c-1.me)  366744  | 366680 
+> [  81.998500] (2:node@c-1.me)  366808  | 366680 
+> [  81.998500] (2:node@c-1.me)  366936  | 366680 
+> [  81.998500] (2:node@c-1.me)  367192  | 366680 
+> [  81.998500] (2:node@c-1.me)  367704  | 366680 
+> [  81.998500] (2:node@c-1.me)  368728  | 366680 
+> [  81.998500] (2:node@c-1.me)  370776  | 366680 
+> [  81.998500] (2:node@c-1.me)  374872  | 366680 
+> [  81.998500] (2:node@c-1.me)  383064  | 366680 
+> [  81.998500] (2:node@c-1.me)  399448  | 366680 
+> [  81.998500] (2:node@c-1.me)  432216  | 366680 
+> [  81.998500] (2:node@c-1.me)  497752  | 366680 
+> [  81.998500] (2:node@c-1.me)  628824  | 366680 
+> [  81.998500] (2:node@c-1.me)  890968  | 366680 
+> [  81.998500] (2:node@c-1.me)  1415256  | 366680 
+> [  81.998500] (2:node@c-1.me)  2463832  | 366680 
+> [  81.998500] (2:node@c-1.me)  4560984  | 366680 
+> [  81.998500] (2:node@c-1.me)  8755288  | 366680 
+> [  81.998500] (2:node@c-1.me) Predecessor: 42
+> [  98.998100] (7:node@c-6.me) My finger table:
+> [  98.998100] (7:node@c-6.me) Start | Succ 
+> [  98.998100] (7:node@c-6.me)  16728097  | 1319738 
+> [  98.998100] (7:node@c-6.me)  16728098  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728100  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728104  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728112  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728128  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728160  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728224  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728352  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16728608  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16729120  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16730144  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16732192  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16736288  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16744480  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16760864  | 16728096 
+> [  98.998100] (7:node@c-6.me)  16416  | 16728096 
+> [  98.998100] (7:node@c-6.me)  81952  | 16728096 
+> [  98.998100] (7:node@c-6.me)  213024  | 16728096 
+> [  98.998100] (7:node@c-6.me)  475168  | 16728096 
+> [  98.998100] (7:node@c-6.me)  999456  | 16728096 
+> [  98.998100] (7:node@c-6.me)  2048032  | 16728096 
+> [  98.998100] (7:node@c-6.me)  4145184  | 16728096 
+> [  98.998100] (7:node@c-6.me)  8339488  | 16728096 
+> [  98.998100] (7:node@c-6.me) Predecessor: 2015253
+> [ 110.998000] (9:node@c-8.me) My finger table:
+> [ 110.998000] (9:node@c-8.me) Start | Succ 
+> [ 110.998000] (9:node@c-8.me)  6518809  |  42 
+> [ 110.998000] (9:node@c-8.me)  6518810  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518812  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518816  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518824  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518840  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518872  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6518936  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6519064  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6519320  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6519832  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6520856  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6522904  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6527000  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6535192  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6551576  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6584344  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6649880  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  6780952  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  7043096  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  7567384  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  8615960  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  10713112  | 6518808 
+> [ 110.998000] (9:node@c-8.me)  14907416  | 6518808 
+> [ 110.998000] (9:node@c-8.me) Predecessor: 366680
+> [ 111.998000] (9:node@c-8.me) My finger table:
+> [ 111.998000] (9:node@c-8.me) Start | Succ 
+> [ 111.998000] (9:node@c-8.me)  6518809  |  42 
+> [ 111.998000] (9:node@c-8.me)  6518810  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518812  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518816  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518824  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518840  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518872  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6518936  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6519064  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6519320  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6519832  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6520856  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6522904  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6527000  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6535192  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6551576  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6584344  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6649880  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  6780952  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  7043096  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  7567384  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  8615960  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  10713112  | 6518808 
+> [ 111.998000] (9:node@c-8.me)  14907416  | 6518808 
+> [ 111.998000] (9:node@c-8.me) Predecessor: 1319738
+> [ 127.997700] (8:node@c-7.me) My finger table:
+> [ 127.997700] (8:node@c-7.me) Start | Succ 
+> [ 127.997700] (8:node@c-7.me)  10004761  | 16509405 
+> [ 127.997700] (8:node@c-7.me)  10004762  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004764  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004768  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004776  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004792  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004824  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10004888  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10005016  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10005272  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10005784  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10006808  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10008856  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10012952  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10021144  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10037528  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10070296  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10135832  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10266904  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  10529048  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  11053336  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  12101912  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  14199064  | 10004760 
+> [ 127.997700] (8:node@c-7.me)  1616152  | 10004760 
+> [ 127.997700] (8:node@c-7.me) Predecessor: 533744
+> [ 137.997600] (1:node@c-0.me) My finger table:
+> [ 137.997600] (1:node@c-0.me) Start | Succ 
+> [ 137.997600] (1:node@c-0.me)   43  | 366680 
+> [ 137.997600] (1:node@c-0.me)   44  |  42 
+> [ 137.997600] (1:node@c-0.me)   46  |  42 
+> [ 137.997600] (1:node@c-0.me)   50  |  42 
+> [ 137.997600] (1:node@c-0.me)   58  |  42 
+> [ 137.997600] (1:node@c-0.me)   74  |  42 
+> [ 137.997600] (1:node@c-0.me)  106  |  42 
+> [ 137.997600] (1:node@c-0.me)  170  |  42 
+> [ 137.997600] (1:node@c-0.me)  298  |  42 
+> [ 137.997600] (1:node@c-0.me)  554  |  42 
+> [ 137.997600] (1:node@c-0.me)  1066  |  42 
+> [ 137.997600] (1:node@c-0.me)  2090  |  42 
+> [ 137.997600] (1:node@c-0.me)  4138  |  42 
+> [ 137.997600] (1:node@c-0.me)  8234  |  42 
+> [ 137.997600] (1:node@c-0.me)  16426  |  42 
+> [ 137.997600] (1:node@c-0.me)  32810  |  42 
+> [ 137.997600] (1:node@c-0.me)  65578  |  42 
+> [ 137.997600] (1:node@c-0.me)  131114  |  42 
+> [ 137.997600] (1:node@c-0.me)  262186  |  42 
+> [ 137.997600] (1:node@c-0.me)  524330  |  42 
+> [ 137.997600] (1:node@c-0.me)  1048618  |  42 
+> [ 137.997600] (1:node@c-0.me)  2097194  |  42 
+> [ 137.997600] (1:node@c-0.me)  4194346  |  42 
+> [ 137.997600] (1:node@c-0.me)  8388650  |  42 
+> [ 137.997600] (1:node@c-0.me) Predecessor: 16509405
+> [ 165.997100] (4:node@c-3.me) My finger table:
+> [ 165.997100] (4:node@c-3.me) Start | Succ 
+> [ 165.997100] (4:node@c-3.me)  1319739  | 6518808 
+> [ 165.997100] (4:node@c-3.me)  1319740  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319742  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319746  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319754  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319770  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319802  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319866  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1319994  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1320250  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1320762  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1321786  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1323834  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1327930  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1336122  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1352506  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1385274  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1450810  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1581882  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  1844026  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  2368314  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  3416890  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  5514042  | 1319738 
+> [ 165.997100] (4:node@c-3.me)  9708346  | 1319738 
+> [ 165.997100] (4:node@c-3.me) Predecessor: 366680
+> [ 209.996500] (8:node@c-7.me) My finger table:
+> [ 209.996500] (8:node@c-7.me) Start | Succ 
+> [ 209.996500] (8:node@c-7.me)  10004761  | 16509405 
+> [ 209.996500] (8:node@c-7.me)  10004762  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004764  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004768  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004776  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004792  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004824  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10004888  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10005016  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10005272  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10005784  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10006808  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10008856  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10012952  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10021144  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10037528  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10070296  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10135832  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10266904  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  10529048  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  11053336  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  12101912  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  14199064  | 10004760 
+> [ 209.996500] (8:node@c-7.me)  1616152  | 10004760 
+> [ 209.996500] (8:node@c-7.me) Predecessor: 6518808
+> [ 247.995800] (6:node@c-5.me) My finger table:
+> [ 247.995800] (6:node@c-5.me) Start | Succ 
+> [ 247.995800] (6:node@c-5.me)  10874877  | 533744 
+> [ 247.995800] (6:node@c-5.me)  10874878  | 533744 
+> [ 247.995800] (6:node@c-5.me)  10874880  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10874884  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10874892  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10874908  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10874940  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10875004  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10875132  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10875388  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10875900  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10876924  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10878972  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10883068  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10891260  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10907644  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  10940412  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  11005948  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  11137020  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  11399164  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  11923452  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  12972028  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  15069180  | 10874876 
+> [ 247.995800] (6:node@c-5.me)  2486268  | 10874876 
+> [ 247.995800] (6:node@c-5.me) Predecessor: -1
+> [ 249.995700] (7:node@c-6.me) My finger table:
+> [ 249.995700] (7:node@c-6.me) Start | Succ 
+> [ 249.995700] (7:node@c-6.me)  16728097  |  42 
+> [ 249.995700] (7:node@c-6.me)  16728098  |  42 
+> [ 249.995700] (7:node@c-6.me)  16728100  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728104  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728112  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728128  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728160  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728224  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728352  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16728608  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16729120  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16730144  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16732192  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16736288  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16744480  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16760864  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  16416  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  81952  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  213024  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  475168  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  999456  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  2048032  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  4145184  | 16728096 
+> [ 249.995700] (7:node@c-6.me)  8339488  | 16728096 
+> [ 249.995700] (7:node@c-6.me) Predecessor: 2015253
+> [ 251.995700] (8:node@c-7.me) My finger table:
+> [ 251.995700] (8:node@c-7.me) Start | Succ 
+> [ 251.995700] (8:node@c-7.me)  10004761  | 16509405 
+> [ 251.995700] (8:node@c-7.me)  10004762  | 16509405 
+> [ 251.995700] (8:node@c-7.me)  10004764  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004768  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004776  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004792  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004824  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10004888  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10005016  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10005272  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10005784  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10006808  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10008856  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10012952  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10021144  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10037528  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10070296  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10135832  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10266904  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  10529048  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  11053336  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  12101912  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  14199064  | 10004760 
+> [ 251.995700] (8:node@c-7.me)  1616152  | 10004760 
+> [ 251.995700] (8:node@c-7.me) Predecessor: 6518808
+> [ 252.995700] (2:node@c-1.me) My finger table:
+> [ 252.995700] (2:node@c-1.me) Start | Succ 
+> [ 252.995700] (2:node@c-1.me)  366681  | 1319738 
+> [ 252.995700] (2:node@c-1.me)  366682  | 1319738 
+> [ 252.995700] (2:node@c-1.me)  366684  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366688  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366696  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366712  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366744  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366808  | 366680 
+> [ 252.995700] (2:node@c-1.me)  366936  | 366680 
+> [ 252.995700] (2:node@c-1.me)  367192  | 366680 
+> [ 252.995700] (2:node@c-1.me)  367704  | 366680 
+> [ 252.995700] (2:node@c-1.me)  368728  | 366680 
+> [ 252.995700] (2:node@c-1.me)  370776  | 366680 
+> [ 252.995700] (2:node@c-1.me)  374872  | 366680 
+> [ 252.995700] (2:node@c-1.me)  383064  | 366680 
+> [ 252.995700] (2:node@c-1.me)  399448  | 366680 
+> [ 252.995700] (2:node@c-1.me)  432216  | 366680 
+> [ 252.995700] (2:node@c-1.me)  497752  | 366680 
+> [ 252.995700] (2:node@c-1.me)  628824  | 366680 
+> [ 252.995700] (2:node@c-1.me)  890968  | 366680 
+> [ 252.995700] (2:node@c-1.me)  1415256  | 366680 
+> [ 252.995700] (2:node@c-1.me)  2463832  | 366680 
+> [ 252.995700] (2:node@c-1.me)  4560984  | 366680 
+> [ 252.995700] (2:node@c-1.me)  8755288  | 366680 
+> [ 252.995700] (2:node@c-1.me) Predecessor: 42
+> [ 254.995700] (1:node@c-0.me) My finger table:
+> [ 254.995700] (1:node@c-0.me) Start | Succ 
+> [ 254.995700] (1:node@c-0.me)   43  | 366680 
+> [ 254.995700] (1:node@c-0.me)   44  |  42 
+> [ 254.995700] (1:node@c-0.me)   46  |  42 
+> [ 254.995700] (1:node@c-0.me)   50  |  42 
+> [ 254.995700] (1:node@c-0.me)   58  |  42 
+> [ 254.995700] (1:node@c-0.me)   74  |  42 
+> [ 254.995700] (1:node@c-0.me)  106  |  42 
+> [ 254.995700] (1:node@c-0.me)  170  |  42 
+> [ 254.995700] (1:node@c-0.me)  298  |  42 
+> [ 254.995700] (1:node@c-0.me)  554  |  42 
+> [ 254.995700] (1:node@c-0.me)  1066  |  42 
+> [ 254.995700] (1:node@c-0.me)  2090  |  42 
+> [ 254.995700] (1:node@c-0.me)  4138  |  42 
+> [ 254.995700] (1:node@c-0.me)  8234  |  42 
+> [ 254.995700] (1:node@c-0.me)  16426  |  42 
+> [ 254.995700] (1:node@c-0.me)  32810  |  42 
+> [ 254.995700] (1:node@c-0.me)  65578  |  42 
+> [ 254.995700] (1:node@c-0.me)  131114  |  42 
+> [ 254.995700] (1:node@c-0.me)  262186  |  42 
+> [ 254.995700] (1:node@c-0.me)  524330  |  42 
+> [ 254.995700] (1:node@c-0.me)  1048618  |  42 
+> [ 254.995700] (1:node@c-0.me)  2097194  |  42 
+> [ 254.995700] (1:node@c-0.me)  4194346  |  42 
+> [ 254.995700] (1:node@c-0.me)  8388650  |  42 
+> [ 254.995700] (1:node@c-0.me) Predecessor: 16728096
+> [ 254.995700] (4:node@c-3.me) My finger table:
+> [ 254.995700] (4:node@c-3.me) Start | Succ 
+> [ 254.995700] (4:node@c-3.me)  1319739  | 6518808 
+> [ 254.995700] (4:node@c-3.me)  1319740  | 6518808 
+> [ 254.995700] (4:node@c-3.me)  1319742  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319746  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319754  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319770  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319802  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319866  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1319994  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1320250  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1320762  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1321786  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1323834  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1327930  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1336122  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1352506  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1385274  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1450810  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1581882  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  1844026  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  2368314  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  3416890  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  5514042  | 1319738 
+> [ 254.995700] (4:node@c-3.me)  9708346  | 1319738 
+> [ 254.995700] (4:node@c-3.me) Predecessor: 366680
+> [ 255.995700] (1:node@c-0.me) My finger table:
+> [ 255.995700] (1:node@c-0.me) Start | Succ 
+> [ 255.995700] (1:node@c-0.me)   43  | 366680 
+> [ 255.995700] (1:node@c-0.me)   44  | 366680 
+> [ 255.995700] (1:node@c-0.me)   46  |  42 
+> [ 255.995700] (1:node@c-0.me)   50  |  42 
+> [ 255.995700] (1:node@c-0.me)   58  |  42 
+> [ 255.995700] (1:node@c-0.me)   74  |  42 
+> [ 255.995700] (1:node@c-0.me)  106  |  42 
+> [ 255.995700] (1:node@c-0.me)  170  |  42 
+> [ 255.995700] (1:node@c-0.me)  298  |  42 
+> [ 255.995700] (1:node@c-0.me)  554  |  42 
+> [ 255.995700] (1:node@c-0.me)  1066  |  42 
+> [ 255.995700] (1:node@c-0.me)  2090  |  42 
+> [ 255.995700] (1:node@c-0.me)  4138  |  42 
+> [ 255.995700] (1:node@c-0.me)  8234  |  42 
+> [ 255.995700] (1:node@c-0.me)  16426  |  42 
+> [ 255.995700] (1:node@c-0.me)  32810  |  42 
+> [ 255.995700] (1:node@c-0.me)  65578  |  42 
+> [ 255.995700] (1:node@c-0.me)  131114  |  42 
+> [ 255.995700] (1:node@c-0.me)  262186  |  42 
+> [ 255.995700] (1:node@c-0.me)  524330  |  42 
+> [ 255.995700] (1:node@c-0.me)  1048618  |  42 
+> [ 255.995700] (1:node@c-0.me)  2097194  |  42 
+> [ 255.995700] (1:node@c-0.me)  4194346  |  42 
+> [ 255.995700] (1:node@c-0.me)  8388650  |  42 
+> [ 255.995700] (1:node@c-0.me) Predecessor: 16728096
+> [ 255.995700] (5:node@c-4.me) My finger table:
+> [ 255.995700] (5:node@c-4.me) Start | Succ 
+> [ 255.995700] (5:node@c-4.me)  16509406  |  42 
+> [ 255.995700] (5:node@c-4.me)  16509407  |  42 
+> [ 255.995700] (5:node@c-4.me)  16509409  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509413  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509421  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509437  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509469  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509533  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509661  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16509917  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16510429  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16511453  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16513501  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16517597  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16525789  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16542173  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16574941  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16640477  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  16771549  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  256477  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  780765  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  1829341  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  3926493  | 16509405 
+> [ 255.995700] (5:node@c-4.me)  8120797  | 16509405 
+> [ 255.995700] (5:node@c-4.me) Predecessor: 10004760
+> [ 257.995700] (10:node@c-9.me) My finger table:
+> [ 257.995700] (10:node@c-9.me) Start | Succ 
+> [ 257.995700] (10:node@c-9.me)  2015254  | 16728096 
+> [ 257.995700] (10:node@c-9.me)  2015255  | 16728096 
+> [ 257.995700] (10:node@c-9.me)  2015257  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015261  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015269  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015285  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015317  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015381  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015509  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2015765  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2016277  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2017301  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2019349  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2023445  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2031637  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2048021  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2080789  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2146325  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2277397  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  2539541  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  3063829  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  4112405  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  6209557  | 2015253 
+> [ 257.995700] (10:node@c-9.me)  10403861  | 2015253 
+> [ 257.995700] (10:node@c-9.me) Predecessor: -1
+> [ 263.995700] (3:node@c-2.me) My finger table:
+> [ 263.995700] (3:node@c-2.me) Start | Succ 
+> [ 263.995700] (3:node@c-2.me)  533745  | 1319738 
+> [ 263.995700] (3:node@c-2.me)  533746  | 1319738 
+> [ 263.995700] (3:node@c-2.me)  533748  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533752  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533760  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533776  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533808  | 533744 
+> [ 263.995700] (3:node@c-2.me)  533872  | 533744 
+> [ 263.995700] (3:node@c-2.me)  534000  | 533744 
+> [ 263.995700] (3:node@c-2.me)  534256  | 533744 
+> [ 263.995700] (3:node@c-2.me)  534768  | 533744 
+> [ 263.995700] (3:node@c-2.me)  535792  | 533744 
+> [ 263.995700] (3:node@c-2.me)  537840  | 533744 
+> [ 263.995700] (3:node@c-2.me)  541936  | 533744 
+> [ 263.995700] (3:node@c-2.me)  550128  | 533744 
+> [ 263.995700] (3:node@c-2.me)  566512  | 533744 
+> [ 263.995700] (3:node@c-2.me)  599280  | 533744 
+> [ 263.995700] (3:node@c-2.me)  664816  | 533744 
+> [ 263.995700] (3:node@c-2.me)  795888  | 533744 
+> [ 263.995700] (3:node@c-2.me)  1058032  | 533744 
+> [ 263.995700] (3:node@c-2.me)  1582320  | 533744 
+> [ 263.995700] (3:node@c-2.me)  2630896  | 533744 
+> [ 263.995700] (3:node@c-2.me)  4728048  | 533744 
+> [ 263.995700] (3:node@c-2.me)  8922352  | 533744 
+> [ 263.995700] (3:node@c-2.me) Predecessor: 10874876
+> [ 264.995500] (9:node@c-8.me) My finger table:
+> [ 264.995500] (9:node@c-8.me) Start | Succ 
+> [ 264.995500] (9:node@c-8.me)  6518809  | 10004760 
+> [ 264.995500] (9:node@c-8.me)  6518810  | 10004760 
+> [ 264.995500] (9:node@c-8.me)  6518812  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518816  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518824  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518840  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518872  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6518936  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6519064  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6519320  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6519832  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6520856  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6522904  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6527000  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6535192  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6551576  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6584344  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6649880  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  6780952  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  7043096  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  7567384  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  8615960  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  10713112  | 6518808 
+> [ 264.995500] (9:node@c-8.me)  14907416  | 6518808 
+> [ 264.995500] (9:node@c-8.me) Predecessor: 1319738
+> [ 310.994900] (4:node@c-3.me) My finger table:
+> [ 310.994900] (4:node@c-3.me) Start | Succ 
+> [ 310.994900] (4:node@c-3.me)  1319739  | 6518808 
+> [ 310.994900] (4:node@c-3.me)  1319740  | 6518808 
+> [ 310.994900] (4:node@c-3.me)  1319742  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319746  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319754  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319770  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319802  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319866  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1319994  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1320250  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1320762  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1321786  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1323834  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1327930  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1336122  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1352506  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1385274  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1450810  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1581882  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  1844026  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  2368314  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  3416890  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  5514042  | 1319738 
+> [ 310.994900] (4:node@c-3.me)  9708346  | 1319738 
+> [ 310.994900] (4:node@c-3.me) Predecessor: 533744
+> [ 335.994500] (7:node@c-6.me) My finger table:
+> [ 335.994500] (7:node@c-6.me) Start | Succ 
+> [ 335.994500] (7:node@c-6.me)  16728097  |  42 
+> [ 335.994500] (7:node@c-6.me)  16728098  |  42 
+> [ 335.994500] (7:node@c-6.me)  16728100  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728104  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728112  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728128  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728160  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728224  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728352  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16728608  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16729120  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16730144  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16732192  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16736288  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16744480  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16760864  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  16416  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  81952  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  213024  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  475168  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  999456  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  2048032  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  4145184  | 16728096 
+> [ 335.994500] (7:node@c-6.me)  8339488  | 16728096 
+> [ 335.994500] (7:node@c-6.me) Predecessor: 16509405
+> [ 366.994000] (3:node@c-2.me) My finger table:
+> [ 366.994000] (3:node@c-2.me) Start | Succ 
+> [ 366.994000] (3:node@c-2.me)  533745  | 1319738 
+> [ 366.994000] (3:node@c-2.me)  533746  | 1319738 
+> [ 366.994000] (3:node@c-2.me)  533748  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533752  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533760  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533776  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533808  | 533744 
+> [ 366.994000] (3:node@c-2.me)  533872  | 533744 
+> [ 366.994000] (3:node@c-2.me)  534000  | 533744 
+> [ 366.994000] (3:node@c-2.me)  534256  | 533744 
+> [ 366.994000] (3:node@c-2.me)  534768  | 533744 
+> [ 366.994000] (3:node@c-2.me)  535792  | 533744 
+> [ 366.994000] (3:node@c-2.me)  537840  | 533744 
+> [ 366.994000] (3:node@c-2.me)  541936  | 533744 
+> [ 366.994000] (3:node@c-2.me)  550128  | 533744 
+> [ 366.994000] (3:node@c-2.me)  566512  | 533744 
+> [ 366.994000] (3:node@c-2.me)  599280  | 533744 
+> [ 366.994000] (3:node@c-2.me)  664816  | 533744 
+> [ 366.994000] (3:node@c-2.me)  795888  | 533744 
+> [ 366.994000] (3:node@c-2.me)  1058032  | 533744 
+> [ 366.994000] (3:node@c-2.me)  1582320  | 533744 
+> [ 366.994000] (3:node@c-2.me)  2630896  | 533744 
+> [ 366.994000] (3:node@c-2.me)  4728048  | 533744 
+> [ 366.994000] (3:node@c-2.me)  8922352  | 533744 
+> [ 366.994000] (3:node@c-2.me) Predecessor: 366680
+> [ 370.993500] (6:node@c-5.me) My finger table:
+> [ 370.993500] (6:node@c-5.me) Start | Succ 
+> [ 370.993500] (6:node@c-5.me)  10874877  | 533744 
+> [ 370.993500] (6:node@c-5.me)  10874878  | 533744 
+> [ 370.993500] (6:node@c-5.me)  10874880  | 533744 
+> [ 370.993500] (6:node@c-5.me)  10874884  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10874892  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10874908  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10874940  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10875004  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10875132  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10875388  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10875900  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10876924  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10878972  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10883068  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10891260  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10907644  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  10940412  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  11005948  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  11137020  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  11399164  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  11923452  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  12972028  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  15069180  | 10874876 
+> [ 370.993500] (6:node@c-5.me)  2486268  | 10874876 
+> [ 370.993500] (6:node@c-5.me) Predecessor: -1
+> [ 375.993800] (2:node@c-1.me) My finger table:
+> [ 375.993800] (2:node@c-1.me) Start | Succ 
+> [ 375.993800] (2:node@c-1.me)  366681  | 533744 
+> [ 375.993800] (2:node@c-1.me)  366682  | 1319738 
+> [ 375.993800] (2:node@c-1.me)  366684  | 533744 
+> [ 375.993800] (2:node@c-1.me)  366688  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366696  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366712  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366744  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366808  | 366680 
+> [ 375.993800] (2:node@c-1.me)  366936  | 366680 
+> [ 375.993800] (2:node@c-1.me)  367192  | 366680 
+> [ 375.993800] (2:node@c-1.me)  367704  | 366680 
+> [ 375.993800] (2:node@c-1.me)  368728  | 366680 
+> [ 375.993800] (2:node@c-1.me)  370776  | 366680 
+> [ 375.993800] (2:node@c-1.me)  374872  | 366680 
+> [ 375.993800] (2:node@c-1.me)  383064  | 366680 
+> [ 375.993800] (2:node@c-1.me)  399448  | 366680 
+> [ 375.993800] (2:node@c-1.me)  432216  | 366680 
+> [ 375.993800] (2:node@c-1.me)  497752  | 366680 
+> [ 375.993800] (2:node@c-1.me)  628824  | 366680 
+> [ 375.993800] (2:node@c-1.me)  890968  | 366680 
+> [ 375.993800] (2:node@c-1.me)  1415256  | 366680 
+> [ 375.993800] (2:node@c-1.me)  2463832  | 366680 
+> [ 375.993800] (2:node@c-1.me)  4560984  | 366680 
+> [ 375.993800] (2:node@c-1.me)  8755288  | 366680 
+> [ 375.993800] (2:node@c-1.me) Predecessor: 42
+> [ 376.993800] (1:node@c-0.me) My finger table:
+> [ 376.993800] (1:node@c-0.me) Start | Succ 
+> [ 376.993800] (1:node@c-0.me)   43  | 366680 
+> [ 376.993800] (1:node@c-0.me)   44  | 366680 
+> [ 376.993800] (1:node@c-0.me)   46  | 366680 
+> [ 376.993800] (1:node@c-0.me)   50  |  42 
+> [ 376.993800] (1:node@c-0.me)   58  |  42 
+> [ 376.993800] (1:node@c-0.me)   74  |  42 
+> [ 376.993800] (1:node@c-0.me)  106  |  42 
+> [ 376.993800] (1:node@c-0.me)  170  |  42 
+> [ 376.993800] (1:node@c-0.me)  298  |  42 
+> [ 376.993800] (1:node@c-0.me)  554  |  42 
+> [ 376.993800] (1:node@c-0.me)  1066  |  42 
+> [ 376.993800] (1:node@c-0.me)  2090  |  42 
+> [ 376.993800] (1:node@c-0.me)  4138  |  42 
+> [ 376.993800] (1:node@c-0.me)  8234  |  42 
+> [ 376.993800] (1:node@c-0.me)  16426  |  42 
+> [ 376.993800] (1:node@c-0.me)  32810  |  42 
+> [ 376.993800] (1:node@c-0.me)  65578  |  42 
+> [ 376.993800] (1:node@c-0.me)  131114  |  42 
+> [ 376.993800] (1:node@c-0.me)  262186  |  42 
+> [ 376.993800] (1:node@c-0.me)  524330  |  42 
+> [ 376.993800] (1:node@c-0.me)  1048618  |  42 
+> [ 376.993800] (1:node@c-0.me)  2097194  |  42 
+> [ 376.993800] (1:node@c-0.me)  4194346  |  42 
+> [ 376.993800] (1:node@c-0.me)  8388650  |  42 
+> [ 376.993800] (1:node@c-0.me) Predecessor: 16728096
+> [ 376.993800] (4:node@c-3.me) My finger table:
+> [ 376.993800] (4:node@c-3.me) Start | Succ 
+> [ 376.993800] (4:node@c-3.me)  1319739  | 6518808 
+> [ 376.993800] (4:node@c-3.me)  1319740  | 6518808 
+> [ 376.993800] (4:node@c-3.me)  1319742  | 6518808 
+> [ 376.993800] (4:node@c-3.me)  1319746  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319754  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319770  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319802  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319866  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1319994  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1320250  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1320762  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1321786  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1323834  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1327930  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1336122  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1352506  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1385274  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1450810  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1581882  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  1844026  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  2368314  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  3416890  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  5514042  | 1319738 
+> [ 376.993800] (4:node@c-3.me)  9708346  | 1319738 
+> [ 376.993800] (4:node@c-3.me) Predecessor: 533744
+> [ 378.993800] (10:node@c-9.me) My finger table:
+> [ 378.993800] (10:node@c-9.me) Start | Succ 
+> [ 378.993800] (10:node@c-9.me)  2015254  | 10004760 
+> [ 378.993800] (10:node@c-9.me)  2015255  | 16728096 
+> [ 378.993800] (10:node@c-9.me)  2015257  | 10004760 
+> [ 378.993800] (10:node@c-9.me)  2015261  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015269  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015285  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015317  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015381  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015509  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2015765  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2016277  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2017301  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2019349  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2023445  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2031637  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2048021  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2080789  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2146325  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2277397  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  2539541  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  3063829  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  4112405  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  6209557  | 2015253 
+> [ 378.993800] (10:node@c-9.me)  10403861  | 2015253 
+> [ 378.993800] (10:node@c-9.me) Predecessor: -1
+> [ 378.993800] (5:node@c-4.me) My finger table:
+> [ 378.993800] (5:node@c-4.me) Start | Succ 
+> [ 378.993800] (5:node@c-4.me)  16509406  | 16728096 
+> [ 378.993800] (5:node@c-4.me)  16509407  |  42 
+> [ 378.993800] (5:node@c-4.me)  16509409  | 16728096 
+> [ 378.993800] (5:node@c-4.me)  16509413  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509421  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509437  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509469  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509533  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509661  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16509917  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16510429  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16511453  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16513501  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16517597  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16525789  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16542173  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16574941  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16640477  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  16771549  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  256477  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  780765  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  1829341  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  3926493  | 16509405 
+> [ 378.993800] (5:node@c-4.me)  8120797  | 16509405 
+> [ 378.993800] (5:node@c-4.me) Predecessor: 10004760
+> [ 379.993800] (8:node@c-7.me) My finger table:
+> [ 379.993800] (8:node@c-7.me) Start | Succ 
+> [ 379.993800] (8:node@c-7.me)  10004761  | 16509405 
+> [ 379.993800] (8:node@c-7.me)  10004762  | 16509405 
+> [ 379.993800] (8:node@c-7.me)  10004764  | 16509405 
+> [ 379.993800] (8:node@c-7.me)  10004768  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10004776  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10004792  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10004824  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10004888  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10005016  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10005272  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10005784  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10006808  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10008856  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10012952  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10021144  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10037528  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10070296  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10135832  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10266904  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  10529048  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  11053336  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  12101912  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  14199064  | 10004760 
+> [ 379.993800] (8:node@c-7.me)  1616152  | 10004760 
+> [ 379.993800] (8:node@c-7.me) Predecessor: 6518808
+> [ 385.993700] (3:node@c-2.me) My finger table:
+> [ 385.993700] (3:node@c-2.me) Start | Succ 
+> [ 385.993700] (3:node@c-2.me)  533745  | 1319738 
+> [ 385.993700] (3:node@c-2.me)  533746  | 1319738 
+> [ 385.993700] (3:node@c-2.me)  533748  | 1319738 
+> [ 385.993700] (3:node@c-2.me)  533752  | 533744 
+> [ 385.993700] (3:node@c-2.me)  533760  | 533744 
+> [ 385.993700] (3:node@c-2.me)  533776  | 533744 
+> [ 385.993700] (3:node@c-2.me)  533808  | 533744 
+> [ 385.993700] (3:node@c-2.me)  533872  | 533744 
+> [ 385.993700] (3:node@c-2.me)  534000  | 533744 
+> [ 385.993700] (3:node@c-2.me)  534256  | 533744 
+> [ 385.993700] (3:node@c-2.me)  534768  | 533744 
+> [ 385.993700] (3:node@c-2.me)  535792  | 533744 
+> [ 385.993700] (3:node@c-2.me)  537840  | 533744 
+> [ 385.993700] (3:node@c-2.me)  541936  | 533744 
+> [ 385.993700] (3:node@c-2.me)  550128  | 533744 
+> [ 385.993700] (3:node@c-2.me)  566512  | 533744 
+> [ 385.993700] (3:node@c-2.me)  599280  | 533744 
+> [ 385.993700] (3:node@c-2.me)  664816  | 533744 
+> [ 385.993700] (3:node@c-2.me)  795888  | 533744 
+> [ 385.993700] (3:node@c-2.me)  1058032  | 533744 
+> [ 385.993700] (3:node@c-2.me)  1582320  | 533744 
+> [ 385.993700] (3:node@c-2.me)  2630896  | 533744 
+> [ 385.993700] (3:node@c-2.me)  4728048  | 533744 
+> [ 385.993700] (3:node@c-2.me)  8922352  | 533744 
+> [ 385.993700] (3:node@c-2.me) Predecessor: 366680
+> [ 387.993700] (7:node@c-6.me) My finger table:
+> [ 387.993700] (7:node@c-6.me) Start | Succ 
+> [ 387.993700] (7:node@c-6.me)  16728097  |  42 
+> [ 387.993700] (7:node@c-6.me)  16728098  |  42 
+> [ 387.993700] (7:node@c-6.me)  16728100  |  42 
+> [ 387.993700] (7:node@c-6.me)  16728104  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728112  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728128  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728160  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728224  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728352  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16728608  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16729120  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16730144  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16732192  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16736288  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16744480  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16760864  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  16416  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  81952  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  213024  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  475168  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  999456  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  2048032  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  4145184  | 16728096 
+> [ 387.993700] (7:node@c-6.me)  8339488  | 16728096 
+> [ 387.993700] (7:node@c-6.me) Predecessor: 16509405
+> [ 389.993600] (9:node@c-8.me) My finger table:
+> [ 389.993600] (9:node@c-8.me) Start | Succ 
+> [ 389.993600] (9:node@c-8.me)  6518809  | 10004760 
+> [ 389.993600] (9:node@c-8.me)  6518810  | 10004760 
+> [ 389.993600] (9:node@c-8.me)  6518812  | 10004760 
+> [ 389.993600] (9:node@c-8.me)  6518816  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6518824  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6518840  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6518872  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6518936  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6519064  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6519320  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6519832  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6520856  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6522904  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6527000  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6535192  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6551576  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6584344  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6649880  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  6780952  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  7043096  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  7567384  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  8615960  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  10713112  | 6518808 
+> [ 389.993600] (9:node@c-8.me)  14907416  | 6518808 
+> [ 389.993600] (9:node@c-8.me) Predecessor: 1319738
+> [ 435.993000] (9:node@c-8.me) My finger table:
+> [ 435.993000] (9:node@c-8.me) Start | Succ 
+> [ 435.993000] (9:node@c-8.me)  6518809  | 10004760 
+> [ 435.993000] (9:node@c-8.me)  6518810  | 10004760 
+> [ 435.993000] (9:node@c-8.me)  6518812  | 10004760 
+> [ 435.993000] (9:node@c-8.me)  6518816  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6518824  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6518840  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6518872  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6518936  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6519064  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6519320  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6519832  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6520856  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6522904  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6527000  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6535192  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6551576  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6584344  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6649880  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  6780952  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  7043096  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  7567384  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  8615960  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  10713112  | 6518808 
+> [ 435.993000] (9:node@c-8.me)  14907416  | 6518808 
+> [ 435.993000] (9:node@c-8.me) Predecessor: 2015253
+> [ 492.992000] (6:node@c-5.me) My finger table:
+> [ 492.992000] (6:node@c-5.me) Start | Succ 
+> [ 492.992000] (6:node@c-5.me)  10874877  | 16509405 
+> [ 492.992000] (6:node@c-5.me)  10874878  | 533744 
+> [ 492.992000] (6:node@c-5.me)  10874880  | 533744 
+> [ 492.992000] (6:node@c-5.me)  10874884  | 16509405 
+> [ 492.992000] (6:node@c-5.me)  10874892  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10874908  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10874940  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10875004  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10875132  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10875388  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10875900  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10876924  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10878972  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10883068  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10891260  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10907644  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  10940412  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  11005948  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  11137020  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  11399164  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  11923452  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  12972028  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  15069180  | 10874876 
+> [ 492.992000] (6:node@c-5.me)  2486268  | 10874876 
+> [ 492.992000] (6:node@c-5.me) Predecessor: -1
+> [ 500.991800] (1:node@c-0.me) My finger table:
+> [ 500.991800] (1:node@c-0.me) Start | Succ 
+> [ 500.991800] (1:node@c-0.me)   43  | 366680 
+> [ 500.991800] (1:node@c-0.me)   44  | 366680 
+> [ 500.991800] (1:node@c-0.me)   46  | 366680 
+> [ 500.991800] (1:node@c-0.me)   50  | 366680 
+> [ 500.991800] (1:node@c-0.me)   58  |  42 
+> [ 500.991800] (1:node@c-0.me)   74  |  42 
+> [ 500.991800] (1:node@c-0.me)  106  |  42 
+> [ 500.991800] (1:node@c-0.me)  170  |  42 
+> [ 500.991800] (1:node@c-0.me)  298  |  42 
+> [ 500.991800] (1:node@c-0.me)  554  |  42 
+> [ 500.991800] (1:node@c-0.me)  1066  |  42 
+> [ 500.991800] (1:node@c-0.me)  2090  |  42 
+> [ 500.991800] (1:node@c-0.me)  4138  |  42 
+> [ 500.991800] (1:node@c-0.me)  8234  |  42 
+> [ 500.991800] (1:node@c-0.me)  16426  |  42 
+> [ 500.991800] (1:node@c-0.me)  32810  |  42 
+> [ 500.991800] (1:node@c-0.me)  65578  |  42 
+> [ 500.991800] (1:node@c-0.me)  131114  |  42 
+> [ 500.991800] (1:node@c-0.me)  262186  |  42 
+> [ 500.991800] (1:node@c-0.me)  524330  |  42 
+> [ 500.991800] (1:node@c-0.me)  1048618  |  42 
+> [ 500.991800] (1:node@c-0.me)  2097194  |  42 
+> [ 500.991800] (1:node@c-0.me)  4194346  |  42 
+> [ 500.991800] (1:node@c-0.me)  8388650  |  42 
+> [ 500.991800] (1:node@c-0.me) Predecessor: 16728096
+> [ 504.991900] (5:node@c-4.me) My finger table:
+> [ 504.991900] (5:node@c-4.me) Start | Succ 
+> [ 504.991900] (5:node@c-4.me)  16509406  | 16728096 
+> [ 504.991900] (5:node@c-4.me)  16509407  |  42 
+> [ 504.991900] (5:node@c-4.me)  16509409  | 16728096 
+> [ 504.991900] (5:node@c-4.me)  16509413  | 16728096 
+> [ 504.991900] (5:node@c-4.me)  16509421  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509437  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509469  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509533  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509661  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16509917  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16510429  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16511453  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16513501  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16517597  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16525789  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16542173  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16574941  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16640477  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  16771549  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  256477  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  780765  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  1829341  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  3926493  | 16509405 
+> [ 504.991900] (5:node@c-4.me)  8120797  | 16509405 
+> [ 504.991900] (5:node@c-4.me) Predecessor: 10004760
+> [ 508.991700] (4:node@c-3.me) My finger table:
+> [ 508.991700] (4:node@c-3.me) Start | Succ 
+> [ 508.991700] (4:node@c-3.me)  1319739  | 2015253 
+> [ 508.991700] (4:node@c-3.me)  1319740  | 6518808 
+> [ 508.991700] (4:node@c-3.me)  1319742  | 6518808 
+> [ 508.991700] (4:node@c-3.me)  1319746  | 2015253 
+> [ 508.991700] (4:node@c-3.me)  1319754  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1319770  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1319802  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1319866  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1319994  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1320250  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1320762  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1321786  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1323834  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1327930  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1336122  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1352506  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1385274  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1450810  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1581882  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  1844026  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  2368314  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  3416890  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  5514042  | 1319738 
+> [ 508.991700] (4:node@c-3.me)  9708346  | 1319738 
+> [ 508.991700] (4:node@c-3.me) Predecessor: 533744
+> [ 509.991700] (10:node@c-9.me) My finger table:
+> [ 509.991700] (10:node@c-9.me) Start | Succ 
+> [ 509.991700] (10:node@c-9.me)  2015254  | 6518808 
+> [ 509.991700] (10:node@c-9.me)  2015255  | 16728096 
+> [ 509.991700] (10:node@c-9.me)  2015257  | 10004760 
+> [ 509.991700] (10:node@c-9.me)  2015261  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015269  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015285  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015317  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015381  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015509  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2015765  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2016277  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2017301  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2019349  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2023445  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2031637  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2048021  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2080789  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2146325  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2277397  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  2539541  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  3063829  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  4112405  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  6209557  | 2015253 
+> [ 509.991700] (10:node@c-9.me)  10403861  | 2015253 
+> [ 509.991700] (10:node@c-9.me) Predecessor: 1319738
+> [ 513.991600] (2:node@c-1.me) My finger table:
+> [ 513.991600] (2:node@c-1.me) Start | Succ 
+> [ 513.991600] (2:node@c-1.me)  366681  | 533744 
+> [ 513.991600] (2:node@c-1.me)  366682  | 1319738 
+> [ 513.991600] (2:node@c-1.me)  366684  | 533744 
+> [ 513.991600] (2:node@c-1.me)  366688  | 533744 
+> [ 513.991600] (2:node@c-1.me)  366696  | 366680 
+> [ 513.991600] (2:node@c-1.me)  366712  | 366680 
+> [ 513.991600] (2:node@c-1.me)  366744  | 366680 
+> [ 513.991600] (2:node@c-1.me)  366808  | 366680 
+> [ 513.991600] (2:node@c-1.me)  366936  | 366680 
+> [ 513.991600] (2:node@c-1.me)  367192  | 366680 
+> [ 513.991600] (2:node@c-1.me)  367704  | 366680 
+> [ 513.991600] (2:node@c-1.me)  368728  | 366680 
+> [ 513.991600] (2:node@c-1.me)  370776  | 366680 
+> [ 513.991600] (2:node@c-1.me)  374872  | 366680 
+> [ 513.991600] (2:node@c-1.me)  383064  | 366680 
+> [ 513.991600] (2:node@c-1.me)  399448  | 366680 
+> [ 513.991600] (2:node@c-1.me)  432216  | 366680 
+> [ 513.991600] (2:node@c-1.me)  497752  | 366680 
+> [ 513.991600] (2:node@c-1.me)  628824  | 366680 
+> [ 513.991600] (2:node@c-1.me)  890968  | 366680 
+> [ 513.991600] (2:node@c-1.me)  1415256  | 366680 
+> [ 513.991600] (2:node@c-1.me)  2463832  | 366680 
+> [ 513.991600] (2:node@c-1.me)  4560984  | 366680 
+> [ 513.991600] (2:node@c-1.me)  8755288  | 366680 
+> [ 513.991600] (2:node@c-1.me) Predecessor: 42
+> [ 516.991600] (10:node@c-9.me) My finger table:
+> [ 516.991600] (10:node@c-9.me) Start | Succ 
+> [ 516.991600] (10:node@c-9.me)  2015254  | 6518808 
+> [ 516.991600] (10:node@c-9.me)  2015255  | 16728096 
+> [ 516.991600] (10:node@c-9.me)  2015257  | 10004760 
+> [ 516.991600] (10:node@c-9.me)  2015261  | 6518808 
+> [ 516.991600] (10:node@c-9.me)  2015269  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015285  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015317  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015381  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015509  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2015765  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2016277  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2017301  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2019349  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2023445  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2031637  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2048021  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2080789  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2146325  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2277397  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  2539541  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  3063829  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  4112405  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  6209557  | 2015253 
+> [ 516.991600] (10:node@c-9.me)  10403861  | 2015253 
+> [ 516.991600] (10:node@c-9.me) Predecessor: 1319738
+> [ 516.991600] (3:node@c-2.me) My finger table:
+> [ 516.991600] (3:node@c-2.me) Start | Succ 
+> [ 516.991600] (3:node@c-2.me)  533745  | 1319738 
+> [ 516.991600] (3:node@c-2.me)  533746  | 1319738 
+> [ 516.991600] (3:node@c-2.me)  533748  | 1319738 
+> [ 516.991600] (3:node@c-2.me)  533752  | 1319738 
+> [ 516.991600] (3:node@c-2.me)  533760  | 533744 
+> [ 516.991600] (3:node@c-2.me)  533776  | 533744 
+> [ 516.991600] (3:node@c-2.me)  533808  | 533744 
+> [ 516.991600] (3:node@c-2.me)  533872  | 533744 
+> [ 516.991600] (3:node@c-2.me)  534000  | 533744 
+> [ 516.991600] (3:node@c-2.me)  534256  | 533744 
+> [ 516.991600] (3:node@c-2.me)  534768  | 533744 
+> [ 516.991600] (3:node@c-2.me)  535792  | 533744 
+> [ 516.991600] (3:node@c-2.me)  537840  | 533744 
+> [ 516.991600] (3:node@c-2.me)  541936  | 533744 
+> [ 516.991600] (3:node@c-2.me)  550128  | 533744 
+> [ 516.991600] (3:node@c-2.me)  566512  | 533744 
+> [ 516.991600] (3:node@c-2.me)  599280  | 533744 
+> [ 516.991600] (3:node@c-2.me)  664816  | 533744 
+> [ 516.991600] (3:node@c-2.me)  795888  | 533744 
+> [ 516.991600] (3:node@c-2.me)  1058032  | 533744 
+> [ 516.991600] (3:node@c-2.me)  1582320  | 533744 
+> [ 516.991600] (3:node@c-2.me)  2630896  | 533744 
+> [ 516.991600] (3:node@c-2.me)  4728048  | 533744 
+> [ 516.991600] (3:node@c-2.me)  8922352  | 533744 
+> [ 516.991600] (3:node@c-2.me) Predecessor: 366680
+> [ 519.991600] (7:node@c-6.me) My finger table:
+> [ 519.991600] (7:node@c-6.me) Start | Succ 
+> [ 519.991600] (7:node@c-6.me)  16728097  |  42 
+> [ 519.991600] (7:node@c-6.me)  16728098  |  42 
+> [ 519.991600] (7:node@c-6.me)  16728100  |  42 
+> [ 519.991600] (7:node@c-6.me)  16728104  |  42 
+> [ 519.991600] (7:node@c-6.me)  16728112  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728128  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728160  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728224  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728352  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16728608  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16729120  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16730144  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16732192  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16736288  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16744480  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16760864  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  16416  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  81952  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  213024  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  475168  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  999456  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  2048032  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  4145184  | 16728096 
+> [ 519.991600] (7:node@c-6.me)  8339488  | 16728096 
+> [ 519.991600] (7:node@c-6.me) Predecessor: 16509405
+> [ 524.991500] (8:node@c-7.me) My finger table:
+> [ 524.991500] (8:node@c-7.me) Start | Succ 
+> [ 524.991500] (8:node@c-7.me)  10004761  | 16509405 
+> [ 524.991500] (8:node@c-7.me)  10004762  | 16509405 
+> [ 524.991500] (8:node@c-7.me)  10004764  | 16509405 
+> [ 524.991500] (8:node@c-7.me)  10004768  | 16509405 
+> [ 524.991500] (8:node@c-7.me)  10004776  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10004792  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10004824  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10004888  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10005016  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10005272  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10005784  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10006808  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10008856  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10012952  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10021144  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10037528  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10070296  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10135832  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10266904  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  10529048  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  11053336  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  12101912  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  14199064  | 10004760 
+> [ 524.991500] (8:node@c-7.me)  1616152  | 10004760 
+> [ 524.991500] (8:node@c-7.me) Predecessor: 6518808
+> [ 529.991500] (5:node@c-4.me) My finger table:
+> [ 529.991500] (5:node@c-4.me) Start | Succ 
+> [ 529.991500] (5:node@c-4.me)  16509406  | 16728096 
+> [ 529.991500] (5:node@c-4.me)  16509407  |  42 
+> [ 529.991500] (5:node@c-4.me)  16509409  | 16728096 
+> [ 529.991500] (5:node@c-4.me)  16509413  | 16728096 
+> [ 529.991500] (5:node@c-4.me)  16509421  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509437  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509469  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509533  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509661  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16509917  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16510429  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16511453  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16513501  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16517597  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16525789  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16542173  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16574941  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16640477  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  16771549  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  256477  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  780765  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  1829341  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  3926493  | 16509405 
+> [ 529.991500] (5:node@c-4.me)  8120797  | 16509405 
+> [ 529.991500] (5:node@c-4.me) Predecessor: 10874876
+> [ 540.991400] (9:node@c-8.me) My finger table:
+> [ 540.991400] (9:node@c-8.me) Start | Succ 
+> [ 540.991400] (9:node@c-8.me)  6518809  | 10004760 
+> [ 540.991400] (9:node@c-8.me)  6518810  | 10004760 
+> [ 540.991400] (9:node@c-8.me)  6518812  | 10004760 
+> [ 540.991400] (9:node@c-8.me)  6518816  | 10004760 
+> [ 540.991400] (9:node@c-8.me)  6518824  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6518840  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6518872  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6518936  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6519064  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6519320  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6519832  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6520856  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6522904  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6527000  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6535192  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6551576  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6584344  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6649880  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  6780952  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  7043096  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  7567384  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  8615960  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  10713112  | 6518808 
+> [ 540.991400] (9:node@c-8.me)  14907416  | 6518808 
+> [ 540.991400] (9:node@c-8.me) Predecessor: 2015253
+> [ 613.990100] (6:node@c-5.me) My finger table:
+> [ 613.990100] (6:node@c-5.me) Start | Succ 
+> [ 613.990100] (6:node@c-5.me)  10874877  | 16509405 
+> [ 613.990100] (6:node@c-5.me)  10874878  | 533744 
+> [ 613.990100] (6:node@c-5.me)  10874880  | 533744 
+> [ 613.990100] (6:node@c-5.me)  10874884  | 16509405 
+> [ 613.990100] (6:node@c-5.me)  10874892  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10874908  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10874940  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10875004  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10875132  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10875388  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10875900  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10876924  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10878972  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10883068  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10891260  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10907644  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  10940412  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  11005948  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  11137020  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  11399164  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  11923452  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  12972028  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  15069180  | 10874876 
+> [ 613.990100] (6:node@c-5.me)  2486268  | 10874876 
+> [ 613.990100] (6:node@c-5.me) Predecessor: 10004760
+> [ 629.989800] (1:node@c-0.me) My finger table:
+> [ 629.989800] (1:node@c-0.me) Start | Succ 
+> [ 629.989800] (1:node@c-0.me)   43  | 366680 
+> [ 629.989800] (1:node@c-0.me)   44  | 366680 
+> [ 629.989800] (1:node@c-0.me)   46  | 366680 
+> [ 629.989800] (1:node@c-0.me)   50  | 366680 
+> [ 629.989800] (1:node@c-0.me)   58  | 366680 
+> [ 629.989800] (1:node@c-0.me)   74  |  42 
+> [ 629.989800] (1:node@c-0.me)  106  |  42 
+> [ 629.989800] (1:node@c-0.me)  170  |  42 
+> [ 629.989800] (1:node@c-0.me)  298  |  42 
+> [ 629.989800] (1:node@c-0.me)  554  |  42 
+> [ 629.989800] (1:node@c-0.me)  1066  |  42 
+> [ 629.989800] (1:node@c-0.me)  2090  |  42 
+> [ 629.989800] (1:node@c-0.me)  4138  |  42 
+> [ 629.989800] (1:node@c-0.me)  8234  |  42 
+> [ 629.989800] (1:node@c-0.me)  16426  |  42 
+> [ 629.989800] (1:node@c-0.me)  32810  |  42 
+> [ 629.989800] (1:node@c-0.me)  65578  |  42 
+> [ 629.989800] (1:node@c-0.me)  131114  |  42 
+> [ 629.989800] (1:node@c-0.me)  262186  |  42 
+> [ 629.989800] (1:node@c-0.me)  524330  |  42 
+> [ 629.989800] (1:node@c-0.me)  1048618  |  42 
+> [ 629.989800] (1:node@c-0.me)  2097194  |  42 
+> [ 629.989800] (1:node@c-0.me)  4194346  |  42 
+> [ 629.989800] (1:node@c-0.me)  8388650  |  42 
+> [ 629.989800] (1:node@c-0.me) Predecessor: 16728096
+> [ 629.989800] (6:node@c-5.me) My finger table:
+> [ 629.989800] (6:node@c-5.me) Start | Succ 
+> [ 629.989800] (6:node@c-5.me)  10874877  | 16509405 
+> [ 629.989800] (6:node@c-5.me)  10874878  | 533744 
+> [ 629.989800] (6:node@c-5.me)  10874880  | 533744 
+> [ 629.989800] (6:node@c-5.me)  10874884  | 16509405 
+> [ 629.989800] (6:node@c-5.me)  10874892  | 16509405 
+> [ 629.989800] (6:node@c-5.me)  10874908  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10874940  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10875004  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10875132  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10875388  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10875900  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10876924  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10878972  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10883068  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10891260  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10907644  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  10940412  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  11005948  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  11137020  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  11399164  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  11923452  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  12972028  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  15069180  | 10874876 
+> [ 629.989800] (6:node@c-5.me)  2486268  | 10874876 
+> [ 629.989800] (6:node@c-5.me) Predecessor: 10004760
+> [ 632.989700] (4:node@c-3.me) My finger table:
+> [ 632.989700] (4:node@c-3.me) Start | Succ 
+> [ 632.989700] (4:node@c-3.me)  1319739  | 2015253 
+> [ 632.989700] (4:node@c-3.me)  1319740  | 6518808 
+> [ 632.989700] (4:node@c-3.me)  1319742  | 6518808 
+> [ 632.989700] (4:node@c-3.me)  1319746  | 2015253 
+> [ 632.989700] (4:node@c-3.me)  1319754  | 2015253 
+> [ 632.989700] (4:node@c-3.me)  1319770  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1319802  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1319866  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1319994  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1320250  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1320762  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1321786  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1323834  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1327930  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1336122  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1352506  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1385274  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1450810  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1581882  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  1844026  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  2368314  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  3416890  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  5514042  | 1319738 
+> [ 632.989700] (4:node@c-3.me)  9708346  | 1319738 
+> [ 632.989700] (4:node@c-3.me) Predecessor: 533744
+> [ 637.989600] (2:node@c-1.me) My finger table:
+> [ 637.989600] (2:node@c-1.me) Start | Succ 
+> [ 637.989600] (2:node@c-1.me)  366681  | 533744 
+> [ 637.989600] (2:node@c-1.me)  366682  | 1319738 
+> [ 637.989600] (2:node@c-1.me)  366684  | 533744 
+> [ 637.989600] (2:node@c-1.me)  366688  | 533744 
+> [ 637.989600] (2:node@c-1.me)  366696  | 533744 
+> [ 637.989600] (2:node@c-1.me)  366712  | 366680 
+> [ 637.989600] (2:node@c-1.me)  366744  | 366680 
+> [ 637.989600] (2:node@c-1.me)  366808  | 366680 
+> [ 637.989600] (2:node@c-1.me)  366936  | 366680 
+> [ 637.989600] (2:node@c-1.me)  367192  | 366680 
+> [ 637.989600] (2:node@c-1.me)  367704  | 366680 
+> [ 637.989600] (2:node@c-1.me)  368728  | 366680 
+> [ 637.989600] (2:node@c-1.me)  370776  | 366680 
+> [ 637.989600] (2:node@c-1.me)  374872  | 366680 
+> [ 637.989600] (2:node@c-1.me)  383064  | 366680 
+> [ 637.989600] (2:node@c-1.me)  399448  | 366680 
+> [ 637.989600] (2:node@c-1.me)  432216  | 366680 
+> [ 637.989600] (2:node@c-1.me)  497752  | 366680 
+> [ 637.989600] (2:node@c-1.me)  628824  | 366680 
+> [ 637.989600] (2:node@c-1.me)  890968  | 366680 
+> [ 637.989600] (2:node@c-1.me)  1415256  | 366680 
+> [ 637.989600] (2:node@c-1.me)  2463832  | 366680 
+> [ 637.989600] (2:node@c-1.me)  4560984  | 366680 
+> [ 637.989600] (2:node@c-1.me)  8755288  | 366680 
+> [ 637.989600] (2:node@c-1.me) Predecessor: 42
+> [ 638.989600] (3:node@c-2.me) My finger table:
+> [ 638.989600] (3:node@c-2.me) Start | Succ 
+> [ 638.989600] (3:node@c-2.me)  533745  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533746  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533748  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533752  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533760  | 1319738 
+> [ 638.989600] (3:node@c-2.me)  533776  | 533744 
+> [ 638.989600] (3:node@c-2.me)  533808  | 533744 
+> [ 638.989600] (3:node@c-2.me)  533872  | 533744 
+> [ 638.989600] (3:node@c-2.me)  534000  | 533744 
+> [ 638.989600] (3:node@c-2.me)  534256  | 533744 
+> [ 638.989600] (3:node@c-2.me)  534768  | 533744 
+> [ 638.989600] (3:node@c-2.me)  535792  | 533744 
+> [ 638.989600] (3:node@c-2.me)  537840  | 533744 
+> [ 638.989600] (3:node@c-2.me)  541936  | 533744 
+> [ 638.989600] (3:node@c-2.me)  550128  | 533744 
+> [ 638.989600] (3:node@c-2.me)  566512  | 533744 
+> [ 638.989600] (3:node@c-2.me)  599280  | 533744 
+> [ 638.989600] (3:node@c-2.me)  664816  | 533744 
+> [ 638.989600] (3:node@c-2.me)  795888  | 533744 
+> [ 638.989600] (3:node@c-2.me)  1058032  | 533744 
+> [ 638.989600] (3:node@c-2.me)  1582320  | 533744 
+> [ 638.989600] (3:node@c-2.me)  2630896  | 533744 
+> [ 638.989600] (3:node@c-2.me)  4728048  | 533744 
+> [ 638.989600] (3:node@c-2.me)  8922352  | 533744 
+> [ 638.989600] (3:node@c-2.me) Predecessor: 366680
+> [ 641.989600] (10:node@c-9.me) My finger table:
+> [ 641.989600] (10:node@c-9.me) Start | Succ 
+> [ 641.989600] (10:node@c-9.me)  2015254  | 6518808 
+> [ 641.989600] (10:node@c-9.me)  2015255  | 16728096 
+> [ 641.989600] (10:node@c-9.me)  2015257  | 10004760 
+> [ 641.989600] (10:node@c-9.me)  2015261  | 6518808 
+> [ 641.989600] (10:node@c-9.me)  2015269  | 6518808 
+> [ 641.989600] (10:node@c-9.me)  2015285  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2015317  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2015381  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2015509  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2015765  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2016277  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2017301  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2019349  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2023445  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2031637  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2048021  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2080789  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2146325  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2277397  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  2539541  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  3063829  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  4112405  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  6209557  | 2015253 
+> [ 641.989600] (10:node@c-9.me)  10403861  | 2015253 
+> [ 641.989600] (10:node@c-9.me) Predecessor: 1319738
+> [ 645.989500] (7:node@c-6.me) My finger table:
+> [ 645.989500] (7:node@c-6.me) Start | Succ 
+> [ 645.989500] (7:node@c-6.me)  16728097  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728098  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728100  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728104  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728112  |  42 
+> [ 645.989500] (7:node@c-6.me)  16728128  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16728160  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16728224  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16728352  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16728608  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16729120  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16730144  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16732192  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16736288  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16744480  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16760864  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  16416  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  81952  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  213024  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  475168  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  999456  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  2048032  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  4145184  | 16728096 
+> [ 645.989500] (7:node@c-6.me)  8339488  | 16728096 
+> [ 645.989500] (7:node@c-6.me) Predecessor: 16509405
+> [ 645.989600] (5:node@c-4.me) My finger table:
+> [ 645.989600] (5:node@c-4.me) Start | Succ 
+> [ 645.989600] (5:node@c-4.me)  16509406  | 16728096 
+> [ 645.989600] (5:node@c-4.me)  16509407  |  42 
+> [ 645.989600] (5:node@c-4.me)  16509409  | 16728096 
+> [ 645.989600] (5:node@c-4.me)  16509413  | 16728096 
+> [ 645.989600] (5:node@c-4.me)  16509421  | 16728096 
+> [ 645.989600] (5:node@c-4.me)  16509437  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16509469  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16509533  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16509661  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16509917  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16510429  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16511453  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16513501  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16517597  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16525789  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16542173  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16574941  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16640477  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  16771549  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  256477  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  780765  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  1829341  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  3926493  | 16509405 
+> [ 645.989600] (5:node@c-4.me)  8120797  | 16509405 
+> [ 645.989600] (5:node@c-4.me) Predecessor: 10874876
+> [ 655.989400] (8:node@c-7.me) My finger table:
+> [ 655.989400] (8:node@c-7.me) Start | Succ 
+> [ 655.989400] (8:node@c-7.me)  10004761  | 10874876 
+> [ 655.989400] (8:node@c-7.me)  10004762  | 16509405 
+> [ 655.989400] (8:node@c-7.me)  10004764  | 16509405 
+> [ 655.989400] (8:node@c-7.me)  10004768  | 16509405 
+> [ 655.989400] (8:node@c-7.me)  10004776  | 10874876 
+> [ 655.989400] (8:node@c-7.me)  10004792  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10004824  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10004888  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10005016  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10005272  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10005784  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10006808  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10008856  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10012952  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10021144  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10037528  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10070296  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10135832  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10266904  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  10529048  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  11053336  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  12101912  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  14199064  | 10004760 
+> [ 655.989400] (8:node@c-7.me)  1616152  | 10004760 
+> [ 655.989400] (8:node@c-7.me) Predecessor: 6518808
+> [ 662.989300] (9:node@c-8.me) My finger table:
+> [ 662.989300] (9:node@c-8.me) Start | Succ 
+> [ 662.989300] (9:node@c-8.me)  6518809  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518810  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518812  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518816  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518824  | 10004760 
+> [ 662.989300] (9:node@c-8.me)  6518840  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6518872  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6518936  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6519064  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6519320  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6519832  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6520856  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6522904  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6527000  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6535192  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6551576  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6584344  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6649880  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  6780952  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  7043096  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  7567384  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  8615960  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  10713112  | 6518808 
+> [ 662.989300] (9:node@c-8.me)  14907416  | 6518808 
+> [ 662.989300] (9:node@c-8.me) Predecessor: 2015253
+> [ 754.987800] (1:node@c-0.me) My finger table:
+> [ 754.987800] (1:node@c-0.me) Start | Succ 
+> [ 754.987800] (1:node@c-0.me)   43  | 366680 
+> [ 754.987800] (1:node@c-0.me)   44  | 366680 
+> [ 754.987800] (1:node@c-0.me)   46  | 366680 
+> [ 754.987800] (1:node@c-0.me)   50  | 366680 
+> [ 754.987800] (1:node@c-0.me)   58  | 366680 
+> [ 754.987800] (1:node@c-0.me)   74  | 366680 
+> [ 754.987800] (1:node@c-0.me)  106  |  42 
+> [ 754.987800] (1:node@c-0.me)  170  |  42 
+> [ 754.987800] (1:node@c-0.me)  298  |  42 
+> [ 754.987800] (1:node@c-0.me)  554  |  42 
+> [ 754.987800] (1:node@c-0.me)  1066  |  42 
+> [ 754.987800] (1:node@c-0.me)  2090  |  42 
+> [ 754.987800] (1:node@c-0.me)  4138  |  42 
+> [ 754.987800] (1:node@c-0.me)  8234  |  42 
+> [ 754.987800] (1:node@c-0.me)  16426  |  42 
+> [ 754.987800] (1:node@c-0.me)  32810  |  42 
+> [ 754.987800] (1:node@c-0.me)  65578  |  42 
+> [ 754.987800] (1:node@c-0.me)  131114  |  42 
+> [ 754.987800] (1:node@c-0.me)  262186  |  42 
+> [ 754.987800] (1:node@c-0.me)  524330  |  42 
+> [ 754.987800] (1:node@c-0.me)  1048618  |  42 
+> [ 754.987800] (1:node@c-0.me)  2097194  |  42 
+> [ 754.987800] (1:node@c-0.me)  4194346  |  42 
+> [ 754.987800] (1:node@c-0.me)  8388650  |  42 
+> [ 754.987800] (1:node@c-0.me) Predecessor: 16728096
+> [ 757.987800] (4:node@c-3.me) My finger table:
+> [ 757.987800] (4:node@c-3.me) Start | Succ 
+> [ 757.987800] (4:node@c-3.me)  1319739  | 2015253 
+> [ 757.987800] (4:node@c-3.me)  1319740  | 6518808 
+> [ 757.987800] (4:node@c-3.me)  1319742  | 6518808 
+> [ 757.987800] (4:node@c-3.me)  1319746  | 2015253 
+> [ 757.987800] (4:node@c-3.me)  1319754  | 2015253 
+> [ 757.987800] (4:node@c-3.me)  1319770  | 2015253 
+> [ 757.987800] (4:node@c-3.me)  1319802  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1319866  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1319994  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1320250  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1320762  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1321786  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1323834  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1327930  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1336122  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1352506  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1385274  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1450810  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1581882  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  1844026  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  2368314  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  3416890  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  5514042  | 1319738 
+> [ 757.987800] (4:node@c-3.me)  9708346  | 1319738 
+> [ 757.987800] (4:node@c-3.me) Predecessor: 533744
+> [ 762.987700] (10:node@c-9.me) My finger table:
+> [ 762.987700] (10:node@c-9.me) Start | Succ 
+> [ 762.987700] (10:node@c-9.me)  2015254  | 6518808 
+> [ 762.987700] (10:node@c-9.me)  2015255  | 16728096 
+> [ 762.987700] (10:node@c-9.me)  2015257  | 10004760 
+> [ 762.987700] (10:node@c-9.me)  2015261  | 6518808 
+> [ 762.987700] (10:node@c-9.me)  2015269  | 6518808 
+> [ 762.987700] (10:node@c-9.me)  2015285  | 6518808 
+> [ 762.987700] (10:node@c-9.me)  2015317  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2015381  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2015509  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2015765  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2016277  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2017301  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2019349  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2023445  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2031637  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2048021  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2080789  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2146325  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2277397  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  2539541  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  3063829  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  4112405  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  6209557  | 2015253 
+> [ 762.987700] (10:node@c-9.me)  10403861  | 2015253 
+> [ 762.987700] (10:node@c-9.me) Predecessor: 1319738
+> [ 762.987700] (6:node@c-5.me) My finger table:
+> [ 762.987700] (6:node@c-5.me) Start | Succ 
+> [ 762.987700] (6:node@c-5.me)  10874877  | 16509405 
+> [ 762.987700] (6:node@c-5.me)  10874878  | 533744 
+> [ 762.987700] (6:node@c-5.me)  10874880  | 533744 
+> [ 762.987700] (6:node@c-5.me)  10874884  | 16509405 
+> [ 762.987700] (6:node@c-5.me)  10874892  | 16509405 
+> [ 762.987700] (6:node@c-5.me)  10874908  | 16509405 
+> [ 762.987700] (6:node@c-5.me)  10874940  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10875004  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10875132  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10875388  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10875900  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10876924  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10878972  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10883068  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10891260  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10907644  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  10940412  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  11005948  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  11137020  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  11399164  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  11923452  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  12972028  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  15069180  | 10874876 
+> [ 762.987700] (6:node@c-5.me)  2486268  | 10874876 
+> [ 762.987700] (6:node@c-5.me) Predecessor: 10004760
+> [ 767.987600] (2:node@c-1.me) My finger table:
+> [ 767.987600] (2:node@c-1.me) Start | Succ 
+> [ 767.987600] (2:node@c-1.me)  366681  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366682  | 1319738 
+> [ 767.987600] (2:node@c-1.me)  366684  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366688  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366696  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366712  | 533744 
+> [ 767.987600] (2:node@c-1.me)  366744  | 366680 
+> [ 767.987600] (2:node@c-1.me)  366808  | 366680 
+> [ 767.987600] (2:node@c-1.me)  366936  | 366680 
+> [ 767.987600] (2:node@c-1.me)  367192  | 366680 
+> [ 767.987600] (2:node@c-1.me)  367704  | 366680 
+> [ 767.987600] (2:node@c-1.me)  368728  | 366680 
+> [ 767.987600] (2:node@c-1.me)  370776  | 366680 
+> [ 767.987600] (2:node@c-1.me)  374872  | 366680 
+> [ 767.987600] (2:node@c-1.me)  383064  | 366680 
+> [ 767.987600] (2:node@c-1.me)  399448  | 366680 
+> [ 767.987600] (2:node@c-1.me)  432216  | 366680 
+> [ 767.987600] (2:node@c-1.me)  497752  | 366680 
+> [ 767.987600] (2:node@c-1.me)  628824  | 366680 
+> [ 767.987600] (2:node@c-1.me)  890968  | 366680 
+> [ 767.987600] (2:node@c-1.me)  1415256  | 366680 
+> [ 767.987600] (2:node@c-1.me)  2463832  | 366680 
+> [ 767.987600] (2:node@c-1.me)  4560984  | 366680 
+> [ 767.987600] (2:node@c-1.me)  8755288  | 366680 
+> [ 767.987600] (2:node@c-1.me) Predecessor: 42
+> [ 771.987500] (5:node@c-4.me) My finger table:
+> [ 771.987500] (5:node@c-4.me) Start | Succ 
+> [ 771.987500] (5:node@c-4.me)  16509406  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509407  |  42 
+> [ 771.987500] (5:node@c-4.me)  16509409  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509413  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509421  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509437  | 16728096 
+> [ 771.987500] (5:node@c-4.me)  16509469  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16509533  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16509661  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16509917  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16510429  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16511453  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16513501  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16517597  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16525789  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16542173  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16574941  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16640477  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  16771549  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  256477  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  780765  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  1829341  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  3926493  | 16509405 
+> [ 771.987500] (5:node@c-4.me)  8120797  | 16509405 
+> [ 771.987500] (5:node@c-4.me) Predecessor: 10874876
+> [ 776.987500] (3:node@c-2.me) My finger table:
+> [ 776.987500] (3:node@c-2.me) Start | Succ 
+> [ 776.987500] (3:node@c-2.me)  533745  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533746  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533748  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533752  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533760  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533776  | 1319738 
+> [ 776.987500] (3:node@c-2.me)  533808  | 533744 
+> [ 776.987500] (3:node@c-2.me)  533872  | 533744 
+> [ 776.987500] (3:node@c-2.me)  534000  | 533744 
+> [ 776.987500] (3:node@c-2.me)  534256  | 533744 
+> [ 776.987500] (3:node@c-2.me)  534768  | 533744 
+> [ 776.987500] (3:node@c-2.me)  535792  | 533744 
+> [ 776.987500] (3:node@c-2.me)  537840  | 533744 
+> [ 776.987500] (3:node@c-2.me)  541936  | 533744 
+> [ 776.987500] (3:node@c-2.me)  550128  | 533744 
+> [ 776.987500] (3:node@c-2.me)  566512  | 533744 
+> [ 776.987500] (3:node@c-2.me)  599280  | 533744 
+> [ 776.987500] (3:node@c-2.me)  664816  | 533744 
+> [ 776.987500] (3:node@c-2.me)  795888  | 533744 
+> [ 776.987500] (3:node@c-2.me)  1058032  | 533744 
+> [ 776.987500] (3:node@c-2.me)  1582320  | 533744 
+> [ 776.987500] (3:node@c-2.me)  2630896  | 533744 
+> [ 776.987500] (3:node@c-2.me)  4728048  | 533744 
+> [ 776.987500] (3:node@c-2.me)  8922352  | 533744 
+> [ 776.987500] (3:node@c-2.me) Predecessor: 366680
+> [ 823.987500] (8:node@c-7.me) My finger table:
+> [ 823.987500] (8:node@c-7.me) Start | Succ 
+> [ 823.987500] (8:node@c-7.me)  10004761  | 10874876 
+> [ 823.987500] (8:node@c-7.me)  10004762  | 16509405 
+> [ 823.987500] (8:node@c-7.me)  10004764  | 16509405 
+> [ 823.987500] (8:node@c-7.me)  10004768  | 16509405 
+> [ 823.987500] (8:node@c-7.me)  10004776  | 10874876 
+> [ 823.987500] (8:node@c-7.me)  10004792  | 10874876 
+> [ 823.987500] (8:node@c-7.me)  10004824  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10004888  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10005016  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10005272  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10005784  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10006808  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10008856  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10012952  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10021144  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10037528  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10070296  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10135832  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10266904  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  10529048  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  11053336  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  12101912  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  14199064  | 10004760 
+> [ 823.987500] (8:node@c-7.me)  1616152  | 10004760 
+> [ 823.987500] (8:node@c-7.me) Predecessor: 6518808
+> [ 824.987500] (7:node@c-6.me) My finger table:
+> [ 824.987500] (7:node@c-6.me) Start | Succ 
+> [ 824.987500] (7:node@c-6.me)  16728097  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728098  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728100  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728104  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728112  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728128  |  42 
+> [ 824.987500] (7:node@c-6.me)  16728160  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16728224  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16728352  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16728608  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16729120  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16730144  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16732192  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16736288  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16744480  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16760864  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  16416  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  81952  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  213024  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  475168  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  999456  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  2048032  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  4145184  | 16728096 
+> [ 824.987500] (7:node@c-6.me)  8339488  | 16728096 
+> [ 824.987500] (7:node@c-6.me) Predecessor: 16509405
+> [ 876.987500] (9:node@c-8.me) My finger table:
+> [ 876.987500] (9:node@c-8.me) Start | Succ 
+> [ 876.987500] (9:node@c-8.me)  6518809  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518810  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518812  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518816  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518824  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518840  | 10004760 
+> [ 876.987500] (9:node@c-8.me)  6518872  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6518936  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6519064  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6519320  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6519832  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6520856  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6522904  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6527000  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6535192  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6551576  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6584344  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6649880  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  6780952  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  7043096  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  7567384  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  8615960  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  10713112  | 6518808 
+> [ 876.987500] (9:node@c-8.me)  14907416  | 6518808 
+> [ 876.987500] (9:node@c-8.me) Predecessor: 2015253
+> [ 880.986500] (1:node@c-0.me) My finger table:
+> [ 880.986500] (1:node@c-0.me) Start | Succ 
+> [ 880.986500] (1:node@c-0.me)   43  | 366680 
+> [ 880.986500] (1:node@c-0.me)   44  | 366680 
+> [ 880.986500] (1:node@c-0.me)   46  | 366680 
+> [ 880.986500] (1:node@c-0.me)   50  | 366680 
+> [ 880.986500] (1:node@c-0.me)   58  | 366680 
+> [ 880.986500] (1:node@c-0.me)   74  | 366680 
+> [ 880.986500] (1:node@c-0.me)  106  | 366680 
+> [ 880.986500] (1:node@c-0.me)  170  |  42 
+> [ 880.986500] (1:node@c-0.me)  298  |  42 
+> [ 880.986500] (1:node@c-0.me)  554  |  42 
+> [ 880.986500] (1:node@c-0.me)  1066  |  42 
+> [ 880.986500] (1:node@c-0.me)  2090  |  42 
+> [ 880.986500] (1:node@c-0.me)  4138  |  42 
+> [ 880.986500] (1:node@c-0.me)  8234  |  42 
+> [ 880.986500] (1:node@c-0.me)  16426  |  42 
+> [ 880.986500] (1:node@c-0.me)  32810  |  42 
+> [ 880.986500] (1:node@c-0.me)  65578  |  42 
+> [ 880.986500] (1:node@c-0.me)  131114  |  42 
+> [ 880.986500] (1:node@c-0.me)  262186  |  42 
+> [ 880.986500] (1:node@c-0.me)  524330  |  42 
+> [ 880.986500] (1:node@c-0.me)  1048618  |  42 
+> [ 880.986500] (1:node@c-0.me)  2097194  |  42 
+> [ 880.986500] (1:node@c-0.me)  4194346  |  42 
+> [ 880.986500] (1:node@c-0.me)  8388650  |  42 
+> [ 880.986500] (1:node@c-0.me) Predecessor: 16728096
+> [ 904.987100] (3:node@c-2.me) My finger table:
+> [ 904.987100] (3:node@c-2.me) Start | Succ 
+> [ 904.987100] (3:node@c-2.me)  533745  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533746  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533748  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533752  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533760  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533776  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533808  | 1319738 
+> [ 904.987100] (3:node@c-2.me)  533872  | 533744 
+> [ 904.987100] (3:node@c-2.me)  534000  | 533744 
+> [ 904.987100] (3:node@c-2.me)  534256  | 533744 
+> [ 904.987100] (3:node@c-2.me)  534768  | 533744 
+> [ 904.987100] (3:node@c-2.me)  535792  | 533744 
+> [ 904.987100] (3:node@c-2.me)  537840  | 533744 
+> [ 904.987100] (3:node@c-2.me)  541936  | 533744 
+> [ 904.987100] (3:node@c-2.me)  550128  | 533744 
+> [ 904.987100] (3:node@c-2.me)  566512  | 533744 
+> [ 904.987100] (3:node@c-2.me)  599280  | 533744 
+> [ 904.987100] (3:node@c-2.me)  664816  | 533744 
+> [ 904.987100] (3:node@c-2.me)  795888  | 533744 
+> [ 904.987100] (3:node@c-2.me)  1058032  | 533744 
+> [ 904.987100] (3:node@c-2.me)  1582320  | 533744 
+> [ 904.987100] (3:node@c-2.me)  2630896  | 533744 
+> [ 904.987100] (3:node@c-2.me)  4728048  | 533744 
+> [ 904.987100] (3:node@c-2.me)  8922352  | 533744 
+> [ 904.987100] (3:node@c-2.me) Predecessor: 366680
+> [ 924.987500] (5:node@c-4.me) My finger table:
+> [ 924.987500] (5:node@c-4.me) Start | Succ 
+> [ 924.987500] (5:node@c-4.me)  16509406  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509407  |  42 
+> [ 924.987500] (5:node@c-4.me)  16509409  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509413  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509421  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509437  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509469  | 16728096 
+> [ 924.987500] (5:node@c-4.me)  16509533  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16509661  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16509917  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16510429  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16511453  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16513501  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16517597  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16525789  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16542173  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16574941  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16640477  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  16771549  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  256477  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  780765  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  1829341  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  3926493  | 16509405 
+> [ 924.987500] (5:node@c-4.me)  8120797  | 16509405 
+> [ 924.987500] (5:node@c-4.me) Predecessor: 10874876
+> [ 936.987400] (6:node@c-5.me) My finger table:
+> [ 936.987400] (6:node@c-5.me) Start | Succ 
+> [ 936.987400] (6:node@c-5.me)  10874877  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10874878  | 533744 
+> [ 936.987400] (6:node@c-5.me)  10874880  | 533744 
+> [ 936.987400] (6:node@c-5.me)  10874884  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10874892  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10874908  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10874940  | 16509405 
+> [ 936.987400] (6:node@c-5.me)  10875004  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10875132  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10875388  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10875900  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10876924  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10878972  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10883068  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10891260  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10907644  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  10940412  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  11005948  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  11137020  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  11399164  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  11923452  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  12972028  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  15069180  | 10874876 
+> [ 936.987400] (6:node@c-5.me)  2486268  | 10874876 
+> [ 936.987400] (6:node@c-5.me) Predecessor: 10004760
+> [ 945.985300] (7:node@c-6.me) My finger table:
+> [ 945.985300] (7:node@c-6.me) Start | Succ 
+> [ 945.985300] (7:node@c-6.me)  16728097  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728098  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728100  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728104  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728112  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728128  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728160  |  42 
+> [ 945.985300] (7:node@c-6.me)  16728224  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16728352  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16728608  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16729120  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16730144  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16732192  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16736288  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16744480  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16760864  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  16416  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  81952  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  213024  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  475168  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  999456  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  2048032  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  4145184  | 16728096 
+> [ 945.985300] (7:node@c-6.me)  8339488  | 16728096 
+> [ 945.985300] (7:node@c-6.me) Predecessor: 16509405
+> [ 952.985200] (2:node@c-1.me) My finger table:
+> [ 952.985200] (2:node@c-1.me) Start | Succ 
+> [ 952.985200] (2:node@c-1.me)  366681  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366682  | 1319738 
+> [ 952.985200] (2:node@c-1.me)  366684  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366688  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366696  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366712  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366744  | 533744 
+> [ 952.985200] (2:node@c-1.me)  366808  | 366680 
+> [ 952.985200] (2:node@c-1.me)  366936  | 366680 
+> [ 952.985200] (2:node@c-1.me)  367192  | 366680 
+> [ 952.985200] (2:node@c-1.me)  367704  | 366680 
+> [ 952.985200] (2:node@c-1.me)  368728  | 366680 
+> [ 952.985200] (2:node@c-1.me)  370776  | 366680 
+> [ 952.985200] (2:node@c-1.me)  374872  | 366680 
+> [ 952.985200] (2:node@c-1.me)  383064  | 366680 
+> [ 952.985200] (2:node@c-1.me)  399448  | 366680 
+> [ 952.985200] (2:node@c-1.me)  432216  | 366680 
+> [ 952.985200] (2:node@c-1.me)  497752  | 366680 
+> [ 952.985200] (2:node@c-1.me)  628824  | 366680 
+> [ 952.985200] (2:node@c-1.me)  890968  | 366680 
+> [ 952.985200] (2:node@c-1.me)  1415256  | 366680 
+> [ 952.985200] (2:node@c-1.me)  2463832  | 366680 
+> [ 952.985200] (2:node@c-1.me)  4560984  | 366680 
+> [ 952.985200] (2:node@c-1.me)  8755288  | 366680 
+> [ 952.985200] (2:node@c-1.me) Predecessor: 42
+> [ 967.986900] (4:node@c-3.me) My finger table:
+> [ 967.986900] (4:node@c-3.me) Start | Succ 
+> [ 967.986900] (4:node@c-3.me)  1319739  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319740  | 6518808 
+> [ 967.986900] (4:node@c-3.me)  1319742  | 6518808 
+> [ 967.986900] (4:node@c-3.me)  1319746  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319754  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319770  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319802  | 2015253 
+> [ 967.986900] (4:node@c-3.me)  1319866  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1319994  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1320250  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1320762  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1321786  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1323834  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1327930  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1336122  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1352506  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1385274  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1450810  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1581882  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  1844026  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  2368314  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  3416890  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  5514042  | 1319738 
+> [ 967.986900] (4:node@c-3.me)  9708346  | 1319738 
+> [ 967.986900] (4:node@c-3.me) Predecessor: 533744
+> [1207.985300] (0:@) Messages created: 1690
+> [1207.985300] (0:@) Simulated time: 1207.99
index 7f2087b..56f87a0 100644 (file)
@@ -3,27 +3,14 @@
 p Testing the mechanism for computing host energy consumption 
 
 ! output sort
-$ $SG_TEST_EXENV energy/e2/e2$EXEEXT ${srcdir:=.}/energy/e2/platform_e2.xml ${srcdir:=.}/energy/e2/deployment_e2.xml --log=surf_cpu.thres:debug --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
-> [  0.000000] (0:@) CPU create: peak=100000000.000000, pstate=0
+$ $SG_TEST_EXENV energy/e2/e2$EXEEXT ${srcdir:=.}/energy/e2/platform_e2.xml ${srcdir:=.}/energy/e2/deployment_e2.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
 > [  0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000
 > [  0.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 0.000000
-> [  1.000000] (0:@) [cpu_update_energy] action time interval=(0.000000-1.000000), current power peak=100000000.000000, current pstate=0
-> [  1.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [  1.000000] (0:@) [get_current_watts] Current power (watts) = 200.000000, load = 1.000000
-> [  1.000000] (0:@) [cpu_update_energy] old_energy_value=0.000000, action_energy_value=200.000000
 > [  1.000000] (1:dvfs_test@MyHost1) Task1 simulation time: 1.000000e+00
 > [  1.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 200.000000
 > [  1.000000] (1:dvfs_test@MyHost1) =========Changing power peak value to 20000000.000000 (at index 2)
-> [  6.000000] (0:@) [cpu_update_energy] action time interval=(1.000000-6.000000), current power peak=20000000.000000, current pstate=2
-> [  6.000000] (0:@) [get_current_watts] min_power=90.000000, max_power=150.000000, slope=60.000000
-> [  6.000000] (0:@) [get_current_watts] Current power (watts) = 150.000000, load = 1.000000
-> [  6.000000] (0:@) [cpu_update_energy] old_energy_value=200.000000, action_energy_value=750.000000
 > [  6.000000] (1:dvfs_test@MyHost1) Task2 simulation time: 5.000000e+00
 > [  6.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 950.000000
-> [  9.000000] (0:@) [cpu_update_energy] action time interval=(6.000000-9.000000), current power peak=20000000.000000, current pstate=2
-> [  9.000000] (0:@) [get_current_watts] min_power=90.000000, max_power=150.000000, slope=60.000000
-> [  9.000000] (0:@) [get_current_watts] Current power (watts) = 90.000000, load = 0.000000
-> [  9.000000] (0:@) [cpu_update_energy] old_energy_value=950.000000, action_energy_value=270.000000
 > [  9.000000] (1:dvfs_test@MyHost1) Task3 (sleep) simulation time: 4.000000e+00
 > [  9.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 1220.000000
 > [  9.000000] (0:@) Total simulation time: 9.000000e+00
index 2b11ab0..a7d7eac 100644 (file)
@@ -3,36 +3,19 @@
 p Testing the mechanism for computing host energy consumption for concurrent tasks 
 
 ! output sort
-$ $SG_TEST_EXENV energy/e3/e3$EXEEXT ${srcdir:=.}/energy/e3/platform_e3.xml ${srcdir:=.}/energy/e3/deployment_e3.xml --log=surf_cpu.thres:debug --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
-> [  0.000000] (0:@) CPU create: peak=100000000.000000, pstate=0
+$ $SG_TEST_EXENV energy/e3/e3$EXEEXT ${srcdir:=.}/energy/e3/platform_e3.xml ${srcdir:=.}/energy/e3/deployment_e3.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
 > [  0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000
 > [  0.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 0.000000
-> [  2.000000] (0:@) [cpu_update_energy] action time interval=(0.000000-2.000000), current power peak=100000000.000000, current pstate=0
-> [  2.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [  2.000000] (0:@) [get_current_watts] Current power (watts) = 200.000000, load = 1.000000
-> [  2.000000] (0:@) [cpu_update_energy] old_energy_value=0.000000, action_energy_value=400.000000
 > [  2.000000] (4:proc3@MyHost1) Process proc3 executed task sleep cpu=0.000000, duration = 2.000000
 > [  2.000000] (4:proc3@MyHost1) ==================================================
 > [  2.000000] (3:proc2@MyHost1) Process proc2 executed task sleep cpu=0.000000, duration = 2.000000
 > [  2.000000] (3:proc2@MyHost1) ==================================================
-> [  5.000000] (0:@) [cpu_update_energy] action time interval=(2.000000-5.000000), current power peak=100000000.000000, current pstate=0
-> [  5.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [  5.000000] (0:@) [get_current_watts] Current power (watts) = 200.000000, load = 1.000000
-> [  5.000000] (0:@) [cpu_update_energy] old_energy_value=400.000000, action_energy_value=600.000000
 > [  5.000000] (4:proc3@MyHost1) Process proc3 executed task cpu=100000000.000000, duration = 3.000000
 > [  5.000000] (4:proc3@MyHost1) ==================================================
 > [  5.000000] (3:proc2@MyHost1) Process proc2 executed task cpu=100000000.000000, duration = 3.000000
 > [  5.000000] (3:proc2@MyHost1) ==================================================
-> [  6.000000] (0:@) [cpu_update_energy] action time interval=(5.000000-6.000000), current power peak=100000000.000000, current pstate=0
-> [  6.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [  6.000000] (0:@) [get_current_watts] Current power (watts) = 200.000000, load = 1.000000
-> [  6.000000] (0:@) [cpu_update_energy] old_energy_value=1000.000000, action_energy_value=200.000000
 > [  6.000000] (2:proc1@MyHost1) Process proc1 executed task cpu=400000000.000000, duration = 6.000000
 > [  6.000000] (2:proc1@MyHost1) ==================================================
-> [  8.000000] (0:@) [cpu_update_energy] action time interval=(6.000000-8.000000), current power peak=100000000.000000, current pstate=0
-> [  8.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [  8.000000] (0:@) [get_current_watts] Current power (watts) = 95.000000, load = 0.000000
-> [  8.000000] (0:@) [cpu_update_energy] old_energy_value=1200.000000, action_energy_value=190.000000
 > [  8.000000] (1:dvfs_test@MyHost1) Task simulation time: 8.000000e+00
 > [  8.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 1390.000000
-> [  8.000000] (0:@) Total simulation time: 8.000000e+00
\ No newline at end of file
+> [  8.000000] (0:@) Total simulation time: 8.000000e+00
index dfededf..975b8a9 100644 (file)
@@ -2,9 +2,9 @@
 
 p Testing dogbone communication pattern with GTNets model
 
-$ gtnets/gtnets ${srcdir:=.}/gtnets/dogbone-p.xml ${srcdir:=.}/gtnets/dogbone-d.xml --cfg=tracing/filename:dogbone_gtnets.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
+$ gtnets/gtnets ${srcdir:=.}/gtnets/dogbone-p.xml ${srcdir:=.}/gtnets/dogbone-d.xml --cfg=tracing/filename:dogbone_gtnets.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'dogbone_gtnets.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'GTNets'
index cd91f36..5c0e6cb 100644 (file)
@@ -2,9 +2,9 @@
 
 p Testing dogbone communication pattern with LV08 model
 
-$ gtnets/gtnets ${srcdir:=.}/gtnets/dogbone-p.xml ${srcdir:=.}/gtnets/dogbone-d.xml --cfg=tracing/filename:dogbone_lv08.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:LV08
+$ gtnets/gtnets ${srcdir:=.}/gtnets/dogbone-p.xml ${srcdir:=.}/gtnets/dogbone-d.xml --cfg=tracing/filename:dogbone_lv08.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:LV08
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'dogbone_lv08.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'LV08'
index c571469..3941da6 100644 (file)
@@ -2,9 +2,9 @@
 
 p Testing onelink communication pattern with GTNets model
 
-$ gtnets/gtnets ${srcdir:=.}/gtnets/onelink-p.xml ${srcdir:=.}/gtnets/onelink-d.xml --cfg=tracing/filename:onelink_gtnets.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
+$ gtnets/gtnets ${srcdir:=.}/gtnets/onelink-p.xml ${srcdir:=.}/gtnets/onelink-d.xml --cfg=tracing/filename:onelink_gtnets.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'onelink_gtnets.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'GTNets'
index ca6aac6..a12fd42 100644 (file)
@@ -2,9 +2,9 @@
 
 p Testing onelink communication pattern with LV08 model
 
-$ gtnets/gtnets ${srcdir:=.}/gtnets/onelink-p.xml ${srcdir:=.}/gtnets/onelink-d.xml --cfg=tracing/filename:onelink_lv08.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01  --cfg=network/model:LV08 2>&1 | grep --color=auto -v root/INFO | grep -v simix_network/INFO
+$ gtnets/gtnets ${srcdir:=.}/gtnets/onelink-p.xml ${srcdir:=.}/gtnets/onelink-d.xml --cfg=tracing/filename:onelink_lv08.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01  --cfg=network/model:LV08 2>&1 | grep --color=auto -v root/INFO | grep -v simix_network/INFO
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'onelink_lv08.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'LV08'
index 5888081..886a196 100644 (file)
@@ -3,9 +3,9 @@
 p Testing waxman radom communication pattern with GTNets model, 200 nodes, 200 flows
 
 ! timeout 10
-$ gtnets/gtnets ${srcdir:=.}/gtnets/waxman-p.xml ${srcdir:=.}/gtnets/waxman-d.xml --cfg=tracing/filename:waxman_gtnets.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
+$ gtnets/gtnets ${srcdir:=.}/gtnets/waxman-p.xml ${srcdir:=.}/gtnets/waxman-d.xml --cfg=tracing/filename:waxman_gtnets.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'waxman_gtnets.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'GTNets'
index 464633f..bcebdf8 100644 (file)
@@ -5,6 +5,8 @@
 $ ${bindir:=.}/bugged1 --cfg=model-check:1 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:@) Configuration change: Set 'model-check' to '1'
 > [  0.000000] (0:@) Check a safety property
+> [  0.000000] (0:@) Get debug information ...
+> [  0.000000] (0:@) Get debug information done !
 > [  0.000000] (2:client@HostB) Sent!
 > [  0.000000] (3:client@HostC) Sent!
 > [  0.000000] (1:server@HostA) OK
index 2fe18e9..df06aaf 100644 (file)
@@ -5,6 +5,8 @@
 $ ${bindir:=.}/bugged2 --cfg=model-check:1 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (0:@) Configuration change: Set 'model-check' to '1'
 > [  0.000000] (0:@) Check a safety property
+> [  0.000000] (0:@) Get debug information ...
+> [  0.000000] (0:@) Get debug information done !
 > [  0.000000] (2:client@HostB) Send 1!
 > [  0.000000] (3:client@HostC) Send 2!
 > [  0.000000] (1:server@HostA) Received 1
index 1855048..f795621 100644 (file)
@@ -4,7 +4,7 @@ p Testing the deprecated CM02 network model
 
 ! output sort
 $ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml --cfg=cpu/model:Cas01 --cfg=network/model:CM02 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
->  [  0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [  0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
 > [  0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
 > [  0.000000] (0:@) test_all
 > [  0.000000] (0:@) Switching workstation model to compound since you changed the network and/or cpu model(s)
@@ -19,4 +19,4 @@ $ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrec
 > [1000.200010] (0:@) Total simulation time: 1.000200e+03
 > [1000.200010] (2:receiver@Bellevue) Task received : bandwidth task
 > [1000.200010] (2:receiver@Bellevue) Communic. time 1.000100e+03
-> [1000.200010] (2:receiver@Bellevue) --- bw 999900.009999 ----
\ No newline at end of file
+> [1000.200010] (2:receiver@Bellevue) --- bw 999900.009999 ----
index e62d9b5..d0dadbd 100644 (file)
@@ -12,9 +12,9 @@
  * used to classify tasks. When the program is executed, the tracing mechanism registers
  * the resource utilization of hosts and links according to these categories. You might
  * want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/categorized:1
- * --cfg=tracing/uncategorized:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/categorized:yes
+ * --cfg=tracing/uncategorized:yes
  * --cfg=viva/categorized:viva_cat.plist
  * --cfg=viva/uncategorized:viva_uncat.plist
  * (See \ref tracing_tracing_options for details)
index 58da1df..6260508 100644 (file)
@@ -2,12 +2,12 @@
 
 p Tracing multiple categories master/slave application
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/categories$EXEEXT --cfg=tracing:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/categories.trace --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=viva/categorized:tracing/categories.cat.plist --cfg=viva/uncategorized:tracing/categories.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/categories$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/categories.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:tracing/categories.cat.plist --cfg=viva/uncategorized:tracing/categories.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/categories.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'tracing/categories.cat.plist'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'tracing/categories.uncat.plist'
 
index 65c0e4c..63a19e9 100644 (file)
@@ -16,8 +16,8 @@
  * these two hosts, if there is one defined in the platform file, and update the variable
  * of all the links of that route to the value provided.
  * You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/platform:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/platform:yes
  * (See \ref tracing_tracing_options for details)
  */
 
index 2d087f7..79818f6 100644 (file)
@@ -1,6 +1,6 @@
 #! ./tesh
 
 p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/link_srcdst_user_variables$EXEEXT --cfg=tracing:1 --cfg=tracing/platform:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/link_srcdst_user_variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
index 46af714..c975460 100644 (file)
@@ -13,8 +13,8 @@
  * to provide the name of the link to update the value of the variable associated
  * to that link.
  * You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/platform:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/platform:yes
  * (See \ref tracing_tracing_options for details)
  */
 
index 9e5b700..2e38c4d 100644 (file)
@@ -1,6 +1,6 @@
 #! ./tesh
 
 p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/link_user_variables$EXEEXT --cfg=tracing:1 --cfg=tracing/platform:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/link_user_variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
index e831432..d9a713f 100644 (file)
@@ -12,8 +12,8 @@
  * enable the tracing of categorized resource utilization, the use of trace marks,
  * and user variables associated to the hosts of the platform file.
  * You might want to run this program with the following parameters:
- * --cfg=tracing/categorized:1
- * --cfg=tracing/uncategorized:1
+ * --cfg=tracing/categorized:yes
+ * --cfg=tracing/uncategorized:yes
  * --cfg=viva/categorized:viva_cat.plist
  * --cfg=viva/uncategorized:viva_uncat.plist
  * (See \ref tracing_tracing_options for details)
index 717dcc7..dfa83e1 100644 (file)
@@ -1,12 +1,12 @@
 #! ./tesh
 
 p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT --cfg=tracing:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/ms.trace --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=viva/categorized:tracing/ms.cat.plist --cfg=viva/uncategorized:tracing/ms.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/ms.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:tracing/ms.cat.plist --cfg=viva/uncategorized:tracing/ms.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/ms.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'tracing/ms.cat.plist'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'tracing/ms.uncat.plist'
 > [4.214759] [msg_test/INFO] Declared tracing categories:
@@ -21,13 +21,13 @@ p Not tracing master/slave application
 $ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
 
 p Testing tracing by process
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT --cfg=tracing:1 --cfg=tracing/msg/process:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/ms.trace --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=viva/categorized:tracing/ms.cat.plist --cfg=viva/uncategorized:tracing/ms.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT --cfg=tracing:yes --cfg=tracing/msg/process:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/ms.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:tracing/ms.cat.plist --cfg=viva/uncategorized:tracing/ms.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/ms.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'tracing/ms.cat.plist'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'tracing/ms.uncat.plist'
 > [4.214759] [msg_test/INFO] Declared tracing categories:
index 59a1a79..c81c26a 100644 (file)
@@ -11,8 +11,8 @@
  * of where the process has been during its execution. Migrations are represented by
  * arrows from the origin to the destination host.
  * You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/msg/process:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/msg/process:yes
  * (See \ref tracing_tracing_options for details)
  */
 
index 1a6e400..50c1f2e 100644 (file)
@@ -1,42 +1,42 @@
 #! ./tesh
 
 p Tracing processes
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/procmig.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/procmig.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=tracing/buffer:0 --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '0'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=tracing/buffer:no --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'no'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/procmig.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
 
 $ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:0 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '0'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:no ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'no'
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/categorized:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/categorized:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/uncategorized:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/uncategorized:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/msg/process:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/msg/process:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
 
 $ rm -rf tracing/procmig.trace simgrid.trace
index e8b5ebb..cb25e32 100644 (file)
@@ -14,7 +14,7 @@
  * 
  * - <b>tracing/simple.c</b> very simple program where each process creates, executes and
  *   destroy a task. You might want to run this program with the following parameters:
- *   --cfg=tracing/uncategorized:1
+ *   --cfg=tracing/uncategorized:yes
  *   (See \ref tracing_tracing_options for details)
  */
 
index a5cdfc0..094c657 100644 (file)
@@ -10,8 +10,8 @@
  * platform file is traced to a Paje trace file format using the tracing
  * mechanism of Simgrid.
  * You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/categorized:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/categorized:yes
  * (See \ref tracing_tracing_options for details)
  */
 
index d69c95a..bc33b3d 100644 (file)
@@ -2,10 +2,10 @@
 
 
 p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/trace_platform$EXEEXT --cfg=tracing:1 --cfg=tracing/filename:tracing/trace_platform.trace --cfg=tracing/categorized:1 ${srcdir:=.}/tracing/platform.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/trace_platform$EXEEXT --cfg=tracing:yes --cfg=tracing/filename:tracing/trace_platform.trace --cfg=tracing/categorized:yes ${srcdir:=.}/tracing/platform.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/trace_platform.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 
 $ tail -n +3 tracing/trace_platform.trace
 > %EventDef PajeDefineContainerType 0
@@ -216,10 +216,10 @@ $ tail -n +3 tracing/trace_platform.trace
 
 $ rm -rf tracing/trace_platform.trace
 
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/trace_platform$EXEEXT --cfg=tracing:1  --cfg=tracing/filename:tracing/trace_platform.trace --cfg=tracing/categorized:1 ${srcdir:=.}/../platforms/g5k.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/trace_platform$EXEEXT --cfg=tracing:yes  --cfg=tracing/filename:tracing/trace_platform.trace --cfg=tracing/categorized:yes ${srcdir:=.}/../platforms/g5k.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/trace_platform.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 
 $ tail -n +3 tracing/trace_platform.trace
 > %EventDef PajeDefineContainerType 0
index 90e65ba..5017fc0 100644 (file)
@@ -9,8 +9,8 @@
  * - <b>tracing/user_variables.c</b>: This program demonstrates how to
  * trace user variables associated to the hosts of the platform file.
  * You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/platform:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/platform:yes
  * (See \ref tracing_tracing_options for details)
  */
 
index 168ba8e..171346f 100644 (file)
@@ -1,9 +1,9 @@
 #! ./tesh
 
 p Tracing user variables
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/user_variables$EXEEXT --cfg=tracing:1 --cfg=tracing/platform:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/user_variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
 > [0.004078] [msg_test/INFO] Declared host variables:
 > [0.004078] [msg_test/INFO] HDD_capacity
 > [0.004078] [msg_test/INFO] HDD_utilization
index f5c954a..ad451ae 100644 (file)
@@ -12,8 +12,8 @@ if(enable_scala)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${SCALA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${SCALA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 6b28603..95bfebb 100644 (file)
@@ -1,7 +1,7 @@
 #! tesh
 
 ! output sort
-$ java -cp ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/master_slave_bypass/platform.xml
+$ java -classpath ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/master_slave_bypass/platform.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [0.013010] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [alice:process2:(2) 0.000000] [jmsg/INFO] Slave Hello!
index ca978c6..ebd2979 100644 (file)
@@ -12,8 +12,8 @@ if(enable_scala)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${SCALA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${SCALA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index f22d582..78868a1 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/master_slave_kill/platform.xml
+$ java -classpath ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/master_slave_kill/platform.xml
 > [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
 > [0.013010] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
 > [alice:slave:(2) 0.000000] [jmsg/INFO] Slave Hello!
index 54b1029..5c2bccc 100644 (file)
@@ -13,8 +13,8 @@ if(enable_scala)
   add_custom_command(
     COMMENT "Building ${example}..."
     OUTPUT ${example}_compiled
-    DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
-    COMMAND ${SCALA_COMPILE} -cp ${SIMGRID_JAR}
+    DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+    COMMAND ${SCALA_COMPILE} -classpath ${SIMGRID_JAR}
                              -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
     COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
     COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
index 77a09b5..ee1d207 100644 (file)
@@ -2,7 +2,7 @@
 
 ! output sort
 
-$ java -cp ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
 > [  0.000000] (1:masterslave.Master@Jacquelin) Hello! Got 7 slaves and 5 tasks to process
 > [  0.000000] (2:masterslave.Forwarder@Jackson) Receiving on 'slave_0'
 > [  0.000000] (3:masterslave.Forwarder@Casavant) Receiving on 'slave_1'
index f4e160a..f9ce3e8 100644 (file)
@@ -3,9 +3,9 @@
 
 p Simple test of simdag
 
-$ $SG_TEST_EXENV ./simdag_tracing --cfg=tracing:1 --cfg=tracing/categorized:1 ${srcdir:=.}/2clusters.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+$ $SG_TEST_EXENV ./simdag_tracing --cfg=tracing:yes --cfg=tracing/categorized:yes ${srcdir:=.}/2clusters.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
 > [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
 > [0.000000] [sd_seq_access/INFO] Access mode of C2-05 is sequential
 > [0.000000] [sd_seq_access/INFO] Access mode of C2-06 is sequential
index a53ac43..b2fb9aa 100644 (file)
  XBT_LOG_NEW_DEFAULT_CATEGORY(MM_Summa,
                              "Messages specific for this msg example");
 
-inline double Summa(
-                     double *a, double *b, double *c,
-                     size_t lda, size_t ldb, size_t ldc,
-                     size_t m, size_t k_a, size_t k_b, size_t n,
-                     size_t Block_size, size_t start, size_t end,
-                     size_t row, size_t col, size_t size_row, size_t size_col,
-                     double *a_local, double *b_local,
-                     MPI_Datatype Block_a, MPI_Datatype Block_a_local,
-                     MPI_Datatype Block_b,
-                     MPI_Comm row_comm, MPI_Comm col_comm, int subs)
+double Summa(double *a, double *b, double *c,
+             size_t lda, size_t ldb, size_t ldc,
+             size_t m, size_t k_a, size_t k_b, size_t n,
+             size_t Block_size, size_t start, size_t end,
+             size_t row, size_t col, size_t size_row, size_t size_col,
+             double *a_local, double *b_local,
+             MPI_Datatype Block_a, MPI_Datatype Block_a_local,
+             MPI_Datatype Block_b,
+             MPI_Comm row_comm, MPI_Comm col_comm, int subs)
 {
   double *B_a     , *B_b     ; //matrix blocks
   size_t err;
index 8ab25b9..5e3a3b0 100644 (file)
@@ -389,6 +389,7 @@ c---------------------------------------------------------------------
                write(*, 239) np1*np2, np
  239           format(' Product is ', i5, ' and should be ', i5)
                call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+               stop
             endif
 
 c---------------------------------------------------------------------
@@ -402,6 +403,7 @@ c---------------------------------------------------------------------
  240           format(' Layout type specified in inputft.data is 
      >                  invalid ')
                call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+               stop
             endif
 
 c---------------------------------------------------------------------
@@ -413,6 +415,7 @@ c---------------------------------------------------------------------
                write(*, 241)
  241           format(' For 0D layout, both np1 and np2 must be 1 ')
                call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+               stop
             endif
 c---------------------------------------------------------------------
 c 4. 1D layout must be 1xN grid
@@ -422,6 +425,7 @@ c---------------------------------------------------------------------
                write(*, 242)
  242           format(' For 1D layout, np1 must be 1 ')
                call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+               stop
             endif
 
          else
@@ -448,6 +452,7 @@ c---------------------------------------------------------------------
             write(*, 11) np
  11         format(' Only ',  i5, ' processors found ')
             call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+            stop
          endif
 
  234     format(' No input file inputft.data. Using compiled defaults')
diff --git a/examples/smpi/energy/CMakeLists.txt b/examples/smpi/energy/CMakeLists.txt
new file mode 100644 (file)
index 0000000..76ddc39
--- /dev/null
@@ -0,0 +1,40 @@
+cmake_minimum_required(VERSION 2.6)
+
+if(enable_smpi)
+  if(WIN32)
+    set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
+  else()
+    set(CMAKE_C_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpicc")
+  endif()
+
+  set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+  include_directories("${CMAKE_HOME_DIRECTORY}/include/smpi")
+
+  add_executable(se se.c)
+  target_link_libraries(se simgrid)
+endif()
+
+set(tesh_files
+  ${tesh_files}
+  ${CMAKE_CURRENT_SOURCE_DIR}/energy.tesh
+  PARENT_SCOPE
+  )
+set(xml_files
+  ${xml_files}
+  ${CMAKE_CURRENT_SOURCE_DIR}/platform.xml
+  PARENT_SCOPE
+  )
+set(examples_src
+  ${examples_src}
+  ${CMAKE_CURRENT_SOURCE_DIR}/se.c
+  PARENT_SCOPE
+  )
+set(bin_files
+  ${bin_files}
+  PARENT_SCOPE
+  )
+set(txt_files
+  ${txt_files}
+  ${CMAKE_CURRENT_SOURCE_DIR}/hostfile
+  PARENT_SCOPE
+  )
diff --git a/examples/smpi/energy/energy.tesh b/examples/smpi/energy/energy.tesh
new file mode 100644 (file)
index 0000000..aac0673
--- /dev/null
@@ -0,0 +1,17 @@
+p Test smpi bindings for dvfs functions (C example)
+$ ../../../smpi_script/bin/smpirun -np 2 -hostfile ${srcdir:=.}/hostfile  -platform ${srcdir:=.}/platform.xml --cfg=smpi/cpu_threshold:-1 ${bindir:=.}/se
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [0.000000] [rank 1] Pstates: 1; Powers: 100000000
+> [0.000000] [rank 0] Pstates: 3; Powers: 100000000, 50000000, 20000000
+> [0.000000] [rank 1] Current pstate: 0; Current power: 100000000
+> [0.000000] [rank 0] Current pstate: 0; Current power: 100000000
+> [10.000000] [rank 1] Energy consumed: 2000 Joules.
+> [10.000000] [rank 0] Energy consumed: 2000 Joules.
+> [10.000000] [rank 0] Current pstate: 1; Current power: 50000000
+> [30.000000] [rank 0] Energy consumed: 5400 Joules.
+> [30.000000] [rank 0] Current pstate: 2; Current power: 20000000
+> [80.000000] [rank 0] Energy consumed: 12900 Joules.
diff --git a/examples/smpi/energy/f77/CMakeLists.txt b/examples/smpi/energy/f77/CMakeLists.txt
new file mode 100644 (file)
index 0000000..52709c2
--- /dev/null
@@ -0,0 +1,33 @@
+cmake_minimum_required(VERSION 2.6)
+
+if(enable_smpi AND SMPI_F2C)
+  set(CMAKE_Fortran_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpiff")
+
+  set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+
+  add_executable(sef sef.f)
+  target_link_libraries(sef simgrid)
+endif()
+
+set(tesh_files
+  ${tesh_files}
+  ${CMAKE_CURRENT_SOURCE_DIR}/energy.tesh
+  PARENT_SCOPE
+  )
+set(xml_files
+  ${xml_files}
+  PARENT_SCOPE
+  )
+set(examples_src
+  ${examples_src}
+  ${CMAKE_CURRENT_SOURCE_DIR}/sef.f
+  PARENT_SCOPE
+  )
+set(bin_files
+  ${bin_files}
+  PARENT_SCOPE
+  )
+set(txt_files
+  ${txt_files}
+  PARENT_SCOPE
+  )
diff --git a/examples/smpi/energy/f77/energy.tesh b/examples/smpi/energy/f77/energy.tesh
new file mode 100644 (file)
index 0000000..86ceca6
--- /dev/null
@@ -0,0 +1,21 @@
+p Test smpi bindings for dvfs functions (Fortran 77 example)
+$ ../../../smpi_script/bin/smpirun -np 2 -hostfile ${srcdir:=.}/hostfile  -platform ${srcdir:=.}/platform.xml --cfg=smpi/cpu_threshold:-1 ${bindir:=.}/f77/sef
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+>  [  0.] [rank  0] 3pstates available
+>  [  0.] [rank  1] 1pstates available
+>  [  0.] [rank  0] Power:   100000000.
+>  [  0.] [rank  1] Power:   100000000.
+>  [  0.] [rank  0] Power:   50000000.
+>  [  0.] [rank  0] Power:   20000000.
+>  [  0.] [rank  1] Current pstate:  0; Current power:   100000000.
+>  [  0.] [rank  0] Current pstate:  0; Current power:   100000000.
+>  [  10.] [rank  1]Energy consumed (Joules):   2000.
+>  [  10.] [rank  0]Energy consumed (Joules):   2000.
+>  [  10.] [rank  0] Current pstate:  1; Current power:   50000000.
+>  [  30.] [rank  0]Energy consumed (Joules):   5400.
+>  [  30.] [rank  0] Current pstate:  2; Current power:   20000000.
+>  [  80.] [rank  0]Energy consumed (Joules):   12900.
diff --git a/examples/smpi/energy/f77/sef.f b/examples/smpi/energy/f77/sef.f
new file mode 100644 (file)
index 0000000..a1588be
--- /dev/null
@@ -0,0 +1,42 @@
+      program main
+      include 'mpif.h'
+
+      integer ierr
+      integer rank, pstates
+      integer i
+      double precision p, t, e
+
+      call MPI_Init(ierr)
+      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+      pstates = smpi_get_host_nb_pstates()
+
+      t = MPI_Wtime()
+
+      print *, '[', t, '] [rank ', rank, ']',
+     &     pstates, 'pstates available'
+
+      do i = 0, pstates - 1
+         p = smpi_get_host_power_peak_at(i)
+         print *, '[', t, '] [rank ', rank, '] Power: ', p
+      end do
+
+      do i = 0, pstates - 1
+         call smpi_set_host_power_peak_at(i)
+         t = MPI_Wtime()
+         p = smpi_get_host_current_power_peak()
+         print *, '[', t, '] [rank ', rank, '] Current pstate: ', i,
+     &        '; Current power: ', p
+
+         e = 1e9
+         call smpi_execute_flops(e)
+
+         t = MPI_Wtime()
+         e = smpi_get_host_consumed_energy()
+         print *, '[', t, '] [rank ', rank, ']',
+     &        'Energy consumed (Joules): ', e
+      end do
+
+      call MPI_Finalize(ierr)
+
+      end program main
diff --git a/examples/smpi/energy/f90/CMakeLists.txt b/examples/smpi/energy/f90/CMakeLists.txt
new file mode 100644 (file)
index 0000000..84b55b5
--- /dev/null
@@ -0,0 +1,33 @@
+cmake_minimum_required(VERSION 2.6)
+
+if(enable_smpi AND SMPI_F90)
+  set(CMAKE_Fortran_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpif90")
+
+  set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+
+  add_executable(sef90 sef90.f90)
+  target_link_libraries(sef90 simgrid)
+endif()
+
+set(tesh_files
+  ${tesh_files}
+  ${CMAKE_CURRENT_SOURCE_DIR}/energy.tesh
+  PARENT_SCOPE
+  )
+set(xml_files
+  ${xml_files}
+  PARENT_SCOPE
+  )
+set(examples_src
+  ${examples_src}
+  ${CMAKE_CURRENT_SOURCE_DIR}/sef90.f90
+  PARENT_SCOPE
+  )
+set(bin_files
+  ${bin_files}
+  PARENT_SCOPE
+  )
+set(txt_files
+  ${txt_files}
+  PARENT_SCOPE
+  )
diff --git a/examples/smpi/energy/f90/energy.tesh b/examples/smpi/energy/f90/energy.tesh
new file mode 100644 (file)
index 0000000..fe1859b
--- /dev/null
@@ -0,0 +1,21 @@
+p Test smpi bindings for dvfs functions (Fortran 90 example)
+$ ../../../smpi_script/bin/smpirun -np 2 -hostfile ${srcdir:=.}/hostfile  -platform ${srcdir:=.}/platform.xml --cfg=smpi/cpu_threshold:-1 ${bindir:=.}/f90/sef90
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+>  [   0.0000000000000000      ] [rank            0 ]           3 pstates available
+>  [   0.0000000000000000      ] [rank            1 ]           1 pstates available
+>  [   0.0000000000000000      ] [rank            0 ] Power:    100000000.00000000     
+>  [   0.0000000000000000      ] [rank            1 ] Power:    100000000.00000000     
+>  [   0.0000000000000000      ] [rank            0 ] Power:    50000000.000000000     
+>  [   0.0000000000000000      ] [rank            0 ] Power:    20000000.000000000     
+>  [   0.0000000000000000      ] [rank            1 ] Current pstate:            0 ; Current power:    100000000.00000000     
+>  [   0.0000000000000000      ] [rank            0 ] Current pstate:            0 ; Current power:    100000000.00000000     
+>  [   10.000000000000000      ] [rank            1 ] Energy consumed (Joules):    2000.0000000000000     
+>  [   10.000000000000000      ] [rank            0 ] Energy consumed (Joules):    2000.0000000000000     
+>  [   10.000000000000000      ] [rank            0 ] Current pstate:            1 ; Current power:    50000000.000000000     
+>  [   30.000000000000000      ] [rank            0 ] Energy consumed (Joules):    5400.0000000000000     
+>  [   30.000000000000000      ] [rank            0 ] Current pstate:            2 ; Current power:    20000000.000000000     
+>  [   80.000000000000000      ] [rank            0 ] Energy consumed (Joules):    12900.000000000000     
diff --git a/examples/smpi/energy/f90/sef90.f90 b/examples/smpi/energy/f90/sef90.f90
new file mode 100644 (file)
index 0000000..59b3fbf
--- /dev/null
@@ -0,0 +1,38 @@
+program main
+  use mpi
+
+  integer ierr
+  integer rank, pstates
+  integer i
+  double precision p, t, e
+
+  call MPI_Init(ierr)
+  call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+  pstates = smpi_get_host_nb_pstates()
+
+  t = MPI_Wtime()
+
+  print *, '[', t, '] [rank ', rank, ']', pstates, 'pstates available'
+  do i = 0, pstates - 1
+     p = smpi_get_host_power_peak_at(i)
+     print *, '[', t, '] [rank ', rank, '] Power: ', p
+  end do
+
+  do i = 0, pstates - 1
+     call smpi_set_host_power_peak_at(i)
+     t = MPI_Wtime()
+     p = smpi_get_host_current_power_peak()
+     print *, '[', t, '] [rank ', rank, '] Current pstate: ', i, '; Current power: ', p
+
+     e = 1e9
+     call smpi_execute_flops(e)
+
+     t = MPI_Wtime()
+     e = smpi_get_host_consumed_energy()
+     print *, '[', t, '] [rank ', rank, '] Energy consumed (Joules): ', e
+  end do
+
+  call MPI_Finalize(ierr)
+
+end program main
diff --git a/examples/smpi/energy/hostfile b/examples/smpi/energy/hostfile
new file mode 100644 (file)
index 0000000..4b0f37f
--- /dev/null
@@ -0,0 +1,2 @@
+MyHost1
+MyHost2
diff --git a/examples/smpi/energy/platform.xml b/examples/smpi/energy/platform.xml
new file mode 100644 (file)
index 0000000..ad57cca
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3">
+<AS  id="AS0"  routing="Full">
+  <!-- Multiple pstate processor capacities can be defined as a list of powers specified for a given host -->
+  <!-- The enabled pstate can be set through the "pstate" attribute (lowest pstate corresponds to the highest processor power) -->
+  <host id="MyHost1" power="100.0Mf,50.0Mf,20.0Mf" pstate="0" >
+        <!--  List of min_power:max_power pairs (in Watts) corresponding to the power consumed when the processor is idle and when it is fully loaded -->
+        <!--  The list must contain one power pair for each previously defined pstate-->
+        <prop id="power_per_state" value="95.0:200.0, 93.0:170.0, 90.0:150.0" />
+  </host>
+  <host id="MyHost2" power="100.0Mf" >
+        <prop id="power_per_state" value="95.0:200.0" />
+  </host>
+</AS>
+</platform>
diff --git a/examples/smpi/energy/se.c b/examples/smpi/energy/se.c
new file mode 100644 (file)
index 0000000..6632e3d
--- /dev/null
@@ -0,0 +1,57 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <mpi.h>
+#include <smpi/smpi.h>
+
+int main(int argc, char *argv[])
+{
+  int rank, pstates;
+  int i;
+  char buf[1024];
+  char *s;
+  size_t sz, x;
+
+  if (MPI_Init(&argc, &argv) != MPI_SUCCESS) {
+    printf("MPI initialization failed!\n");
+    exit(EXIT_FAILURE);
+  }
+
+  MPI_Comm_rank(MPI_COMM_WORLD, &rank);   /* Get id of this process */
+
+  pstates = smpi_get_host_nb_pstates();
+
+  s = buf;
+  sz = sizeof buf;
+  x = snprintf(s, sz,
+               "[%.6f] [rank %d] Pstates: %d; Powers: %.0f",
+               MPI_Wtime(), rank, pstates, smpi_get_host_power_peak_at(0));
+  if (x < sz) {
+    s += x;
+    sz -= x;
+  } else
+    sz = 0;
+  for (i = 1; i < pstates; i++) {
+    x = snprintf(s, sz, ", %.0f", smpi_get_host_power_peak_at(i));
+    if (x < sz) {
+      s += x;
+      sz -= x;
+    } else
+      sz = 0;
+  }
+  printf("%s%s\n", buf, (sz ? "" : " [...]"));
+
+  for (i = 0; i < pstates; i++) {
+    smpi_set_host_power_peak_at(i);
+    printf("[%.6f] [rank %d] Current pstate: %d; Current power: %.0f\n",
+           MPI_Wtime(), rank, i, smpi_get_host_current_power_peak());
+
+    SMPI_SAMPLE_FLOPS(1e9) {
+      /* imagine here some code running for 1e9 flops... */
+    }
+
+    printf("[%.6f] [rank %d] Energy consumed: %g Joules.\n",
+           MPI_Wtime(), rank, smpi_get_host_consumed_energy());
+  }
+
+  return MPI_Finalize();
+}
index 3bafdf8..5ebcc62 100644 (file)
@@ -2,9 +2,9 @@
 1 init
 2 init
 
-0 allReduce 5e8 5e8
-1 allReduce 5e8 5e8
-2 allReduce 5e8 5e8
+0 allReduce 5e4 5e8
+1 allReduce 5e4 5e8
+2 allReduce 5e4 5e8
 
 0 compute 5e8
 1 compute 5e8
index f392b82..4aeb855 100644 (file)
@@ -2,25 +2,25 @@
 1 init
 2 init
 
-0 bcast 5e8
-1 bcast 5e8
-2 bcast 5e8
+0 bcast 5e4
+1 bcast 5e4
+2 bcast 5e4
 
 0 compute 5e8
 1 compute 2e8
 2 compute 5e8
 
-0 bcast 5e8
-1 bcast 5e8
-2 bcast 5e8
+0 bcast 5e4
+1 bcast 5e4
+2 bcast 5e4
 
 0 compute 5e8
 1 compute 2e8
 2 compute 5e8
 
-0 reduce 5e8 5e8
-1 reduce 5e8 5e8
-2 reduce 5e8 5e8
+0 reduce 5e4 5e8
+1 reduce 5e4 5e8
+2 reduce 5e4 5e8
 
 0 finalize
 1 finalize
index 69545b7..cbf6971 100644 (file)
@@ -2,25 +2,25 @@
 1 init 1
 2 init 1
 
-0 bcast 5e8 1 0
-1 bcast 5e8 1 0
-2 bcast 5e8 1 0
+0 bcast 5e4 1 0
+1 bcast 5e4 1 0
+2 bcast 5e4 1 0
 
 0 compute 5e8
 1 compute 2e8
 2 compute 5e8
 
-0 bcast 5e8 0 3
-1 bcast 5e8 0 3
-2 bcast 5e8 0 3
+0 bcast 5e4 0 3
+1 bcast 5e4 0 3
+2 bcast 5e4 0 3
 
 0 compute 5e8
 1 compute 2e8
 2 compute 5e8
 
-0 reduce 5e8 5e8 0 4
-1 reduce 5e8 5e8 0 4
-2 reduce 5e8 5e8 0 4
+0 reduce 5e4 5e8 0 4
+1 reduce 5e4 5e8 0 4
+2 reduce 5e4 5e8 0 4
 
 0 finalize
 1 finalize
index 6580e06..ac91f0f 100644 (file)
@@ -7,7 +7,7 @@
 1 reduceScatter 275427 275427 275427 204020 12396024 0
 2 reduceScatter 275427 275427 275427 204020 12501522 0
 3 reduceScatter 275427 275427 275427 204020 12403123 0
-~                                                                    
+
 0 finalize
 1 finalize
 2 finalize
index edc93a6..3e1f455 100644 (file)
@@ -2,19 +2,19 @@
 1 init
 2 init
 
-0 send 1 1e9
+0 send 1 1e6
 0 compute 1e9
-0 recv 2 1e9
+0 recv 2 1e6
 
-1 Irecv 0 1e9
+1 Irecv 0 1e6
 1 compute 1e9
 1 wait
-1 send 2 1e9
+1 send 2 1e6
 
-2 Irecv 1 1e9
+2 Irecv 1 1e6
 2 compute 5e8
 2 wait
-2 Isend 0 1e9
+2 Isend 0 1e6
 2 compute 5e8
 
 0 finalize
index 94681e7..589c0c8 100644 (file)
@@ -8,28 +8,28 @@ p Test of trace replay with SMPI (one trace for all processes)
 $ mkfile replay/one_trace
 ! timeout 60
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Fafard:2:(0) 65.176535] [smpi_replay/VERBOSE] 2 bcast 5e8 65.176535
-> [Fafard:2:(0) 71.729958] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
-> [Jupiter:1:(0) 73.739750] [smpi_replay/VERBOSE] 1 bcast 5e8 73.739750
-> [Tremblay:0:(0) 73.739750] [smpi_replay/VERBOSE] 0 bcast 5e8 73.739750
-> [Jupiter:1:(0) 76.361119] [smpi_replay/VERBOSE] 1 compute 2e8 2.621369
-> [Tremblay:0:(0) 78.836850] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
-> [Fafard:2:(0) 144.013385] [smpi_replay/VERBOSE] 2 bcast 5e8 72.283426
-> [Fafard:2:(0) 150.566808] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
-> [Jupiter:1:(0) 152.576600] [smpi_replay/VERBOSE] 1 bcast 5e8 76.215480
-> [Tremblay:0:(0) 152.576600] [smpi_replay/VERBOSE] 0 bcast 5e8 73.739750
-> [Jupiter:1:(0) 155.197969] [smpi_replay/VERBOSE] 1 compute 2e8 2.621369
-> [Tremblay:0:(0) 157.673699] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
-> [Fafard:2:(0) 229.403658] [smpi_replay/VERBOSE] 2 reduce 5e8 5e8 78.836850
-> [Tremblay:0:(0) 236.510549] [smpi_replay/VERBOSE] 0 reduce 5e8 5e8 78.836850
-> [Jupiter:1:(0) 237.966873] [smpi_replay/VERBOSE] 1 reduce 5e8 5e8 82.768904
-> [Jupiter:1:(0) 237.966873] [smpi_replay/INFO] Simulation time 237.967
+> [Tremblay:0:(0) 0.000000] [smpi_replay/VERBOSE] 0 bcast 5e4 0.000000
+> [Jupiter:1:(0) 0.015036] [smpi_replay/VERBOSE] 1 bcast 5e4 0.015036
+> [Fafard:2:(0) 0.015676] [smpi_replay/VERBOSE] 2 bcast 5e4 0.015676
+> [Jupiter:1:(0) 2.636405] [smpi_replay/VERBOSE] 1 compute 2e8 2.621369
+> [Tremblay:0:(0) 5.097100] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
+> [Tremblay:0:(0) 5.097100] [smpi_replay/VERBOSE] 0 bcast 5e4 0.000000
+> [Jupiter:1:(0) 5.112136] [smpi_replay/VERBOSE] 1 bcast 5e4 2.475730
+> [Fafard:2:(0) 6.569099] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Fafard:2:(0) 6.584775] [smpi_replay/VERBOSE] 2 bcast 5e4 0.015676
+> [Jupiter:1:(0) 7.733505] [smpi_replay/VERBOSE] 1 compute 2e8 2.621369
+> [Tremblay:0:(0) 10.194200] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
+> [Fafard:2:(0) 13.138198] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Jupiter:1:(0) 14.286929] [smpi_replay/VERBOSE] 1 reduce 5e4 5e8 6.553424
+> [Tremblay:0:(0) 18.250974] [smpi_replay/VERBOSE] 0 reduce 5e4 5e8 8.056774
+> [Fafard:2:(0) 19.691622] [smpi_replay/VERBOSE] 2 reduce 5e4 5e8 6.553424
+> [Fafard:2:(0) 19.691622] [smpi_replay/INFO] Simulation time 19.6916
 
 $ rm -f replay/one_trace
 
@@ -38,16 +38,16 @@ p The same with tracing activated
 < replay/actions_bcast.txt
 $ mkfile replay/one_trace
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=no_loc  --cfg=tracing:1 --cfg=tracing/smpi:1 --cfg=tracing/smpi/computing:1 --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=no_loc  --cfg=tracing:yes --cfg=tracing/smpi:yes --cfg=tracing/smpi/computing:yes --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Jupiter:1:(0) 237.966873] [smpi_replay/INFO] Simulation time 237.967
+> [Fafard:2:(0) 19.691622] [smpi_replay/INFO] Simulation time 19.6916
 
 $ rm -f replay/one_trace
 
@@ -166,55 +166,60 @@ $ tail -n +3 ./simgrid.trace
 > 4 3 0 1 1 MPI_LINK
 > 6 0 1 1 0 "rank-0"
 > 5 4 2 computing "0 1 1"
-> 5 5 2 action_bcast "0 0.78 0.39"
+> 5 5 2 smpi_replay_init "0 1 0"
+> 5 6 2 action_bcast "0 0.78 0.39"
 > 6 0 2 1 0 "rank-1"
 > 6 0 3 1 0 "rank-2"
 > 12 0 2 1 4
-> 13 0 2 1
 > 12 0 2 1 5
+> 13 0 2 1
+> 12 0 2 1 6
 > 12 0 2 2 4
-> 13 0 2 2
 > 12 0 2 2 5
+> 13 0 2 2
+> 12 0 2 2 6
 > 12 0 2 3 4
-> 13 0 2 3
 > 12 0 2 3 5
-> 13 65.176535 2 3
-> 12 65.176535 2 3 4
-> 13 71.729958 2 3
-> 12 71.729958 2 3 5
-> 13 73.739750 2 2
-> 12 73.739750 2 2 4
-> 13 73.739750 2 1
-> 12 73.739750 2 1 4
-> 5 6 2 action_reduce "0 1 0"
-> 13 76.361119 2 2
-> 12 76.361119 2 2 5
-> 13 78.836850 2 1
-> 12 78.836850 2 1 5
-> 13 144.013385 2 3
-> 12 144.013385 2 3 4
-> 13 150.566808 2 3
-> 12 150.566808 2 3 6
-> 13 152.576600 2 2
-> 12 152.576600 2 2 4
-> 13 152.576600 2 1
-> 12 152.576600 2 1 4
-> 13 155.197969 2 2
-> 12 155.197969 2 2 6
-> 13 157.673699 2 1
-> 12 157.673699 2 1 6
-> 13 229.403658 2 3
-> 12 229.403658 2 3 4
-> 13 236.510549 2 1
-> 12 236.510549 2 1 4
-> 13 237.966873 2 2
-> 12 237.966873 2 2 4
-> 13 237.972762 2 2
-> 7 237.972762 1 2
-> 13 237.973799 2 3
-> 7 237.973799 1 3
-> 13 237.979818 2 1
-> 7 237.979818 1 1
+> 13 0 2 3
+> 12 0 2 3 6
+> 13 0 2 1
+> 12 0 2 1 4
+> 13 0.015036 2 2
+> 12 0.015036 2 2 4
+> 13 0.015676 2 3
+> 12 0.015676 2 3 4
+> 13 2.636405 2 2
+> 12 2.636405 2 2 6
+> 13 5.097100 2 1
+> 12 5.097100 2 1 6
+> 13 5.097100 2 1
+> 12 5.097100 2 1 4
+> 5 7 2 action_reduce "0 1 0"
+> 13 5.112136 2 2
+> 12 5.112136 2 2 4
+> 13 6.569099 2 3
+> 12 6.569099 2 3 6
+> 13 6.584775 2 3
+> 12 6.584775 2 3 4
+> 13 7.733505 2 2
+> 12 7.733505 2 2 7
+> 13 10.194200 2 1
+> 12 10.194200 2 1 7
+> 13 13.138198 2 3
+> 12 13.138198 2 3 7
+> 5 8 2 smpi_replay_finalize "0 1 0"
+> 13 14.286929 2 2
+> 13 18.250974 2 1
+> 13 19.691622 2 3
+> 12 19.695603 2 1 8
+> 12 19.698548 2 2 8
+> 13 19.698548 2 2
+> 7 19.698548 1 2
+> 12 19.699584 2 3 8
+> 13 19.699584 2 3
+> 7 19.699584 1 3
+> 13 19.705603 2 1
+> 7 19.705603 1 1
 
 
 $ rm -f ./simgrid.trace
@@ -225,11 +230,11 @@ p Another test of trace replay with SMPI (one trace per process)
 < replay/actions1.txt
 $ mkfile ./split_traces_tesh
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 2 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay ./split_traces_tesh
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 2 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay ./split_traces_tesh
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 > [Tremblay:0:(0) 0.164463] [smpi_replay/VERBOSE] 0 send 1 1e6 0.164463
 > [Jupiter:1:(0) 0.164463] [smpi_replay/VERBOSE] 1 recv 0 1e6 0.164463
@@ -239,7 +244,7 @@ $ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --
 > [Tremblay:0:(0) 13.435773] [smpi_replay/VERBOSE] 0 recv 1 1e6 13.271310
 > [Jupiter:1:(0) 13.600235] [smpi_replay/VERBOSE] 1 wait 0.328926
 > [Tremblay:0:(0) 13.600235] [smpi_replay/VERBOSE] 0 send 1 1e6 0.164463
-> [Tremblay:0:(0) 13.600235] [smpi_replay/INFO] Simulation time 13.6002
+> [Jupiter:1:(0) 13.600235] [smpi_replay/INFO] Simulation time 13.6002
 
 $ rm -f ./split_traces_tesh
 
@@ -248,11 +253,11 @@ p Test of barrier replay with SMPI (one trace for all processes)
 < replay/actions_barrier.txt
 $ mkfile replay/one_trace
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 > [Tremblay:0:(0) 1.491472] [smpi_replay/VERBOSE] 0 send 1 1e7 1.491472
 > [Jupiter:1:(0) 1.491472] [smpi_replay/VERBOSE] 1 recv 0 1e7 1.491472
@@ -271,25 +276,26 @@ p Test of Isend replay with SMPI (one trace for all processes)
 < replay/actions_with_isend.txt
 $ mkfile replay/one_trace
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Jupiter:1:(0) 0.000000] [smpi_replay/VERBOSE] 1 Irecv 0 1e9 0.000000
-> [Fafard:2:(0) 0.000000] [smpi_replay/VERBOSE] 2 Irecv 1 1e9 0.000000
+> [Jupiter:1:(0) 0.000000] [smpi_replay/VERBOSE] 1 Irecv 0 1e6 0.000000
+> [Fafard:2:(0) 0.000000] [smpi_replay/VERBOSE] 2 Irecv 1 1e6 0.000000
+> [Tremblay:0:(0) 0.164463] [smpi_replay/VERBOSE] 0 send 1 1e6 0.164463
 > [Fafard:2:(0) 6.553424] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Tremblay:0:(0) 10.358662] [smpi_replay/VERBOSE] 0 compute 1e9 10.194200
 > [Jupiter:1:(0) 13.106847] [smpi_replay/VERBOSE] 1 compute 1e9 13.106847
-> [Tremblay:0:(0) 147.462483] [smpi_replay/VERBOSE] 0 send 1 1e9 147.462483
-> [Jupiter:1:(0) 147.462483] [smpi_replay/VERBOSE] 1 wait 134.355636
-> [Tremblay:0:(0) 157.656682] [smpi_replay/VERBOSE] 0 compute 1e9 10.194200
-> [Fafard:2:(0) 294.947973] [smpi_replay/VERBOSE] 2 wait 288.394550
-> [Jupiter:1:(0) 294.947973] [smpi_replay/VERBOSE] 1 send 2 1e9 147.485491
-> [Fafard:2:(0) 294.947973] [smpi_replay/VERBOSE] 2 Isend 0 1e9 0.000000
-> [Fafard:2:(0) 301.501397] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
-> [Tremblay:0:(0) 425.278035] [smpi_replay/VERBOSE] 0 recv 2 1e9 267.621353
-> [Tremblay:0:(0) 425.278035] [smpi_replay/INFO] Simulation time 425.278
+> [Jupiter:1:(0) 13.106847] [smpi_replay/VERBOSE] 1 wait 0.000000
+> [Fafard:2:(0) 13.294318] [smpi_replay/VERBOSE] 2 wait 6.740894
+> [Jupiter:1:(0) 13.294318] [smpi_replay/VERBOSE] 1 send 2 1e6 0.187471
+> [Fafard:2:(0) 13.294318] [smpi_replay/VERBOSE] 2 Isend 0 1e6 0.000000
+> [Tremblay:0:(0) 13.447633] [smpi_replay/VERBOSE] 0 recv 2 1e6 3.088971
+> [Fafard:2:(0) 19.847741] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Fafard:2:(0) 19.847741] [smpi_replay/INFO] Simulation time 19.8477
+
 
 $ rm -f replay/one_trace
 
@@ -298,19 +304,19 @@ p Test of Isend replay with SMPI (one trace for all processes)
 < replay/actions_allReduce.txt
 $ mkfile replay/one_trace
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Fafard:2:(0) 144.013385] [smpi_replay/VERBOSE] 2 allReduce 5e8 5e8 144.013385
-> [Fafard:2:(0) 150.566808] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
-> [Jupiter:1:(0) 154.032923] [smpi_replay/VERBOSE] 1 allReduce 5e8 5e8 154.032923
-> [Tremblay:0:(0) 154.032923] [smpi_replay/VERBOSE] 0 allReduce 5e8 5e8 154.032923
-> [Tremblay:0:(0) 159.130023] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
-> [Jupiter:1:(0) 160.586347] [smpi_replay/VERBOSE] 1 compute 5e8 6.553424
-> [Jupiter:1:(0) 160.586347] [smpi_replay/INFO] Simulation time 160.586
+> [Tremblay:0:(0) 5.112775] [smpi_replay/VERBOSE] 0 allReduce 5e4 5e8 5.112775
+> [Jupiter:1:(0) 6.568459] [smpi_replay/VERBOSE] 1 allReduce 5e4 5e8 6.568459
+> [Fafard:2:(0) 6.569099] [smpi_replay/VERBOSE] 2 allReduce 5e4 5e8 6.569099
+> [Tremblay:0:(0) 10.209875] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
+> [Jupiter:1:(0) 13.121883] [smpi_replay/VERBOSE] 1 compute 5e8 6.553424
+> [Fafard:2:(0) 13.122523] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Fafard:2:(0) 13.122523] [smpi_replay/INFO] Simulation time 13.1225
 
 $ rm -f replay/one_trace
 
@@ -319,11 +325,11 @@ p Test of AllToAll replay with SMPI (one trace for all processes)
 < replay/actions_alltoall.txt
 $ mkfile replay/one_trace
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 > [Tremblay:0:(0) 0.004041] [smpi_replay/VERBOSE] 0 allToAll 500 500 0.004041
 > [Jupiter:1:(0) 0.006920] [smpi_replay/VERBOSE] 1 allToAll 500 500 0.006920
@@ -337,11 +343,11 @@ p Test of AllToAllv replay with SMPI (one trace for all processes)
 < replay/actions_alltoallv.txt
 $ mkfile replay/one_trace
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 > [Tremblay:0:(0) 0.003999] [smpi_replay/VERBOSE] 0 allToAllV 100 1 40 30 1000 1 80 100 0.003999
 > [Jupiter:1:(0) 0.006934] [smpi_replay/VERBOSE] 1 allToAllV 1000 80 1 40 1000 40 1 30 0.006934
@@ -355,11 +361,11 @@ p Test of AllGatherv replay with SMPI (one trace for all processes)
 < replay/actions_allgatherv.txt
 $ mkfile replay/one_trace
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 > [Tremblay:0:(0) 0.841244] [smpi_replay/VERBOSE] 0 allGatherV 275427 275427 275427 275427 204020 0 0 0.841244
 > [Fafard:2:(0) 1.239482] [smpi_replay/VERBOSE] 2 allGatherV 275427 275427 275427 275427 204020 0 0 1.239482
@@ -373,11 +379,11 @@ p Test of waitall replay with SMPI (one trace for all processes)
 < replay/actions_waitall.txt
 $ mkfile replay/one_trace
 
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 > [Tremblay:0:(0) 0.000000] [smpi_replay/VERBOSE] 0 Irecv 1 2000 0.000000
 > [Jupiter:1:(0) 0.000000] [smpi_replay/VERBOSE] 1 Isend 0 2000 0.000000
index 2e5c4c2..b983230 100644 (file)
@@ -4,11 +4,11 @@
 
 p Test instrumentation of SMPI
 $ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml -np 3 ./smpi_traced
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_traced.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
@@ -16,11 +16,11 @@ $ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-file smpi_traced.t
 
 p Another SMPI test
 $ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml -np 3 ./smpi_traced_simple
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_traced.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
@@ -35,28 +35,28 @@ $ ../../smpi_script/bin/smpirun -hostfile ${srcdir:=.}/hostfile -platform ${srcd
 
 p Testing grouped tracing
 $ ../../smpi_script/bin/smpirun -trace -trace-grouped -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml -np 3 ./smpi_traced_simple
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_traced.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/group' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/group' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 
 p Testing generation of viva configuration files
-$ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-viva -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml --cfg=smpi/cpu_threshold:1 -np 3 ./smpi_traced_simple
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+$ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-viva -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml --cfg=smpi/cpu_threshold:-1 -np 3 ./smpi_traced_simple
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_traced.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'smpi_cat.plist'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'smpi_uncat.plist'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
 > [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 > [0.013981] [instr_config/INFO] No categories declared, ignoring generation of viva graph configuration
 
diff --git a/generate.sh b/generate.sh
new file mode 100755 (executable)
index 0000000..5f39fdd
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+# Generate files from a given dwarf.h
+
+cat "$1" | grep DW_TAG_ | sed 's/.*\(DW_TAG_[^ ]*\) = \(0x[0-9a-f]*\).*/case \2: return "\1";/' > src/mc/mc_dwarf_tagnames.h
+cat "$1" | grep DW_AT_ | sed 's/.*\(DW_AT_[^ ]*\) = \(0x[0-9a-f]*\).*/case \2: return "\1";/' >  src/mc/mc_dwarf_attrnames.h
index fa2fc66..144d42b 100644 (file)
@@ -92,8 +92,10 @@ XBT_PUBLIC(sg_storage_size_t) MSG_file_get_size(msg_file_t fd);
 XBT_PUBLIC(void) MSG_file_dump(msg_file_t fd);
 XBT_PUBLIC(int) MSG_file_unlink(msg_file_t fd);
 XBT_PUBLIC(xbt_dict_t) MSG_file_ls(const char *mount, const char *path);
+XBT_PUBLIC(msg_error_t) MSG_file_move (msg_file_t fd, msg_host_t dest, char* mount, char* fullname);
+XBT_PUBLIC(msg_error_t) MSG_file_seek (msg_file_t fd, sg_storage_size_t offset, int whence);
+XBT_PUBLIC(msg_error_t) MSG_file_rename (msg_file_t fd, char* new_name);
 XBT_PUBLIC(void) __MSG_file_get_info(msg_file_t fd);
-
 /************************** Storage handling ***********************************/
 XBT_PUBLIC(msg_host_t) MSG_get_storage_by_name(const char *name);
 XBT_PUBLIC(const char *) MSG_storage_get_name(msg_storage_t storage);
index fcc7da1..f97be05 100644 (file)
@@ -18,8 +18,8 @@
 extern int _sg_do_model_check; /* please don't use directly: we inline MC_is_active, but that's what you should use */
 extern int _sg_mc_visited;
 
-#define MC_is_active() _sg_do_model_check
-#define MC_visited_reduction() _sg_mc_visited
+#define MC_is_active()                  _sg_do_model_check
+#define MC_visited_reduction()          _sg_mc_visited
 
 XBT_PUBLIC(void) MC_assert(int);
 XBT_PUBLIC(int) MC_random(int min, int max);
@@ -31,9 +31,16 @@ XBT_PUBLIC(void) MC_ignore(void *addr, size_t size);
 
 #else
 
-#define MC_assert(a) xbt_assert(a)
-#define MC_is_active() 0
-#define MC_visited_reduction() 0
+#define MC_is_active()                  0
+#define MC_visited_reduction()          0
+
+#define MC_assert(a)                    xbt_assert(a)
+#define MC_random(a, b)                 0
+#define MC_automaton_new_propositional_symbol(a, b) ((void)0)
+#define MC_snapshot()                   ((void*)0)
+#define MC_compare_snapshots(a, b)      0
+#define MC_cut()                        ((void)0)
+#define MC_ignore(a, b)                 ((void)0)
 
 #endif
 
index fb08c29..789464f 100644 (file)
@@ -22,6 +22,8 @@ SG_BEGIN_DECL()
 #define SIMGRID_VERSION_MINOR @SIMGRID_VERSION_MINOR@
 #define SIMGRID_VERSION_PATCH @SIMGRID_VERSION_PATCH@
 
+#define SIMGRID_VERSION_STRING "@SIMGRID_VERSION_STRING@"
+
 /* Version X.Y.Z will get version number XYZ: all digits concatenated without dots
  * (with Y and Z must be on two positions)*/
 
index c6a96a2..213fe84 100644 (file)
 
       double precision MPI_WTIME
       double precision MPI_WTICK
+
+      external smpi_execute_flops
+      external smpi_execute
+      external smpi_get_host_power_peak_at
+      external smpi_get_host_current_power_peak
+      external smpi_get_host_nb_pstates
+      external smpi_set_host_power_peak_at
+      external smpi_get_host_consumed_energy
+
+      double precision smpi_get_host_power_peak_at
+      double precision smpi_get_host_current_power_peak
+      integer smpi_get_host_nb_pstates
+      double precision smpi_get_host_consumed_energy
index 710e5da..3901734 100644 (file)
@@ -682,6 +682,15 @@ XBT_PUBLIC(MPI_Comm) smpi_process_comm_self(void);
 XBT_PUBLIC(void) smpi_exit(int);
 */
 
+XBT_PUBLIC(void) smpi_execute_flops(double flops);
+XBT_PUBLIC(void) smpi_execute(double duration);
+
+XBT_PUBLIC(double) smpi_get_host_power_peak_at(int pstate_index);
+XBT_PUBLIC(double) smpi_get_host_current_power_peak(void);
+XBT_PUBLIC(int) smpi_get_host_nb_pstates(void);
+XBT_PUBLIC(void) smpi_set_host_power_peak_at(int pstate_index);
+XBT_PUBLIC(double) smpi_get_host_consumed_energy(void);
+
 XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int secs);
 XBT_PUBLIC(int) smpi_gettimeofday(struct timeval *tv);
 XBT_PUBLIC(unsigned long long) smpi_rastro_resolution (void);
@@ -723,6 +732,7 @@ XBT_PUBLIC(int) __attribute__((weak)) MAIN__(void);
 XBT_PUBLIC(int) smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[]);
 XBT_PUBLIC(void) __attribute__((weak)) user_main_(void);
 XBT_PUBLIC(int) smpi_process_index(void);
+XBT_PUBLIC(void) smpi_process_init(int *argc, char ***argv);
 
 /* Trace replay specific stuff */
 XBT_PUBLIC(void) smpi_replay_init(int *argc, char***argv);
index 37b80e8..e558101 100644 (file)
@@ -17,7 +17,6 @@
 
 XBT_PUBLIC_DATA(__thread int) smpi_current_rank;
 
-XBT_PUBLIC(void) smpi_process_init(int *argc, char ***argv);
 XBT_PUBLIC(int) smpi_process_argc(void);
 XBT_PUBLIC(int) smpi_process_getarg(integer* index, char* dst, ftnlen len);
 XBT_PUBLIC(int) smpi_global_size(void);
index f80fe2d..e57f166 100644 (file)
@@ -447,11 +447,7 @@ XBT_PUBLIC( void )__xbt_ex_terminate_default(xbt_ex_t * e);
 #define THROW_UNIMPLEMENTED \
   THROWF(unknown_error, 0, "Function %s unimplemented",_XBT_FUNCTION)
 
-#ifndef NDEBUG
-#  define DIE_IMPOSSIBLE       xbt_assert(0,"The Impossible Did Happen (yet again)")
-#else
-#  define DIE_IMPOSSIBLE       exit(1);
-#endif
+#define DIE_IMPOSSIBLE xbt_die("The Impossible Did Happen (yet again)")
 
 /** @brief re-throwing of an already caught exception (ie, pass it to the upper catch block) 
  *  @hideinitializer
index 229566c..93409c5 100644 (file)
@@ -25,11 +25,11 @@ public final class Msg {
                        return;
                try {
                        /* prefer the version on disk, if existing */
-                       System.loadLibrary("SG_java");
+                       System.loadLibrary("simgrid-java");
                } catch (UnsatisfiedLinkError e) {
                        /* If not found, unpack the one bundled into the jar file and use it */
                        loadLib("simgrid");
-                       loadLib("SG_java");
+                       loadLib("simgrid-java");
                }
                isNativeInited = true;
        }
index 5c8e4d1..d13ce8c 100644 (file)
@@ -10,6 +10,9 @@
 #include "xbt/swag.h"
 #include "xbt/fifo.h"
 
+#include <libunwind.h>
+#include <dwarf.h>
+
 SG_BEGIN_DECL()
 
 /******************************* Transitions **********************************/
@@ -39,27 +42,16 @@ void heap_ignore_region_free_voidp(void *r);
 
 /************ DWARF structures *************/
 
-typedef enum{
-  e_dw_base_type = 0,
-  e_dw_enumeration_type,
-  e_dw_enumerator,
-  e_dw_typedef,
-  e_dw_const_type,
-  e_dw_array_type,
-  e_dw_pointer_type,
-  e_dw_structure_type,
-  e_dw_union_type,
-  e_dw_subroutine_type,
-  e_dw_volatile_type
-}e_dw_type_type;
+typedef int e_dw_type_type;
 
 typedef struct s_dw_type{
   e_dw_type_type type;
-  void *id;
-  char *name;
-  int size;
-  char *dw_type_id;
-  xbt_dynar_t members; /* if DW_TAG_structure_type */
+  void *id; /* Offset in the section (in hexadecimal form) */
+  char *name; /* Name of the type */
+  int byte_size; /* Size in bytes */
+  int element_count; /* Number of elements for array type */
+  char *dw_type_id; /* DW_AT_type */
+  xbt_dynar_t members; /* if DW_TAG_structure_type, DW_TAG_union_type*/
   int is_pointer_type;
   int offset;
 }s_dw_type_t, *dw_type_t;
index 0030870..2a44cfe 100644 (file)
@@ -2,16 +2,7 @@
 #define _SMPI_INTERFACE_H
 #include "smpi/smpi.h"
 
-/********** Tracing **********/
-/* from smpi_instr.c */
-void TRACE_smpi_alloc(void);
-void TRACE_smpi_release(void);
-void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, int size);
-void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation);
-void TRACE_smpi_send(int rank, int src, int dst, int size);
-void TRACE_smpi_recv(int rank, int src, int dst);
-void TRACE_smpi_init(int rank);
-void TRACE_smpi_finalize(int rank);
+
 
 /** \brief MPI collective description
  */
index 0db88a3..acd57fb 100644 (file)
@@ -33,7 +33,6 @@ static XBT_INLINE int double_equals(double value1, double value2)
 
 XBT_PUBLIC(lmm_system_t) lmm_system_new(int selective_update);
 XBT_PUBLIC(void) lmm_system_free(lmm_system_t sys);
-void lmm_variable_disable(lmm_system_t sys, lmm_variable_t var);
 
 XBT_PUBLIC(lmm_constraint_t) lmm_constraint_new(lmm_system_t sys, void *id,
                                                 double bound_value);
diff --git a/src/instr/instr_TI_trace.c b/src/instr/instr_TI_trace.c
new file mode 100644 (file)
index 0000000..83e7103
--- /dev/null
@@ -0,0 +1,239 @@
+/* Copyright (c) 2010-2013. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+  * under the terms of the license (GNU LGPL) which comes with this package. */
+#include "instr/instr_private.h"
+#include "xbt/virtu.h" /* sg_cmdline */
+#include "xbt/xbt_os_time.h"
+#include "simgrid/sg_config.h"
+
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_TI_trace, instr_trace, "tracing event system");
+
+extern FILE *tracing_file;
+double prefix=0.0;
+
+xbt_dict_t tracing_files = NULL;
+
+extern s_instr_trace_writer_t active_writer;
+
+void TRACE_TI_init(void)
+{
+  active_writer.print_PushState = print_TIPushState;
+  active_writer.print_CreateContainer=print_TICreateContainer;
+  active_writer.print_DestroyContainer=print_TIDestroyContainer;
+}
+
+void TRACE_TI_start(void)
+{
+  char *filename = TRACE_get_filename();
+  tracing_file = fopen(filename, "w");
+  if (tracing_file == NULL) {
+    THROWF(system_error, 1, "Tracefile %s could not be opened for writing.",
+           filename);
+  }
+
+  XBT_DEBUG("Filename %s is open for writing", filename);
+
+  /* output one line comment */
+  dump_comment(TRACE_get_comment());
+
+  /* output comment file */
+  dump_comment_file(TRACE_get_comment_file());
+
+}
+
+void TRACE_TI_end(void)
+{
+  xbt_dict_free(&tracing_files);
+  fclose(tracing_file);
+  char *filename = TRACE_get_filename();
+  XBT_DEBUG("Filename %s is closed", filename);
+}
+
+void print_TICreateContainer(paje_event_t event)
+{
+  //if we are in the mode with only one file
+  static FILE *temp = NULL;
+
+  if (tracing_files == NULL) {
+    tracing_files = xbt_dict_new_homogeneous(NULL);
+    //generate unique run id with time
+    prefix = xbt_os_time();
+  }
+
+  if (!xbt_cfg_get_boolean(_sg_cfg_set, "tracing/smpi/format/ti_one_file")
+      || temp == NULL) {
+    char *folder_name = bprintf("%s_files", TRACE_get_filename());
+    char *filename = bprintf("%s/%f_%s.txt", folder_name, prefix,
+                             ((createContainer_t) event->data)->container->name);
+    mkdir(folder_name, S_IRWXU | S_IRWXG | S_IRWXO);
+    temp = fopen(filename, "w");
+    if (temp == NULL)
+      xbt_die("Tracefile %s could not be opened for writing: %s",
+              filename, strerror(errno));
+    fprintf(tracing_file, "%s\n", filename);
+
+    xbt_free(folder_name);
+    xbt_free(filename);
+  }
+
+  xbt_dict_set(tracing_files,
+               ((createContainer_t) event->data)->container->name,
+               (void *) temp, NULL);
+}
+
+void print_TIDestroyContainer(paje_event_t event)
+{
+  if (!xbt_cfg_get_boolean(_sg_cfg_set, "tracing/smpi/format/ti_one_file")||
+      xbt_dict_length(tracing_files) == 1) {
+    FILE* f = xbt_dict_get_or_null(tracing_files,
+        ((destroyContainer_t) event->data)->container->name);
+    fclose(f);
+  }
+  xbt_dict_remove(tracing_files, ((destroyContainer_t) event->data)->container->name);
+}
+
+
+void print_TIPushState(paje_event_t event)
+{
+
+
+  int i;
+
+  //char* function=NULL;
+  if (((pushState_t) event->data)->extra == NULL)
+    return;
+  instr_extra_data extra =
+      (instr_extra_data) (((pushState_t) event->data)->extra);
+
+  char *process_id = NULL;
+  //FIXME: dirty extract "rank-" from the name, as we want the bare process id here
+  if (strstr(((pushState_t) event->data)->container->name, "rank-") == NULL)
+    process_id = xbt_strdup(((pushState_t) event->data)->container->name);
+  else
+    process_id = xbt_strdup(((pushState_t) event->data)->container->name + 5);
+
+  FILE* trace_file =  (FILE* )xbt_dict_get(tracing_files, ((pushState_t) event->data)->container->name);
+
+  switch (extra->type) {
+
+  case TRACING_INIT:
+    fprintf(trace_file, "%s init\n", process_id);
+    break;
+  case TRACING_FINALIZE:
+    fprintf(trace_file, "%s finalize\n", process_id);
+    break;
+  case TRACING_SEND:
+    fprintf(trace_file, "%s send %d %d %s\n", process_id, extra->dst,
+            extra->send_size, extra->datatype1);
+    break;
+  case TRACING_ISEND:
+    fprintf(trace_file, "%s isend %d %d %s\n", process_id, extra->dst,
+            extra->send_size, extra->datatype1);
+    break;
+  case TRACING_RECV:
+    fprintf(trace_file, "%s recv %d %d %s\n", process_id, extra->src,
+            extra->send_size, extra->datatype1);
+    break;
+  case TRACING_IRECV:
+    fprintf(trace_file, "%s irecv %d %d %s\n", process_id, extra->src,
+            extra->send_size, extra->datatype1);
+    break;
+  case TRACING_WAIT:
+    fprintf(trace_file, "%s wait\n", process_id);
+    break;
+  case TRACING_WAITALL:
+    fprintf(trace_file, "%s waitall\n", process_id);
+    break;
+  case TRACING_BARRIER:
+    fprintf(trace_file, "%s barrier\n", process_id);
+    break;
+  case TRACING_BCAST:          // rank bcast size (root) (datatype)
+    fprintf(trace_file, "%s bcast %d ", process_id, extra->send_size);
+    if (extra->root != 0 || (extra->datatype1 && strcmp(extra->datatype1, "")))
+      fprintf(trace_file, "%d %s", extra->root, extra->datatype1);
+    fprintf(trace_file, "\n");
+    break;
+  case TRACING_REDUCE:         // rank reduce comm_size comp_size (root) (datatype)
+    fprintf(trace_file, "%s reduce %d %f ", process_id, extra->send_size,
+            extra->comp_size);
+    if (extra->root != 0 || (extra->datatype1 && strcmp(extra->datatype1, "")))
+      fprintf(trace_file, "%d %s", extra->root, extra->datatype1);
+    fprintf(trace_file, "\n");
+    break;
+  case TRACING_ALLREDUCE:      // rank allreduce comm_size comp_size (datatype)
+    fprintf(trace_file, "%s allreduce %d %f %s\n", process_id,
+            extra->send_size, extra->comp_size, extra->datatype1);
+    break;
+  case TRACING_ALLTOALL:       // rank alltoall send_size recv_size (sendtype) (recvtype)
+    fprintf(trace_file, "%s alltoall %d %d %s %s\n", process_id,
+            extra->send_size, extra->recv_size, extra->datatype1,
+            extra->datatype2);
+    break;
+  case TRACING_ALLTOALLV:      // rank alltoallv send_size [sendcounts] recv_size [recvcounts] (sendtype) (recvtype)
+    fprintf(trace_file, "%s alltoallv %d ", process_id, extra->send_size);
+    for (i = 0; i < extra->num_processes; i++)
+      fprintf(trace_file, "%d ", extra->sendcounts[i]);
+    fprintf(trace_file, "%d ", extra->recv_size);
+    for (i = 0; i < extra->num_processes; i++)
+      fprintf(trace_file, "%d ", extra->recvcounts[i]);
+    fprintf(trace_file, "%s %s \n", extra->datatype1, extra->datatype2);
+    break;
+  case TRACING_GATHER:         // rank gather send_size recv_size root (sendtype) (recvtype)
+    fprintf(trace_file, "%s gather %d %d %d %s %s\n", process_id,
+            extra->send_size, extra->recv_size, extra->root, extra->datatype1,
+            extra->datatype2);
+    break;
+  case TRACING_ALLGATHERV:     // rank allgatherv send_size [recvcounts] (sendtype) (recvtype)
+    fprintf(trace_file, "%s allgatherv %d ", process_id, extra->send_size);
+    for (i = 0; i < extra->num_processes; i++)
+      fprintf(trace_file, "%d ", extra->recvcounts[i]);
+    fprintf(trace_file, "%s %s \n", extra->datatype1, extra->datatype2);
+    break;
+  case TRACING_REDUCE_SCATTER: // rank reducescatter [recvcounts] comp_size (sendtype)
+    fprintf(trace_file, "%s reducescatter ", process_id);
+    for (i = 0; i < extra->num_processes; i++)
+      fprintf(trace_file, "%d ", extra->recvcounts[i]);
+    fprintf(trace_file, "%f %s\n", extra->comp_size, extra->datatype1);
+    break;
+  case TRACING_COMPUTING:
+    fprintf(trace_file, "%s compute %f\n", process_id, extra->comp_size);
+    break;
+  case TRACING_GATHERV: // rank gatherv send_size [recvcounts] root (sendtype) (recvtype)
+    fprintf(trace_file, "%s gatherv %d ", process_id, extra->send_size);
+    for (i = 0; i < extra->num_processes; i++)
+      fprintf(trace_file, "%d ", extra->recvcounts[i]);
+    fprintf(trace_file, "%d %s %s\n", extra->root, extra->datatype1, extra->datatype2);
+    break;
+  case TRACING_WAITANY:
+  case TRACING_SENDRECV:
+  case TRACING_SCATTER:
+  case TRACING_SCATTERV:
+  case TRACING_ALLGATHER:
+  case TRACING_SCAN:
+  case TRACING_EXSCAN:
+  case TRACING_COMM_SIZE:
+  case TRACING_COMM_SPLIT:
+  case TRACING_COMM_DUP:
+  case TRACING_SSEND:
+  case TRACING_ISSEND:
+  default:
+
+    XBT_WARN
+        ("Call from %s impossible to translate into replay command : Not implemented (yet)",
+         ((pushState_t) event->data)->value->name);
+    break;
+  }
+
+  if (extra->recvcounts != NULL)
+    xbt_free(extra->recvcounts);
+  if (extra->sendcounts != NULL)
+    xbt_free(extra->sendcounts);
+  xbt_free(process_id);
+  xbt_free(extra);
+}
index 3ef4c71..6300219 100644 (file)
@@ -21,6 +21,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_config, instr, "Configuration");
 #define OPT_TRACING_SMPI_COMPUTING "tracing/smpi/computing"
 #define OPT_TRACING_SMPI_INTERNALS "tracing/smpi/internals"
 #define OPT_TRACING_DISPLAY_SIZES  "tracing/smpi/display_sizes"
+#define OPT_TRACING_FORMAT        "tracing/smpi/format"
+#define OPT_TRACING_FORMAT_TI_ONEFILE "tracing/smpi/format/ti_one_file"
 #define OPT_TRACING_CATEGORIZED   "tracing/categorized"
 #define OPT_TRACING_UNCATEGORIZED "tracing/uncategorized"
 #define OPT_TRACING_MSG_PROCESS   "tracing/msg/process"
@@ -63,24 +65,24 @@ static int trace_active = 0;
 
 static void TRACE_getopts(void)
 {
-  trace_enabled = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING);
-  trace_platform = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_PLATFORM);
-  trace_platform_topology = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_TOPOLOGY);
-  trace_smpi_enabled = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_SMPI);
-  trace_smpi_grouped = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_SMPI_GROUP);
-  trace_smpi_computing = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING);
-  trace_view_internals = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS);
-  trace_categorized = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_CATEGORIZED);
-  trace_uncategorized = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED);
-  trace_msg_process_enabled = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_MSG_PROCESS);
-  trace_msg_vm_enabled = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_MSG_VM);
-  trace_buffer = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_BUFFER);
-  trace_onelink_only = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY);
-  trace_disable_destroy = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY);
-  trace_basic = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_BASIC);
-  trace_display_sizes = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES);
-  trace_disable_link = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_LINK);
-  trace_disable_power = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_POWER);
+  trace_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING);
+  trace_platform = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_PLATFORM);
+  trace_platform_topology = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_TOPOLOGY);
+  trace_smpi_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI);
+  trace_smpi_grouped = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_GROUP);
+  trace_smpi_computing = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING);
+  trace_view_internals = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS);
+  trace_categorized = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_CATEGORIZED);
+  trace_uncategorized = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED);
+  trace_msg_process_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_MSG_PROCESS);
+  trace_msg_vm_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_MSG_VM);
+  trace_buffer = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_BUFFER);
+  trace_onelink_only = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY);
+  trace_disable_destroy = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY);
+  trace_basic = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_BASIC);
+  trace_display_sizes = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES);
+  trace_disable_link = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_LINK);
+  trace_disable_power = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_POWER);
 }
 
 static xbt_dynar_t TRACE_start_functions = NULL;
@@ -96,13 +98,27 @@ int TRACE_start()
   TRACE_getopts();
 
   // tracing system must be:
-  //    - enabled (with --cfg=tracing:1)
+  //    - enabled (with --cfg=tracing:yes)
   //    - already configured (TRACE_global_init already called)
   if (TRACE_is_enabled() && TRACE_is_configured()) {
     XBT_DEBUG("Tracing starts");
 
-    /* open the trace file */
-    TRACE_paje_start();
+    /* init the tracing module to generate the right output */
+    /* open internal buffer */
+    TRACE_init();
+
+    /* open the trace file(s) */
+    const char* format = sg_cfg_get_string(OPT_TRACING_FORMAT);
+    XBT_DEBUG("Tracing format %s\n", format);
+    if(!strcmp(format, "Paje")){
+      TRACE_paje_init();
+      TRACE_paje_start();
+    }else if (!strcmp(format, "TI")){
+      TRACE_TI_init();
+      TRACE_TI_start();
+    }else{
+      xbt_die("Unknown trace format :%s ", format);
+    }
 
     /* activate trace */
     if (trace_active == 1) {
@@ -173,9 +189,18 @@ int TRACE_end()
     xbt_dict_free(&declared_marks);
     xbt_dict_free(&created_categories);
 
-    /* close the trace file */
-    TRACE_paje_end();
-
+    /* close the trace files */
+    const char* format = sg_cfg_get_string(OPT_TRACING_FORMAT);
+    XBT_DEBUG("Tracing format %s\n", format);
+    if(!strcmp(format, "Paje")){
+      TRACE_paje_end();
+    }else if (!strcmp(format, "TI")){
+      TRACE_TI_end();
+    }else{
+      xbt_die("Unknown trace format :%s ", format);
+    }
+    /* close internal buffer */
+    TRACE_finalize();
     /* de-activate trace */
     trace_active = 0;
     XBT_DEBUG("Tracing is off");
@@ -328,111 +353,124 @@ void TRACE_global_init(int *argc, char **argv)
   /* tracing */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING,
                    "Enable Tracing.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING, "no");
 
   /* register platform in the trace */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_PLATFORM,
                    "Register the platform in the trace as a hierarchy.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_PLATFORM, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_PLATFORM, "no");
 
   /* register platform in the trace */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_TOPOLOGY,
                    "Register the platform topology in the trace as a graph.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_TOPOLOGY, 1);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_TOPOLOGY, "yes");
 
   /* smpi */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI,
                    "Tracing of the SMPI interface.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_SMPI, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI, "no");
 
   /* smpi grouped */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_GROUP,
                    "Group MPI processes by host.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_SMPI_GROUP, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_GROUP, "no");
 
   /* smpi computing */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING,
                    "Generate states for timing out of SMPI parts of the application",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING, "no");
 
   /* smpi internals */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS,
                    "View internal messages sent by Collective communications in SMPI",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS, "no");
 
   /* tracing categorized resource utilization traces */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_CATEGORIZED,
                    "Tracing categorized resource utilization of hosts and links.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_CATEGORIZED, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_CATEGORIZED, "no");
 
   /* tracing uncategorized resource utilization */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_UNCATEGORIZED,
                    "Tracing uncategorized resource utilization of hosts and links.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED, "no");
 
   /* msg process */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_MSG_PROCESS,
                    "Tracing of MSG process behavior.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_MSG_PROCESS, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_MSG_PROCESS, "no");
 
   /* msg process */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_MSG_VM,
                    "Tracing of MSG process behavior.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_MSG_VM, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_MSG_VM, "no");
 
   /* disable tracing link */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_LINK,
                    "Do not trace link bandwidth and latency.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_DISABLE_LINK, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_LINK, "no");
 
   /* disable tracing link */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_POWER,
                    "Do not trace host power.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_DISABLE_POWER, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_POWER, "no");
 
 
   /* tracing buffer */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_BUFFER,
                    "Buffer trace events to put them in temporal order.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_BUFFER, 1);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_BUFFER, "yes");
 
   /* tracing one link only */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_ONELINK_ONLY,
                    "Use only routes with one link to trace platform.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY, "no");
 
   /* disable destroy */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY,
                    "Disable platform containers destruction.",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY, "no");
 
   /* basic -- Avoid extended events (impoverished trace file) */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_BASIC,
                    "Avoid extended events (impoverished trace file).",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_BASIC, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_BASIC, "no");
 
   /* display_sizes -- Extended events with message size information */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES,
                    "(smpi only for now) Extended events with message size information",
-                   xbt_cfgelm_int, 0, 1, NULL, NULL);
-  xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES, 0);
+                   xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES, "no");
+
+  /* format -- Switch the ouput format of Tracing */
+  xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_FORMAT,
+                   "(smpi only for now) Switch the ouput format of Tracing",
+                   xbt_cfgelm_string, 1, 1, NULL, NULL);
+  xbt_cfg_setdefault_string(_sg_cfg_set, OPT_TRACING_FORMAT, "Paje");
+
+
+  /* format -- Switch the ouput format of Tracing */
+  xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_FORMAT_TI_ONEFILE,
+                   "(smpi only for now) For replay format only : output to one file only",
+                   xbt_cfgelm_boolean, 1, 1, NULL, NULL);
+  xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_FORMAT_TI_ONEFILE, "no");
 
   /* comment */
   xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_COMMENT,
@@ -550,6 +588,15 @@ void TRACE_help (int detailed)
       "Message size (in bytes) is added to links, and to states. For collectives, the displayed value \n"
       "is the more relevant to the collective (total sent by the process, usually)",
       detailed);
+  print_line (OPT_TRACING_FORMAT, "Only works for SMPI now. Switch output format",
+      "Default format is Paje. Time independent traces are also supported, \n"
+      "to output traces that can later be used by the trace replay tool",
+      detailed);
+  print_line (OPT_TRACING_FORMAT_TI_ONEFILE, "Only works for SMPI now, and TI output format",
+      "By default, each process outputs to a separate file, inside a filename_files folder \n"
+      "By setting this option to yes, all processes will output to only one file \n"
+      "This is meant to avoid opening thousands of files with large simulations",
+      detailed);
   print_line (OPT_TRACING_COMMENT, "Comment to be added on the top of the trace file.",
       "  Use this to add a comment line to the top of the trace file.",
       detailed);
index 734496d..46603c6 100644 (file)
 #include "instr/instr_private.h"
 #include "xbt/virtu.h" /* sg_cmdline */
 
-#ifdef HAVE_TRACING
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr, "Paje tracing event system");
-
-typedef struct paje_event *paje_event_t;
-typedef struct paje_event {
-  double timestamp;
-  e_event_type event_type;
-  void (*print) (paje_event_t event);
-  void (*free) (paje_event_t event);
-  void *data;
-} s_paje_event_t;
-
-typedef struct s_defineContainerType *defineContainerType_t;
-typedef struct s_defineContainerType {
-  type_t type;
-}s_defineContainerType_t;
-
-typedef struct s_defineVariableType *defineVariableType_t;
-typedef struct s_defineVariableType {
-  type_t type;
-}s_defineVariableType_t;
-
-typedef struct s_defineStateType *defineStateType_t;
-typedef struct s_defineStateType {
-  type_t type;
-}s_defineStateType_t;
-
-typedef struct s_defineEventType *defineEventType_t;
-typedef struct s_defineEventType {
-  type_t type;
-}s_defineEventType_t;
-
-typedef struct s_defineLinkType *defineLinkType_t;
-typedef struct s_defineLinkType {
-  type_t type;
-  type_t source;
-  type_t dest;
-}s_defineLinkType_t;
-
-typedef struct s_defineEntityValue *defineEntityValue_t;
-typedef struct s_defineEntityValue {
-  val_t value;
-}s_defineEntityValue_t;
-
-typedef struct s_createContainer *createContainer_t;
-typedef struct s_createContainer {
-  container_t container;
-}s_createContainer_t;
-
-typedef struct s_destroyContainer *destroyContainer_t;
-typedef struct s_destroyContainer {
-  container_t container;
-}s_destroyContainer_t;
-
-typedef struct s_setVariable *setVariable_t;
-typedef struct s_setVariable {
-  container_t container;
-  type_t type;
-  double value;
-}s_setVariable_t;
-
-typedef struct s_addVariable *addVariable_t;
-typedef struct s_addVariable {
-  container_t container;
-  type_t type;
-  double value;
-}s_addVariable_t;
-
-typedef struct s_subVariable *subVariable_t;
-typedef struct s_subVariable {
-  container_t container;
-  type_t type;
-  double value;
-}s_subVariable_t;
-
-typedef struct s_setState *setState_t;
-typedef struct s_setState {
-  container_t container;
-  type_t type;
-  val_t value;
-}s_setState_t;
-
-typedef struct s_pushState *pushState_t;
-typedef struct s_pushState {
-  container_t container;
-  type_t type;
-  val_t value;
-  int size;
-}s_pushState_t;
-
-typedef struct s_popState *popState_t;
-typedef struct s_popState {
-  container_t container;
-  type_t type;
-}s_popState_t;
-
-typedef struct s_resetState *resetState_t;
-typedef struct s_resetState {
-  container_t container;
-  type_t type;
-}s_resetState_t;
-
-typedef struct s_startLink *startLink_t;
-typedef struct s_startLink {
-  container_t container;
-  type_t type;
-  container_t sourceContainer;
-  char *value;
-  char *key;
-  int size;
-}s_startLink_t;
-
-typedef struct s_endLink *endLink_t;
-typedef struct s_endLink {
-  container_t container;
-  type_t type;
-  container_t destContainer;
-  char *value;
-  char *key;
-}s_endLink_t;
-
-typedef struct s_newEvent *newEvent_t;
-typedef struct s_newEvent {
-  container_t container;
-  type_t type;
-  val_t value;
-}s_newEvent_t;
-
-FILE *tracing_file = NULL;
-
-static xbt_dynar_t buffer = NULL;
-
-static void dump_comment (const char *comment)
-{
-  if (!strlen(comment)) return;
-  fprintf (tracing_file, "# %s\n", comment);
-}
-
-static void dump_comment_file (const char *filename)
-{
-  if (!strlen(filename)) return;
-  FILE *file = fopen (filename, "r");
-  if (!file){
-    THROWF (system_error, 1, "Comment file %s could not be opened for reading.", filename);
-  }
-  while (!feof(file)){
-    char c;
-    c = fgetc(file);
-    if (feof(file)) break;
-    fprintf (tracing_file, "# ");
-    while (c != '\n'){
-      fprintf (tracing_file, "%c", c);
-      c = fgetc(file);
-      if (feof(file)) break;
-    }
-    fprintf (tracing_file, "\n");
-  }
-  fclose(file);
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr_trace, "tracing event system");
+
+extern FILE * tracing_file;
+extern s_instr_trace_writer_t active_writer;
+
+
+void TRACE_paje_init(void)
+{
+  active_writer.print_DefineContainerType=print_pajeDefineContainerType;
+  active_writer.print_DefineVariableType=print_pajeDefineVariableType;
+  active_writer.print_DefineStateType=print_pajeDefineStateType;
+  active_writer.print_DefineEventType=print_pajeDefineEventType;
+  active_writer.print_DefineLinkType=print_pajeDefineLinkType;
+  active_writer.print_DefineEntityValue=print_pajeDefineEntityValue;
+  active_writer.print_CreateContainer=print_pajeCreateContainer;
+  active_writer.print_DestroyContainer=print_pajeDestroyContainer;
+  active_writer.print_SetVariable=print_pajeSetVariable;
+  active_writer.print_AddVariable=print_pajeAddVariable;
+  active_writer.print_SubVariable=print_pajeSubVariable;
+  active_writer.print_SetState=print_pajeSetState;
+  active_writer.print_PushState=print_pajePushState;
+  active_writer.print_PopState=print_pajePopState;
+  active_writer.print_ResetState=print_pajeResetState;
+  active_writer.print_StartLink=print_pajeStartLink;
+  active_writer.print_EndLink=print_pajeEndLink;
+  active_writer.print_NewEvent=print_pajeNewEvent;
 }
 
-
 void TRACE_paje_start(void)
 {
   char *filename = TRACE_get_filename();
@@ -198,74 +64,17 @@ void TRACE_paje_start(void)
   /* output header */
   TRACE_header(TRACE_basic(),TRACE_display_sizes());
 
-  buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
 }
 
 void TRACE_paje_end(void)
 {
   fclose(tracing_file);
   char *filename = TRACE_get_filename();
-  xbt_dynar_free (&buffer);
   XBT_DEBUG("Filename %s is closed", filename);
 }
 
-double TRACE_last_timestamp_to_dump = 0;
-//dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
-void TRACE_paje_dump_buffer (int force)
-{
-  if (!TRACE_is_enabled()) return;
-  XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
-  if (force){
-    paje_event_t event;
-    unsigned int i;
-    xbt_dynar_foreach(buffer, i, event){
-      event->print (event);
-      event->free (event);
-    }
-    xbt_dynar_free (&buffer);
-    buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
-  }else{
-    paje_event_t event;
-    unsigned int cursor;
-    xbt_dynar_foreach(buffer, cursor, event) {
-      double head_timestamp = event->timestamp;
-      if (head_timestamp > TRACE_last_timestamp_to_dump){
-        break;
-      }
-      event->print (event);
-      event->free (event);
-    }
-    xbt_dynar_remove_n_at(buffer, cursor, 0);
-  }
-  XBT_DEBUG("%s: ends", __FUNCTION__);
-}
-
-/* internal do the instrumentation module */
-static void insert_into_buffer (paje_event_t tbi)
-{
-  if (TRACE_buffer() == 0){
-    tbi->print (tbi);
-    tbi->free (tbi);
-    return;
-  }
-  XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
-      __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
-
-  unsigned int i;
-  for (i = xbt_dynar_length(buffer); i > 0; i--) {
-    paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
-    if (e1->timestamp <= tbi->timestamp)
-      break;
-  }
-  xbt_dynar_insert_at(buffer, i, &tbi);
-  if (i == 0)
-    XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
-  else
-    XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
-              (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
-}
 
-static void print_pajeDefineContainerType(paje_event_t event)
+void print_pajeDefineContainerType(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
   fprintf(tracing_file, "%d %s %s %s\n",
@@ -275,7 +84,7 @@ static void print_pajeDefineContainerType(paje_event_t event)
       ((defineContainerType_t)event->data)->type->name);
 }
 
-static void print_pajeDefineVariableType(paje_event_t event)
+void print_pajeDefineVariableType(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
   fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
@@ -286,7 +95,7 @@ static void print_pajeDefineVariableType(paje_event_t event)
       ((defineVariableType_t)event->data)->type->color);
 }
 
-static void print_pajeDefineStateType(paje_event_t event)
+void print_pajeDefineStateType(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
   fprintf(tracing_file, "%d %s %s %s\n",
@@ -296,7 +105,7 @@ static void print_pajeDefineStateType(paje_event_t event)
       ((defineStateType_t)event->data)->type->name);
 }
 
-static void print_pajeDefineEventType(paje_event_t event)
+void print_pajeDefineEventType(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
   fprintf(tracing_file, "%d %s %s %s\n",
@@ -306,7 +115,7 @@ static void print_pajeDefineEventType(paje_event_t event)
       ((defineEventType_t)event->data)->type->name);
 }
 
-static void print_pajeDefineLinkType(paje_event_t event)
+void print_pajeDefineLinkType(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
   fprintf(tracing_file, "%d %s %s %s %s %s\n",
@@ -318,7 +127,7 @@ static void print_pajeDefineLinkType(paje_event_t event)
       ((defineLinkType_t)event->data)->type->name);
 }
 
-static void print_pajeDefineEntityValue (paje_event_t event)
+void print_pajeDefineEntityValue (paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
   fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
@@ -329,7 +138,7 @@ static void print_pajeDefineEntityValue (paje_event_t event)
       ((defineEntityValue_t)event->data)->value->color);
 }
 
-static void print_pajeCreateContainer(paje_event_t event)
+void print_pajeCreateContainer(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -350,7 +159,7 @@ static void print_pajeCreateContainer(paje_event_t event)
   }
 }
 
-static void print_pajeDestroyContainer(paje_event_t event)
+void print_pajeDestroyContainer(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -367,7 +176,7 @@ static void print_pajeDestroyContainer(paje_event_t event)
   }
 }
 
-static void print_pajeSetVariable(paje_event_t event)
+void print_pajeSetVariable(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -386,7 +195,7 @@ static void print_pajeSetVariable(paje_event_t event)
   }
 }
 
-static void print_pajeAddVariable(paje_event_t event)
+void print_pajeAddVariable(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -405,7 +214,7 @@ static void print_pajeAddVariable(paje_event_t event)
   }
 }
 
-static void print_pajeSubVariable(paje_event_t event)
+void print_pajeSubVariable(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -424,7 +233,7 @@ static void print_pajeSubVariable(paje_event_t event)
   }
 }
 
-static void print_pajeSetState(paje_event_t event)
+void print_pajeSetState(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -443,7 +252,7 @@ static void print_pajeSetState(paje_event_t event)
   }
 }
 
-static void print_pajePushState(paje_event_t event)
+void print_pajePushState(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (!TRACE_display_sizes()){
@@ -463,26 +272,44 @@ static void print_pajePushState(paje_event_t event)
     }
   }else{
     if (event->timestamp == 0){
-      fprintf(tracing_file, "%d 0 %s %s %s %d\n",
+      fprintf(tracing_file, "%d 0 %s %s %s ",
           (int)event->event_type,
           ((pushState_t)event->data)->type->id,
           ((pushState_t)event->data)->container->id,
-          ((pushState_t)event->data)->value->id,
-          ((pushState_t)event->data)->size);
+          ((pushState_t)event->data)->value->id);
+      if(((pushState_t)event->data)->extra !=NULL){
+        fprintf(tracing_file, "%d ", ((instr_extra_data)((pushState_t)event->data)->extra)->send_size);
+      }else{
+        fprintf(tracing_file, "0 ");
+      }
+      fprintf(tracing_file, "\n");
+
     }else{
-      fprintf(tracing_file, "%d %f %s %s %s %d\n",
+      fprintf(tracing_file, "%d %f %s %s %s ",
           (int)event->event_type,
           event->timestamp,
           ((pushState_t)event->data)->type->id,
           ((pushState_t)event->data)->container->id,
-          ((pushState_t)event->data)->value->id,
-          ((pushState_t)event->data)->size);
-    }
+          ((pushState_t)event->data)->value->id);
+      if(((pushState_t)event->data)->extra !=NULL){
+        fprintf(tracing_file, "%d ", ((instr_extra_data)((pushState_t)event->data)->extra)->send_size);
+      }else{
+        fprintf(tracing_file, "0 ");
+      }
+      fprintf(tracing_file, "\n");
 
+    }
   }
+   if(((pushState_t)event->data)->extra!=NULL){
+     if(((instr_extra_data)((pushState_t)event->data)->extra)->sendcounts!=NULL)
+       xbt_free(((instr_extra_data)((pushState_t)event->data)->extra)->sendcounts);
+     if(((instr_extra_data)((pushState_t)event->data)->extra)->recvcounts!=NULL)
+       xbt_free(((instr_extra_data)((pushState_t)event->data)->extra)->recvcounts);
+     xbt_free(((pushState_t)event->data)->extra);
+   }
 }
 
-static void print_pajePopState(paje_event_t event)
+void print_pajePopState(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -499,7 +326,7 @@ static void print_pajePopState(paje_event_t event)
   }
 }
 
-static void print_pajeResetState(paje_event_t event)
+void print_pajeResetState(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -516,7 +343,7 @@ static void print_pajeResetState(paje_event_t event)
   }
 }
 
-static void print_pajeStartLink(paje_event_t event)
+void print_pajeStartLink(paje_event_t event)
 {
   if (!TRACE_display_sizes()){
     if (event->timestamp == 0){
@@ -562,7 +389,7 @@ static void print_pajeStartLink(paje_event_t event)
   }
 }
 
-static void print_pajeEndLink(paje_event_t event)
+void print_pajeEndLink(paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -585,7 +412,7 @@ static void print_pajeEndLink(paje_event_t event)
   }
 }
 
-static void print_pajeNewEvent (paje_event_t event)
+void print_pajeNewEvent (paje_event_t event)
 {
   XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
   if (event->timestamp == 0){
@@ -603,377 +430,3 @@ static void print_pajeNewEvent (paje_event_t event)
         ((newEvent_t)event->data)->value->id);
   }
 }
-
-static void free_paje_event (paje_event_t event)
-{
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-  switch (event->event_type){
-  case PAJE_StartLink:
-    xbt_free (((startLink_t)(event->data))->value);
-    xbt_free (((startLink_t)(event->data))->key);
-    break;
-  case PAJE_EndLink:
-    xbt_free (((endLink_t)(event->data))->value);
-    xbt_free (((endLink_t)(event->data))->key);
-    break;
-  default:
-    break;
-  }
-  xbt_free (event->data);
-  xbt_free (event);
-}
-
-void new_pajeDefineContainerType(type_t type)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_DefineContainerType;
-  event->timestamp = 0;
-  event->print = print_pajeDefineContainerType;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_defineContainerType_t, 1);
-  ((defineContainerType_t)(event->data))->type = type;
-
-  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
-  //print it
-  event->print (event);
-  event->free (event);
-}
-
-void new_pajeDefineVariableType(type_t type)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_DefineVariableType;
-  event->timestamp = 0;
-  event->print = print_pajeDefineVariableType;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_defineVariableType_t, 1);
-  ((defineVariableType_t)(event->data))->type = type;
-
-  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
-  //print it
-  event->print (event);
-  event->free (event);
-}
-
-void new_pajeDefineStateType(type_t type)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_DefineStateType;
-  event->timestamp = 0;
-  event->print = print_pajeDefineStateType;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_defineStateType_t, 1);
-  ((defineStateType_t)(event->data))->type = type;
-
-  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
-  //print it
-  event->print (event);
-  event->free (event);
-}
-
-void new_pajeDefineEventType(type_t type)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_DefineEventType;
-  event->timestamp = 0;
-  event->print = print_pajeDefineEventType;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_defineEventType_t, 1);
-  ((defineEventType_t)(event->data))->type = type;
-
-  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
-  //print it
-  event->print (event);
-  event->free (event);
-}
-
-void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_DefineLinkType;
-  event->timestamp = 0;
-  event->print = print_pajeDefineLinkType;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_defineLinkType_t, 1);
-  ((defineLinkType_t)(event->data))->type = type;
-  ((defineLinkType_t)(event->data))->source = source;
-  ((defineLinkType_t)(event->data))->dest = dest;
-
-  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
-  //print it
-  event->print (event);
-  event->free (event);
-}
-
-void new_pajeDefineEntityValue (val_t value)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_DefineEntityValue;
-  event->timestamp = 0;
-  event->print = print_pajeDefineEntityValue;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_defineEntityValue_t, 1);
-  ((defineEntityValue_t)(event->data))->value = value;
-
-  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
-  //print it
-  event->print (event);
-  event->free (event);
-}
-
-void new_pajeCreateContainer (container_t container)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_CreateContainer;
-  event->timestamp = SIMIX_get_clock();
-  event->print = print_pajeCreateContainer;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_createContainer_t, 1);
-  ((createContainer_t)(event->data))->container = container;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  //print it
-  event->print (event);
-  event->free (event);
-}
-
-void new_pajeDestroyContainer (container_t container)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_DestroyContainer;
-  event->timestamp = SIMIX_get_clock();
-  event->print = print_pajeDestroyContainer;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_destroyContainer_t, 1);
-  ((destroyContainer_t)(event->data))->container = container;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  //print it
-  event->print (event);
-  event->free (event);
-}
-
-void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_SetVariable;
-  event->timestamp = timestamp;
-  event->print = print_pajeSetVariable;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_setVariable_t, 1);
-  ((setVariable_t)(event->data))->type = type;
-  ((setVariable_t)(event->data))->container = container;
-  ((setVariable_t)(event->data))->value = value;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-
-void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_AddVariable;
-  event->timestamp = timestamp;
-  event->print = print_pajeAddVariable;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_addVariable_t, 1);
-  ((addVariable_t)(event->data))->type = type;
-  ((addVariable_t)(event->data))->container = container;
-  ((addVariable_t)(event->data))->value = value;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_SubVariable;
-  event->timestamp = timestamp;
-  event->print = print_pajeSubVariable;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_subVariable_t, 1);
-  ((subVariable_t)(event->data))->type = type;
-  ((subVariable_t)(event->data))->container = container;
-  ((subVariable_t)(event->data))->value = value;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_SetState;
-  event->timestamp = timestamp;
-  event->print = print_pajeSetState;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_setState_t, 1);
-  ((setState_t)(event->data))->type = type;
-  ((setState_t)(event->data))->container = container;
-  ((setState_t)(event->data))->value = value;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-
-void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_PushState;
-  event->timestamp = timestamp;
-  event->print = print_pajePushState;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_pushState_t, 1);
-  ((pushState_t)(event->data))->type = type;
-  ((pushState_t)(event->data))->container = container;
-  ((pushState_t)(event->data))->value = value;
-  ((pushState_t)(event->data))->size = -1;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-void new_pajePushStateWithSize (double timestamp, container_t container, type_t type, val_t value, int size)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_PushState;
-  event->timestamp = timestamp;
-  event->print = print_pajePushState;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_pushState_t, 1);
-  ((pushState_t)(event->data))->type = type;
-  ((pushState_t)(event->data))->container = container;
-  ((pushState_t)(event->data))->value = value;
-  ((pushState_t)(event->data))->size = size;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-
-void new_pajePopState (double timestamp, container_t container, type_t type)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_PopState;
-  event->timestamp = timestamp;
-  event->print = print_pajePopState;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_popState_t, 1);
-  ((popState_t)(event->data))->type = type;
-  ((popState_t)(event->data))->container = container;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-
-void new_pajeResetState (double timestamp, container_t container, type_t type)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_ResetState;
-  event->timestamp = timestamp;
-  event->print = print_pajeResetState;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_resetState_t, 1);
-  ((resetState_t)(event->data))->type = type;
-  ((resetState_t)(event->data))->container = container;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_StartLink;
-  event->timestamp = timestamp;
-  event->print = print_pajeStartLink;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_startLink_t, 1);
-  ((startLink_t)(event->data))->type = type;
-  ((startLink_t)(event->data))->container = container;
-  ((startLink_t)(event->data))->sourceContainer = sourceContainer;
-  ((startLink_t)(event->data))->value = xbt_strdup(value);
-  ((startLink_t)(event->data))->key = xbt_strdup(key);
-  ((startLink_t)(event->data))->size = -1;
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-void new_pajeStartLinkWithSize (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key, int size)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_StartLink;
-  event->timestamp = timestamp;
-  event->print = print_pajeStartLink;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_startLink_t, 1);
-  ((startLink_t)(event->data))->type = type;
-  ((startLink_t)(event->data))->container = container;
-  ((startLink_t)(event->data))->sourceContainer = sourceContainer;
-  ((startLink_t)(event->data))->value = xbt_strdup(value);
-  ((startLink_t)(event->data))->key = xbt_strdup(key);
-  ((startLink_t)(event->data))->size = size;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_EndLink;
-  event->timestamp = timestamp;
-  event->print = print_pajeEndLink;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_endLink_t, 1);
-  ((endLink_t)(event->data))->type = type;
-  ((endLink_t)(event->data))->container = container;
-  ((endLink_t)(event->data))->destContainer = destContainer;
-  ((endLink_t)(event->data))->value = xbt_strdup(value);
-  ((endLink_t)(event->data))->key = xbt_strdup(key);
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
-{
-  paje_event_t event = xbt_new0(s_paje_event_t, 1);
-  event->event_type = PAJE_NewEvent;
-  event->timestamp = timestamp;
-  event->print = print_pajeNewEvent;
-  event->free = free_paje_event;
-  event->data = xbt_new0(s_newEvent_t, 1);
-  ((newEvent_t)(event->data))->type = type;
-  ((newEvent_t)(event->data))->container = container;
-  ((newEvent_t)(event->data))->value = value;
-
-  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
-  insert_into_buffer (event);
-}
-
-#endif /* HAVE_TRACING */
index 21baa8f..2c0fc4b 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "instr/instr.h"
 #include "instr/instr_interface.h"
+#include "internal_config.h"
 #include "simgrid_config.h"
 
 #ifdef HAVE_TRACING
@@ -95,6 +96,133 @@ typedef struct s_container {
   xbt_dict_t children;
 }s_container_t;
 
+typedef struct paje_event *paje_event_t;
+typedef struct paje_event {
+  double timestamp;
+  e_event_type event_type;
+  void (*print) (paje_event_t event);
+  void (*free) (paje_event_t event);
+  void *data;
+} s_paje_event_t;
+
+typedef struct s_defineContainerType *defineContainerType_t;
+typedef struct s_defineContainerType {
+  type_t type;
+}s_defineContainerType_t;
+
+typedef struct s_defineVariableType *defineVariableType_t;
+typedef struct s_defineVariableType {
+  type_t type;
+}s_defineVariableType_t;
+
+typedef struct s_defineStateType *defineStateType_t;
+typedef struct s_defineStateType {
+  type_t type;
+}s_defineStateType_t;
+
+typedef struct s_defineEventType *defineEventType_t;
+typedef struct s_defineEventType {
+  type_t type;
+}s_defineEventType_t;
+
+typedef struct s_defineLinkType *defineLinkType_t;
+typedef struct s_defineLinkType {
+  type_t type;
+  type_t source;
+  type_t dest;
+}s_defineLinkType_t;
+
+typedef struct s_defineEntityValue *defineEntityValue_t;
+typedef struct s_defineEntityValue {
+  val_t value;
+}s_defineEntityValue_t;
+
+typedef struct s_createContainer *createContainer_t;
+typedef struct s_createContainer {
+  container_t container;
+}s_createContainer_t;
+
+typedef struct s_destroyContainer *destroyContainer_t;
+typedef struct s_destroyContainer {
+  container_t container;
+}s_destroyContainer_t;
+
+typedef struct s_setVariable *setVariable_t;
+typedef struct s_setVariable {
+  container_t container;
+  type_t type;
+  double value;
+}s_setVariable_t;
+
+typedef struct s_addVariable *addVariable_t;
+typedef struct s_addVariable {
+  container_t container;
+  type_t type;
+  double value;
+}s_addVariable_t;
+
+typedef struct s_subVariable *subVariable_t;
+typedef struct s_subVariable {
+  container_t container;
+  type_t type;
+  double value;
+}s_subVariable_t;
+
+typedef struct s_setState *setState_t;
+typedef struct s_setState {
+  container_t container;
+  type_t type;
+  val_t value;
+}s_setState_t;
+
+typedef struct s_pushState *pushState_t;
+typedef struct s_pushState {
+  container_t container;
+  type_t type;
+  val_t value;
+  int size;
+  void* extra;
+}s_pushState_t;
+
+typedef struct s_popState *popState_t;
+typedef struct s_popState {
+  container_t container;
+  type_t type;
+  xbt_dynar_t extra;
+}s_popState_t;
+
+typedef struct s_resetState *resetState_t;
+typedef struct s_resetState {
+  container_t container;
+  type_t type;
+}s_resetState_t;
+
+typedef struct s_startLink *startLink_t;
+typedef struct s_startLink {
+  container_t container;
+  type_t type;
+  container_t sourceContainer;
+  char *value;
+  char *key;
+  int size;
+}s_startLink_t;
+
+typedef struct s_endLink *endLink_t;
+typedef struct s_endLink {
+  container_t container;
+  type_t type;
+  container_t destContainer;
+  char *value;
+  char *key;
+}s_endLink_t;
+
+typedef struct s_newEvent *newEvent_t;
+typedef struct s_newEvent {
+  container_t container;
+  type_t type;
+  val_t value;
+}s_newEvent_t;
+
 extern xbt_dict_t created_categories;
 extern xbt_dict_t declared_marks;
 extern xbt_dict_t user_host_variables;
@@ -106,6 +234,9 @@ extern double TRACE_last_timestamp_to_dump;
 void TRACE_header(int basic, int size);
 
 /* from paje.c */
+void TRACE_init(void);
+void TRACE_finalize(void);
+void TRACE_paje_init(void);
 void TRACE_paje_start(void);
 void TRACE_paje_end(void);
 void TRACE_paje_dump_buffer (int force);
@@ -122,7 +253,7 @@ XBT_PUBLIC(void) new_pajeAddVariable (double timestamp, container_t container, t
 XBT_PUBLIC(void) new_pajeSubVariable (double timestamp, container_t container, type_t type, double value);
 XBT_PUBLIC(void) new_pajeSetState (double timestamp, container_t container, type_t type, val_t value);
 XBT_PUBLIC(void) new_pajePushState (double timestamp, container_t container, type_t type, val_t value);
-XBT_PUBLIC(void) new_pajePushStateWithSize (double timestamp, container_t container, type_t type, val_t value, int size);
+XBT_PUBLIC(void) new_pajePushStateWithExtra (double timestamp, container_t container, type_t type, val_t value, void* extra);
 XBT_PUBLIC(void) new_pajePopState (double timestamp, container_t container, type_t type);
 XBT_PUBLIC(void) new_pajeResetState (double timestamp, container_t container, type_t type);
 XBT_PUBLIC(void) new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key);
@@ -214,10 +345,128 @@ XBT_PUBLIC(val_t)  PJ_value_get_or_new (const char *name, const char *color, typ
 XBT_PUBLIC(val_t)  PJ_value_get (const char *name, const type_t father);
 void PJ_value_free (val_t value);
 
+
+void print_pajeDefineContainerType(paje_event_t event);
+void print_pajeDefineVariableType(paje_event_t event);
+void print_pajeDefineStateType(paje_event_t event);
+void print_pajeDefineEventType(paje_event_t event);
+void print_pajeDefineLinkType(paje_event_t event);
+void print_pajeDefineEntityValue (paje_event_t event);
+void print_pajeCreateContainer(paje_event_t event);
+void print_pajeDestroyContainer(paje_event_t event);
+void print_pajeSetVariable(paje_event_t event);
+void print_pajeAddVariable(paje_event_t event);
+void print_pajeSubVariable(paje_event_t event);
+void print_pajeSetState(paje_event_t event);
+void print_pajePushState(paje_event_t event);
+void print_pajePopState(paje_event_t event);
+void print_pajeResetState(paje_event_t event);
+void print_pajeStartLink(paje_event_t event);
+void print_pajeEndLink(paje_event_t event);
+void print_pajeNewEvent (paje_event_t event);
+
+void print_TIPushState(paje_event_t event);
+void print_TICreateContainer(paje_event_t event);
+void print_TIDestroyContainer(paje_event_t event);
+void TRACE_TI_start(void);
+void TRACE_TI_end(void);
+void TRACE_TI_init(void);
+
+void print_NULL (paje_event_t event);
+void TRACE_paje_dump_buffer (int force);
+void dump_comment_file (const char *filename);
+void dump_comment (const char *comment);
+
+
+
+
+typedef struct instr_trace_writer {
+  void (*print_DefineContainerType) (paje_event_t event);
+  void (*print_DefineVariableType)(paje_event_t event);
+  void (*print_DefineStateType)(paje_event_t event);
+  void (*print_DefineEventType)(paje_event_t event);
+  void (*print_DefineLinkType)(paje_event_t event);
+  void (*print_DefineEntityValue)(paje_event_t event);
+  void (*print_CreateContainer)(paje_event_t event);
+  void (*print_DestroyContainer)(paje_event_t event);
+  void (*print_SetVariable)(paje_event_t event);
+  void (*print_AddVariable)(paje_event_t event);
+  void (*print_SubVariable)(paje_event_t event);
+  void (*print_SetState)(paje_event_t event);
+  void (*print_PushState)(paje_event_t event);
+  void (*print_PopState)(paje_event_t event);
+  void (*print_ResetState)(paje_event_t event);
+  void (*print_StartLink)(paje_event_t event);
+  void (*print_EndLink)(paje_event_t event);
+  void (*print_NewEvent) (paje_event_t event);
+} s_instr_trace_writer_t;
+
+
+
+struct s_instr_extra_data;
+typedef struct s_instr_extra_data *instr_extra_data;
+
+
+typedef enum{
+  TRACING_INIT,
+  TRACING_FINALIZE,
+  TRACING_COMM_SIZE,
+  TRACING_COMM_SPLIT,
+  TRACING_COMM_DUP,
+  TRACING_SEND,
+  TRACING_ISEND,
+  TRACING_SSEND,
+  TRACING_ISSEND,
+  TRACING_RECV,
+  TRACING_IRECV,
+  TRACING_SENDRECV,
+  TRACING_WAIT,
+  TRACING_WAITALL,
+  TRACING_WAITANY,
+  TRACING_BARRIER,
+  TRACING_BCAST,
+  TRACING_REDUCE,
+  TRACING_ALLREDUCE,
+  TRACING_ALLTOALL,
+  TRACING_ALLTOALLV,
+  TRACING_GATHER,
+  TRACING_GATHERV,
+  TRACING_SCATTER,
+  TRACING_SCATTERV,
+  TRACING_ALLGATHER,
+  TRACING_ALLGATHERV,
+  TRACING_REDUCE_SCATTER,
+  TRACING_COMPUTING,
+  TRACING_SCAN,
+  TRACING_EXSCAN
+} e_caller_type ;
+
+
+
+typedef struct s_instr_extra_data {
+  e_caller_type type;
+  int send_size;
+  int recv_size;
+  double comp_size;
+  int src;
+  int dst;
+  int root;
+  const char* datatype1;
+  const char* datatype2;
+  int * sendcounts;
+  int * recvcounts;
+  int num_processes;
+} s_instr_extra_data_t;
+
 #endif /* HAVE_TRACING */
 
 #ifdef HAVE_JEDULE
 #include "instr/jedule/jedule_sd_binding.h"
 #endif
 
+
+
+
+
+
 #endif /* INSTR_PRIVATE_H_ */
diff --git a/src/instr/instr_trace.c b/src/instr/instr_trace.c
new file mode 100644 (file)
index 0000000..005ec35
--- /dev/null
@@ -0,0 +1,498 @@
+/* Copyright (c) 2010-2013. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+  * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "instr/instr_private.h"
+#include "xbt/virtu.h" /* sg_cmdline */
+
+#ifdef HAVE_TRACING
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_trace, instr, "tracing event system");
+
+
+FILE *tracing_file = NULL;
+
+void print_NULL(paje_event_t event){}
+
+/* The active set of functions for the selected trace format
+ * By default, they all do nothing, hence the print_NULL to avoid segfaults */
+
+s_instr_trace_writer_t active_writer = {
+    print_NULL, print_NULL, print_NULL, print_NULL,
+    print_NULL, print_NULL, print_NULL, print_NULL,
+    print_NULL, print_NULL, print_NULL, print_NULL,
+    print_NULL, print_NULL, print_NULL, print_NULL,
+    print_NULL, print_NULL
+};
+
+xbt_dynar_t buffer = NULL;
+
+void dump_comment (const char *comment)
+{
+  if (!strlen(comment)) return;
+  fprintf (tracing_file, "# %s\n", comment);
+}
+
+void dump_comment_file (const char *filename)
+{
+  if (!strlen(filename)) return;
+  FILE *file = fopen (filename, "r");
+  if (!file){
+    THROWF (system_error, 1, "Comment file %s could not be opened for reading.", filename);
+  }
+  while (!feof(file)){
+    char c;
+    c = fgetc(file);
+    if (feof(file)) break;
+    fprintf (tracing_file, "# ");
+    while (c != '\n'){
+      fprintf (tracing_file, "%c", c);
+      c = fgetc(file);
+      if (feof(file)) break;
+    }
+    fprintf (tracing_file, "\n");
+  }
+  fclose(file);
+}
+
+void TRACE_init()
+{
+  buffer = xbt_dynar_new(sizeof(paje_event_t), NULL);
+}
+
+void TRACE_finalize()
+{
+  xbt_dynar_free(&buffer);
+}
+
+double TRACE_last_timestamp_to_dump = 0;
+//dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
+void TRACE_paje_dump_buffer (int force)
+{
+  if (!TRACE_is_enabled()) return;
+  XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
+  if (force){
+    paje_event_t event;
+    unsigned int i;
+    xbt_dynar_foreach(buffer, i, event){
+      event->print (event);
+      event->free (event);
+    }
+    xbt_dynar_free (&buffer);
+    buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
+  }else{
+    paje_event_t event;
+    unsigned int cursor;
+    xbt_dynar_foreach(buffer, cursor, event) {
+      double head_timestamp = event->timestamp;
+      if (head_timestamp > TRACE_last_timestamp_to_dump){
+        break;
+      }
+      event->print (event);
+      event->free (event);
+    }
+    xbt_dynar_remove_n_at(buffer, cursor, 0);
+  }
+  XBT_DEBUG("%s: ends", __FUNCTION__);
+}
+
+/* internal do the instrumentation module */
+static void insert_into_buffer (paje_event_t tbi)
+{
+  if (TRACE_buffer() == 0){
+    tbi->print (tbi);
+    tbi->free (tbi);
+    return;
+  }
+
+  XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
+      __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
+
+  unsigned int i;
+  for (i = xbt_dynar_length(buffer); i > 0; i--) {
+    paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
+    if (e1->timestamp <= tbi->timestamp)
+      break;
+  }
+  xbt_dynar_insert_at(buffer, i, &tbi);
+  if (i == 0)
+    XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
+  else
+    XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
+              (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
+}
+
+
+static void free_paje_event (paje_event_t event)
+{
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+  switch (event->event_type){
+  case PAJE_StartLink:
+    xbt_free (((startLink_t)(event->data))->value);
+    xbt_free (((startLink_t)(event->data))->key);
+    break;
+  case PAJE_EndLink:
+    xbt_free (((endLink_t)(event->data))->value);
+    xbt_free (((endLink_t)(event->data))->key);
+    break;
+  default:
+    break;
+  }
+  xbt_free (event->data);
+  xbt_free (event);
+}
+
+void new_pajeDefineContainerType(type_t type)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_DefineContainerType;
+  event->timestamp = 0;
+  event->print = active_writer.print_DefineContainerType;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_defineContainerType_t, 1);
+  ((defineContainerType_t)(event->data))->type = type;
+
+  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+  //print it
+  event->print (event);
+  event->free (event);
+}
+
+void new_pajeDefineVariableType(type_t type)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_DefineVariableType;
+  event->timestamp = 0;
+  event->print = active_writer.print_DefineVariableType;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_defineVariableType_t, 1);
+  ((defineVariableType_t)(event->data))->type = type;
+
+  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+  //print it
+  event->print (event);
+  event->free (event);
+}
+
+void new_pajeDefineStateType(type_t type)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_DefineStateType;
+  event->timestamp = 0;
+  event->print = active_writer.print_DefineStateType;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_defineStateType_t, 1);
+  ((defineStateType_t)(event->data))->type = type;
+
+  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+  //print it
+  event->print (event);
+  event->free (event);
+}
+
+void new_pajeDefineEventType(type_t type)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_DefineEventType;
+  event->timestamp = 0;
+  event->print = active_writer.print_DefineEventType;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_defineEventType_t, 1);
+  ((defineEventType_t)(event->data))->type = type;
+
+  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+  //print it
+  event->print (event);
+  event->free (event);
+}
+
+void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_DefineLinkType;
+  event->timestamp = 0;
+  event->print = active_writer.print_DefineLinkType;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_defineLinkType_t, 1);
+  ((defineLinkType_t)(event->data))->type = type;
+  ((defineLinkType_t)(event->data))->source = source;
+  ((defineLinkType_t)(event->data))->dest = dest;
+
+  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+  //print it
+  event->print (event);
+  event->free (event);
+}
+
+void new_pajeDefineEntityValue (val_t value)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_DefineEntityValue;
+  event->timestamp = 0;
+  event->print = active_writer.print_DefineEntityValue;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_defineEntityValue_t, 1);
+  ((defineEntityValue_t)(event->data))->value = value;
+
+  XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+  //print it
+  event->print (event);
+  event->free (event);
+}
+
+void new_pajeCreateContainer (container_t container)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_CreateContainer;
+  event->timestamp = SIMIX_get_clock();
+  event->print = active_writer.print_CreateContainer;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_createContainer_t, 1);
+  ((createContainer_t)(event->data))->container = container;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  //print it
+  event->print (event);
+  event->free (event);
+}
+
+void new_pajeDestroyContainer (container_t container)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_DestroyContainer;
+  event->timestamp = SIMIX_get_clock();
+  event->print = active_writer.print_DestroyContainer;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_destroyContainer_t, 1);
+  ((destroyContainer_t)(event->data))->container = container;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  //print it
+  event->print (event);
+  event->free (event);
+}
+
+void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_SetVariable;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_SetVariable;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_setVariable_t, 1);
+  ((setVariable_t)(event->data))->type = type;
+  ((setVariable_t)(event->data))->container = container;
+  ((setVariable_t)(event->data))->value = value;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+
+void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_AddVariable;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_AddVariable;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_addVariable_t, 1);
+  ((addVariable_t)(event->data))->type = type;
+  ((addVariable_t)(event->data))->container = container;
+  ((addVariable_t)(event->data))->value = value;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_SubVariable;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_SubVariable;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_subVariable_t, 1);
+  ((subVariable_t)(event->data))->type = type;
+  ((subVariable_t)(event->data))->container = container;
+  ((subVariable_t)(event->data))->value = value;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_SetState;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_SetState;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_setState_t, 1);
+  ((setState_t)(event->data))->type = type;
+  ((setState_t)(event->data))->container = container;
+  ((setState_t)(event->data))->value = value;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+
+void new_pajePushStateWithExtra (double timestamp, container_t container, type_t type, val_t value, void* extra)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_PushState;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_PushState;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_pushState_t, 1);
+  ((pushState_t)(event->data))->type = type;
+  ((pushState_t)(event->data))->container = container;
+  ((pushState_t)(event->data))->value = value;
+  ((pushState_t)(event->data))->extra = extra;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+
+void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_PushState;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_PushState;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_pushState_t, 1);
+  ((pushState_t)(event->data))->type = type;
+  ((pushState_t)(event->data))->container = container;
+  ((pushState_t)(event->data))->value = value;
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajePopState (double timestamp, container_t container, type_t type)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_PopState;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_PopState;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_popState_t, 1);
+  ((popState_t)(event->data))->type = type;
+  ((popState_t)(event->data))->container = container;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+
+void new_pajeResetState (double timestamp, container_t container, type_t type)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_ResetState;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_ResetState;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_resetState_t, 1);
+  ((resetState_t)(event->data))->type = type;
+  ((resetState_t)(event->data))->container = container;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_StartLink;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_StartLink;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_startLink_t, 1);
+  ((startLink_t)(event->data))->type = type;
+  ((startLink_t)(event->data))->container = container;
+  ((startLink_t)(event->data))->sourceContainer = sourceContainer;
+  ((startLink_t)(event->data))->value = xbt_strdup(value);
+  ((startLink_t)(event->data))->key = xbt_strdup(key);
+  ((startLink_t)(event->data))->size = -1;
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajeStartLinkWithSize (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key, int size)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_StartLink;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_StartLink;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_startLink_t, 1);
+  ((startLink_t)(event->data))->type = type;
+  ((startLink_t)(event->data))->container = container;
+  ((startLink_t)(event->data))->sourceContainer = sourceContainer;
+  ((startLink_t)(event->data))->value = xbt_strdup(value);
+  ((startLink_t)(event->data))->key = xbt_strdup(key);
+  ((startLink_t)(event->data))->size = size;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_EndLink;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_EndLink;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_endLink_t, 1);
+  ((endLink_t)(event->data))->type = type;
+  ((endLink_t)(event->data))->container = container;
+  ((endLink_t)(event->data))->destContainer = destContainer;
+  ((endLink_t)(event->data))->value = xbt_strdup(value);
+  ((endLink_t)(event->data))->key = xbt_strdup(key);
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
+{
+  paje_event_t event = xbt_new0(s_paje_event_t, 1);
+  event->event_type = PAJE_NewEvent;
+  event->timestamp = timestamp;
+  event->print = active_writer.print_NewEvent;
+  event->free = free_paje_event;
+  event->data = xbt_new0(s_newEvent_t, 1);
+  ((newEvent_t)(event->data))->type = type;
+  ((newEvent_t)(event->data))->container = container;
+  ((newEvent_t)(event->data))->value = value;
+
+  XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+  insert_into_buffer (event);
+}
+
+#endif /* HAVE_TRACING */
index 2b2fe9d..fb323a4 100644 (file)
@@ -4,26 +4,25 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#include <libgen.h>
+#define _GNU_SOURCE
+#include <string.h>
+#include <link.h>
 #include "mc_private.h"
 #include "xbt/module.h"
 
 #include "../simix/smx_private.h"
 
 #include <libunwind.h>
+#include <libelf.h>
+
+#include "mc_private.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_checkpoint, mc,
                                 "Logging specific to mc_checkpoint");
 
-void *start_text_libsimgrid;
-void *start_plt_libsimgrid, *end_plt_libsimgrid;
-void *start_got_plt_libsimgrid, *end_got_plt_libsimgrid;
-void *start_plt_binary, *end_plt_binary;
-void *start_got_plt_binary, *end_got_plt_binary;
 char *libsimgrid_path;
-void *start_data_libsimgrid, *start_bss_libsimgrid;
-void *start_data_binary, *start_bss_binary;
-void *start_text_binary;
+
+static void MC_find_object_address(memory_map_t maps, mc_object_info_t result);
 
 /************************************  Free functions **************************************/
 /*****************************************************************************************/
@@ -177,7 +176,7 @@ static void MC_get_memory_regions(mc_snapshot_t snapshot){
               }
               tok = strtok(lfields[0], "-");
               start_addr1 = (void *)strtoul(tok, NULL, 16);
-              if(lfields[1][1] == 'w' && lfields[5] == NULL){
+              if(lfields[1][1] == 'w'){
                 if(start_addr1 == std_heap){     /* Std_heap ? */
                   tok = strtok(NULL, "-");
                   end_addr = (void *)strtoul(tok, NULL, 16);
@@ -206,179 +205,73 @@ static void MC_get_memory_regions(mc_snapshot_t snapshot){
 
 }
 
+/** @brief Finds the range of the different memory segments and binary paths */
 void MC_init_memory_map_info(){
  
   unsigned int i = 0;
   s_map_region_t reg;
   memory_map_t maps = MC_get_memory_map();
 
+  maestro_stack_start = NULL;
+  maestro_stack_end = NULL;
+  libsimgrid_path = NULL;
+
   while (i < maps->mapsize) {
     reg = maps->regions[i];
-    if ((reg.prot & PROT_WRITE)){
-      if (maps->regions[i].pathname != NULL){
-        if (!memcmp(basename(maps->regions[i].pathname), "libsimgrid", 10)){
-          start_data_libsimgrid = reg.start_addr;
-          i++;
-          reg = maps->regions[i];
-          if(reg.pathname == NULL && (reg.prot & PROT_WRITE) && i < maps->mapsize)
-            start_bss_libsimgrid = reg.start_addr;
-        }else if (!memcmp(basename(maps->regions[i].pathname), basename(xbt_binary_name), strlen(basename(xbt_binary_name)))){
-          start_data_binary = reg.start_addr;
-          i++;
-          reg = maps->regions[i];
-          if(reg.pathname == NULL && (reg.prot & PROT_WRITE) && reg.start_addr != std_heap && reg.start_addr != raw_heap && i < maps->mapsize){
-            start_bss_binary = reg.start_addr;
-            i++;
-          }
-        }else if(!memcmp(maps->regions[i].pathname, "[stack]", 7)){
+    if (maps->regions[i].pathname == NULL) {
+      // Nothing to do
+    }
+    else if ((reg.prot & PROT_WRITE) && !memcmp(maps->regions[i].pathname, "[stack]", 7)){
           maestro_stack_start = reg.start_addr;
           maestro_stack_end = reg.end_addr;
-          i++;
-        }
-      }
-    }else if ((reg.prot & PROT_READ) && (reg.prot & PROT_EXEC)){
-      if (maps->regions[i].pathname != NULL){
-        if (!memcmp(basename(maps->regions[i].pathname), "libsimgrid", 10)){
-          start_text_libsimgrid = reg.start_addr;
+    } else if ((reg.prot & PROT_READ) && (reg.prot & PROT_EXEC) && !memcmp(basename(maps->regions[i].pathname), "libsimgrid", 10)){
+      if(libsimgrid_path == NULL)
           libsimgrid_path = strdup(maps->regions[i].pathname);
-        }else if (!memcmp(basename(maps->regions[i].pathname), basename(xbt_binary_name), strlen(basename(xbt_binary_name)))){
-          start_text_binary = reg.start_addr;
-        }
-      }
     }
     i++;
   }
-   
-  MC_free_memory_map(maps);
-
-}
-
-void MC_get_libsimgrid_plt_section(){
-
-  FILE *fp;
-  char *line = NULL;            /* Temporal storage for each line that is readed */
-  ssize_t read;                 /* Number of bytes readed */
-  size_t n = 0;                 /* Amount of bytes to read by xbt_getline */
-
-  char *lfields[7];
-  int i, plt_found = 0;
-  unsigned long int size, offset;
-
-  char *command = bprintf("objdump --section-headers %s", libsimgrid_path);
 
-  fp = popen(command, "r");
-
-  if(fp == NULL){
-    perror("popen failed");
-    xbt_abort();
-  }
-
-  while ((read = xbt_getline(&line, &n, fp)) != -1 && plt_found != 2) {
-
-    if(n == 0)
-      continue;
-
-    /* Wipeout the new line character */
-    line[read - 1] = '\0';
-
-    lfields[0] = strtok(line, " ");
-
-    if(lfields[0] == NULL)
-      continue;
-
-    if(strcmp(lfields[0], "Sections:") == 0 || strcmp(lfields[0], "Idx") == 0 || strncmp(lfields[0], libsimgrid_path, strlen(libsimgrid_path)) == 0)
-      continue;
-
-    for (i = 1; i < 7 && lfields[i - 1] != NULL; i++) {
-      lfields[i] = strtok(NULL, " ");
-    }
-
-    if(i>=6){
-      if(strcmp(lfields[1], ".plt") == 0){
-        size = strtoul(lfields[2], NULL, 16);
-        offset = strtoul(lfields[5], NULL, 16);
-        start_plt_libsimgrid = (char *)start_text_libsimgrid + offset;
-        end_plt_libsimgrid = (char *)start_plt_libsimgrid + size;
-        plt_found++;
-      }else if(strcmp(lfields[1], ".got.plt") == 0){
-        size = strtoul(lfields[2], NULL, 16);
-        offset = strtoul(lfields[5], NULL, 16);
-        start_got_plt_libsimgrid = (char *)start_text_libsimgrid + offset;
-        end_got_plt_libsimgrid = (char *)start_got_plt_libsimgrid + size;
-        plt_found++;
-       }
-
-    }
-    
-  }
+  xbt_assert(maestro_stack_start, "maestro_stack_start");
+  xbt_assert(maestro_stack_end, "maestro_stack_end");
+  xbt_assert(libsimgrid_path, "libsimgrid_path&");
 
-  xbt_free(command);
-  xbt_free(line);
-  pclose(fp);
+  MC_free_memory_map(maps);
 
 }
 
-void MC_get_binary_plt_section(){
-
-  FILE *fp;
-  char *line = NULL;            /* Temporal storage for each line that is readed */
-  ssize_t read;                 /* Number of bytes readed */
-  size_t n = 0;                 /* Amount of bytes to read by xbt_getline */
-
-  char *lfields[7];
-  int i, plt_found = 0;
-  unsigned long int size;
-
-  char *command = bprintf( "objdump --section-headers %s", xbt_binary_name);
-
-  fp = popen(command, "r");
-
-  if(fp == NULL){
-    perror("popen failed");
-    xbt_abort();
-  }
-
-  while ((read = xbt_getline(&line, &n, fp)) != -1 && plt_found != 2) {
-
-    if(n == 0)
-      continue;
-
-    /* Wipeout the new line character */
-    line[read - 1] = '\0';
+/** \brief Finds informations about a given shared object/executable */
+mc_object_info_t MC_find_object_info(memory_map_t maps, char* name) {
+  mc_object_info_t result = MC_new_object_info();
+  result->file_name = xbt_strdup(name);
+  result->start_data = NULL;
+  result->start_text = NULL;
+  MC_find_object_address(maps, result);
+  MC_dwarf_get_variables(result);
+  return result;
+}
 
-    lfields[0] = strtok(line, " ");
+/** \brief Fills the position of the .bss and .data sections. */
+static void MC_find_object_address(memory_map_t maps, mc_object_info_t result) {
 
-    if(lfields[0] == NULL)
-      continue;
-
-    if(strcmp(lfields[0], "Sections:") == 0 || strcmp(lfields[0], "Idx") == 0 || strncmp(lfields[0], basename(xbt_binary_name), strlen(xbt_binary_name)) == 0)
-      continue;
-
-    for (i = 1; i < 7 && lfields[i - 1] != NULL; i++) {
-      lfields[i] = strtok(NULL, " ");
+  unsigned int i = 0;
+  s_map_region_t reg;
+  const char* name = basename(result->file_name);
+  while (i < maps->mapsize) {
+    reg = maps->regions[i];
+    if (maps->regions[i].pathname == NULL || strcmp(basename(maps->regions[i].pathname),  name)) {
+      // Nothing to do
     }
-
-    if(i>=6){
-      if(strcmp(lfields[1], ".plt") == 0){
-        size = strtoul(lfields[2], NULL, 16);
-        start_plt_binary = (void *)strtoul(lfields[3], NULL, 16);
-        end_plt_binary = (char *)start_plt_binary + size;
-        plt_found++;
-      }else if(strcmp(lfields[1], ".got.plt") == 0){
-        size = strtoul(lfields[2], NULL, 16);
-        start_got_plt_binary = (char *)strtoul(lfields[3], NULL, 16);
-        end_got_plt_binary = (char *)start_got_plt_binary + size;
-        plt_found++;
-       }
+    else if ((reg.prot & PROT_WRITE)){
+          result->start_data = reg.start_addr;
+    } else if ((reg.prot & PROT_READ) && (reg.prot & PROT_EXEC)){
+          result->start_text = reg.start_addr;
     }
-    
-    
+    i++;
   }
 
-  xbt_free(command);
-  xbt_free(line);
-  pclose(fp);
-
+  xbt_assert(result->file_name);
+  xbt_assert(result->start_data);
+  xbt_assert(result->start_text);
 }
 
 /************************************* Take Snapshot ************************************/
@@ -478,6 +371,8 @@ static void MC_get_hash_local(char *snapshot_hash, xbt_dynar_t stacks){
 
 }
 
+
+
 static xbt_dynar_t MC_get_local_variables_values(void *stack_context){
   
   unw_cursor_t c;
@@ -497,11 +392,9 @@ static xbt_dynar_t MC_get_local_variables_values(void *stack_context){
   unsigned int cursor = 0;
   dw_variable_t current_variable;
   dw_location_entry_t entry = NULL;
-  dw_location_t location_entry = NULL;
-  unw_word_t res;
   int frame_found = 0, region_type;
   void *frame_pointer_address = NULL;
-  long true_ip, value;
+  long true_ip;
   int stop = 0;
 
   xbt_dynar_t variables = xbt_dynar_new(sizeof(local_variable_t), local_variable_free_voidp);
@@ -516,10 +409,10 @@ static xbt_dynar_t MC_get_local_variables_values(void *stack_context){
     if(!strcmp(frame_name, "smx_ctx_sysv_wrapper")) /* Stop before context switch with maestro */
       stop = 1;
 
-    if((long)ip > (long)start_text_libsimgrid)
-      frame = xbt_dict_get_or_null(mc_local_variables_libsimgrid, frame_name);
+    if((long)ip > (long) mc_libsimgrid_info->start_text)
+      frame = xbt_dict_get_or_null(mc_libsimgrid_info->local_variables, frame_name);
     else
-      frame = xbt_dict_get_or_null(mc_local_variables_binary, frame_name);
+      frame = xbt_dict_get_or_null(mc_binary_info->local_variables, frame_name);
 
     if(frame == NULL){
       ret = unw_step(&c);
@@ -537,31 +430,7 @@ static xbt_dynar_t MC_get_local_variables_values(void *stack_context){
         entry = xbt_dynar_get_as(frame->frame_base->location.loclist, cursor, dw_location_entry_t);
         if((true_ip >= entry->lowpc) && (true_ip < entry->highpc)){
           frame_found = 1;
-          switch(entry->location->type){
-          case e_dw_compose:
-            if(xbt_dynar_length(entry->location->location.compose) > 1){
-              frame_pointer_address = NULL; /* TODO : location list with optimizations enabled */
-            }else{
-              location_entry = xbt_dynar_get_as(entry->location->location.compose, 0, dw_location_t);
-              switch(location_entry->type){
-              case e_dw_register:
-                unw_get_reg(&c, location_entry->location.reg, &res);
-                frame_pointer_address = (void*)(long)res;
-                break;
-              case e_dw_bregister_op:
-                unw_get_reg(&c, location_entry->location.breg_op.reg, &res);
-                frame_pointer_address = (void*)((long)res + location_entry->location.breg_op.offset);
-                break;
-              default:
-                frame_pointer_address = NULL; /* FIXME : implement other cases (with optimizations enabled) */
-                break;
-              }
-            }
-            break;
-          default:
-            frame_pointer_address = NULL; /* FIXME : implement other cases (with optimizations enabled) */
-            break;
-          }
+          frame_pointer_address =  (void*) MC_dwarf_resolve_location(&c, entry->location, NULL);
         }
         cursor++;
       }
@@ -576,7 +445,7 @@ static xbt_dynar_t MC_get_local_variables_values(void *stack_context){
 
     xbt_dynar_foreach(frame->variables, cursor, current_variable){
       
-      if((long)ip > (long)start_text_libsimgrid)
+      if((long)ip > (long)mc_libsimgrid_info->start_text)
         region_type = 1;
       else
         region_type = 2;
@@ -589,42 +458,7 @@ static xbt_dynar_t MC_get_local_variables_values(void *stack_context){
       new_var->region= region_type;
       
       if(current_variable->address.location != NULL){
-        switch(current_variable->address.location->type){
-        case e_dw_compose:
-          if(xbt_dynar_length(current_variable->address.location->location.compose) > 1){
-            /* TODO : location list with optimizations enabled */
-          }else{
-            location_entry = xbt_dynar_get_as(current_variable->address.location->location.compose, 0, dw_location_t);
-            
-            switch(location_entry->type){
-            case e_dw_register:
-              unw_get_reg(&c, location_entry->location.reg, &res);
-              value = (long)res;
-              break;
-            case e_dw_bregister_op:
-              unw_get_reg(&c, location_entry->location.breg_op.reg, &res);
-              value = (long)res + location_entry->location.breg_op.offset;
-              break;
-            case e_dw_fbregister_op:
-              if(frame_pointer_address != NULL)
-                value = (long)((char *)frame_pointer_address + location_entry->location.fbreg_op);
-              else
-                value = 0;
-              break;
-            default:
-              value = 0; /* FIXME : implement other cases (with optimizations enabled)*/
-              break;
-            }
-
-            if(value)
-              new_var->address = (void *)value;
-            else
-              new_var->address = NULL;
-          }
-          break;
-        default :
-          break;
-        }
+        new_var->address = (void*) MC_dwarf_resolve_location(&c, current_variable->address.location, frame_pointer_address);
       }
 
       xbt_dynar_push(variables, &new_var);
index e7ece50..f9feecf 100644 (file)
@@ -131,52 +131,52 @@ static int compare_areas_with_type(void *area1, void *area2, xbt_dict_t types, x
   void *addr_pointed1, *addr_pointed2;
 
   switch(type->type){
-  case e_dw_base_type:
-  case e_dw_enumeration_type:
-  case e_dw_union_type:
-    return (memcmp(area1, area2, type->size) != 0);
+  case DW_TAG_base_type:
+  case DW_TAG_enumeration_type:
+  case DW_TAG_union_type:
+    return (memcmp(area1, area2, type->byte_size) != 0);
     break;
-  case e_dw_typedef:
-  case e_dw_volatile_type:
+  case DW_TAG_typedef:
+  case DW_TAG_volatile_type:
     return compare_areas_with_type(area1, area2, types, other_types, type->dw_type_id, region_size, region_type, start_data, pointer_level);
     break;
-  case e_dw_const_type: /* Const variable cannot be modified */
+  case DW_TAG_const_type: /* Const variable cannot be modified */
     return -1;
     break;
-  case e_dw_array_type:
+  case DW_TAG_array_type:
     subtype = xbt_dict_get_or_null(types, type->dw_type_id);
     switch(subtype->type){
-    case e_dw_base_type:
-    case e_dw_enumeration_type:
-    case e_dw_pointer_type:
-    case e_dw_structure_type:
-    case e_dw_union_type:
-      if(subtype->size == 0){ /*declaration of the type, need the complete description */
+    case DW_TAG_base_type:
+    case DW_TAG_enumeration_type:
+    case DW_TAG_pointer_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_union_type:
+      if(subtype->byte_size == 0){ /*declaration of the type, need the complete description */
         subtype = xbt_dict_get_or_null(types, get_type_description(types, subtype->name));
         if(subtype == NULL){
           subtype = xbt_dict_get_or_null(other_types, get_type_description(other_types, subtype->name));
           switch_types = 1;
         }
       }
-      elm_size = subtype->size;
+      elm_size = subtype->byte_size;
       break;
-    case e_dw_typedef:
-    case e_dw_volatile_type:
+    case DW_TAG_typedef:
+    case DW_TAG_volatile_type:
       subsubtype = xbt_dict_get_or_null(types, subtype->dw_type_id);
-      if(subsubtype->size == 0){ /*declaration of the type, need the complete description */
+      if(subsubtype->byte_size == 0){ /*declaration of the type, need the complete description */
         subsubtype = xbt_dict_get_or_null(types, get_type_description(types, subsubtype->name));
         if(subsubtype == NULL){
           subsubtype = xbt_dict_get_or_null(other_types, get_type_description(other_types, subsubtype->name));
           switch_types = 1;
         }
       }
-      elm_size = subsubtype->size;
+      elm_size = subsubtype->byte_size;
       break;
     default : 
       return 0;
       break;
     }
-    for(i=0; i<type->size; i++){
+    for(i=0; i<type->element_count; i++){
       if(switch_types)
         res = compare_areas_with_type((char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), other_types, types, type->dw_type_id, region_size, region_type, start_data, pointer_level);
       else
@@ -185,8 +185,8 @@ static int compare_areas_with_type(void *area1, void *area2, xbt_dict_t types, x
         return res;
     }
     break;
-  case e_dw_pointer_type: 
-    if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(types, type->dw_type_id))->type == e_dw_subroutine_type){
+  case DW_TAG_pointer_type:
+    if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(types, type->dw_type_id))->type == DW_TAG_subroutine_type){
       addr_pointed1 = *((void **)(area1)); 
       addr_pointed2 = *((void **)(area2));
       return (addr_pointed1 != addr_pointed2);
@@ -214,14 +214,14 @@ static int compare_areas_with_type(void *area1, void *area2, xbt_dict_t types, x
       }
     }
     break;
-  case e_dw_structure_type:
+  case DW_TAG_structure_type:
     xbt_dynar_foreach(type->members, cursor, member){
       res = compare_areas_with_type((char *)area1 + member->offset, (char *)area2 + member->offset, types, other_types, member->dw_type_id, region_size, region_type, start_data, pointer_level);
       if(res == 1)
         return res;
     }
     break;
-  case e_dw_subroutine_type:
+  case DW_TAG_subroutine_type:
     return -1;
     break;
   default:
@@ -248,18 +248,23 @@ static int compare_global_variables(int region_type, mc_mem_region_t r1, mc_mem_
   dw_variable_t current_var;
   size_t offset;
   void *start_data;
+  void* start_data_binary = mc_binary_info->start_data;
+  void* start_data_libsimgrid = mc_libsimgrid_info->start_data;
 
+  mc_object_info_t object_info = NULL;
+  mc_object_info_t other_object_info = NULL;
   if(region_type == 2){
-    variables = mc_global_variables_binary;
-    types = mc_variables_type_binary;
-    other_types = mc_variables_type_libsimgrid;
+    object_info = mc_binary_info;
+    other_object_info = mc_libsimgrid_info;
     start_data = start_data_binary;
   }else{
-    variables = mc_global_variables_libsimgrid;
-    types = mc_variables_type_libsimgrid;
-    other_types = mc_variables_type_binary;
+    object_info = mc_libsimgrid_info;
+    other_object_info = mc_binary_info;
     start_data = start_data_libsimgrid;
   }
+  variables = object_info->global_variables;
+  types = object_info->types;
+  other_types = other_object_info->types;
 
   xbt_dynar_foreach(variables, cursor, current_var){
 
@@ -286,6 +291,8 @@ static int compare_global_variables(int region_type, mc_mem_region_t r1, mc_mem_
 }
 
 static int compare_local_variables(mc_snapshot_stack_t stack1, mc_snapshot_stack_t stack2, void *heap1, void *heap2){
+  void* start_data_binary = mc_binary_info->start_data;
+  void* start_data_libsimgrid = mc_libsimgrid_info->start_data;
 
   if(!compared_pointers){
     compared_pointers = xbt_dynar_new(sizeof(pointers_pair_t), pointers_pair_free_voidp);
@@ -314,9 +321,9 @@ static int compare_local_variables(mc_snapshot_stack_t stack1, mc_snapshot_stack
       offset1 = (char *)current_var1->address - (char *)std_heap;
       offset2 = (char *)current_var2->address - (char *)std_heap;
       if(current_var1->region == 1)
-        res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_variables_type_libsimgrid, mc_variables_type_binary, current_var1->type, 0, 1, start_data_libsimgrid, 0);
+        res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_libsimgrid_info->types, mc_binary_info->types, current_var1->type, 0, 1, start_data_libsimgrid, 0);
       else
-        res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_variables_type_binary, mc_variables_type_libsimgrid, current_var1->type, 0, 2, start_data_binary, 0);
+        res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_binary_info->types, mc_libsimgrid_info->types, current_var1->type, 0, 2, start_data_binary, 0);
       if(res == 1){
         XBT_VERB("Local variable %s (%p - %p) in frame %s  is different between snapshots", current_var1->name,(char *)heap1 + offset1, (char *)heap2 + offset2, current_var1->frame);
         xbt_dynar_free(&compared_pointers);
@@ -586,7 +593,10 @@ int snapshot_compare(void *state1, void *state2){
   #endif
 
   /* Compare heap */
-    if(mmalloc_compare_heap((xbt_mheap_t)s1->regions[0]->data, (xbt_mheap_t)s2->regions[0]->data, mc_variables_type_libsimgrid, mc_variables_type_binary) > 0){
+    if(mmalloc_compare_heap((xbt_mheap_t)s1->regions[0]->data,
+                            (xbt_mheap_t)s2->regions[0]->data,
+                            mc_libsimgrid_info->types,
+                            mc_binary_info->types) > 0){
 
     #ifdef MC_DEBUG
       xbt_os_walltimer_stop(timer);
diff --git a/src/mc/mc_dwarf.c b/src/mc/mc_dwarf.c
new file mode 100644 (file)
index 0000000..a6124c9
--- /dev/null
@@ -0,0 +1,903 @@
+/* Copyright (c) 2008-2013. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include <stdlib.h>
+#include <dwarf.h>
+#include <elfutils/libdw.h>
+#include <inttypes.h>
+
+#include <simgrid_config.h>
+#include <xbt/log.h>
+#include <xbt/sysdep.h>
+
+#include "mc_private.h"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_dwarf, mc, "DWARF processing");
+
+/** \brief The default DW_TAG_lower_bound for a given DW_AT_language.
+ *
+ *  The default for a given language is defined in the DWARF spec.
+ *
+ *  \param language consant as defined by the DWARf spec
+ */
+static uint64_t MC_dwarf_default_lower_bound(int lang);
+
+/** \brief Computes the the element_count of a DW_TAG_enumeration_type DIE
+ *
+ * This is the number of elements in a given array dimension.
+ *
+ * A reference of the compilation unit (DW_TAG_compile_unit) is
+ * needed because the default lower bound (when there is no DW_AT_lower_bound)
+ * depends of the language of the compilation unit (DW_AT_language).
+ *
+ * \param die  DIE for the DW_TAG_enumeration_type or DW_TAG_subrange_type
+ * \param unit DIE of the DW_TAG_compile_unit
+ */
+static uint64_t MC_dwarf_subrange_element_count(Dwarf_Die* die, Dwarf_Die* unit);
+
+/** \brief Computes the number of elements of a given DW_TAG_array_type.
+ *
+ * \param die DIE for the DW_TAG_array_type
+ */
+static uint64_t MC_dwarf_array_element_count(Dwarf_Die* die, Dwarf_Die* unit);
+
+/** \brief Process a DIE
+ *
+ *  \param info the resulting object fot the library/binary file (output)
+ *  \param die  the current DIE
+ *  \param unit the DIE of the compile unit of the current DIE
+ *  \param frame containg frame if any
+ */
+static void MC_dwarf_handle_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame);
+
+/** \brief Process a type DIE
+ */
+static void MC_dwarf_handle_type_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit);
+
+/** \brief Calls MC_dwarf_handle_die on all childrend of the given die
+ *
+ *  \param info the resulting object fot the library/binary file (output)
+ *  \param die  the current DIE
+ *  \param unit the DIE of the compile unit of the current DIE
+ *  \param frame containg frame if any
+ */
+static void MC_dwarf_handle_children(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame);
+
+/** \brief Handle a variable (DW_TAG_variable or other)
+ *
+ *  \param info the resulting object fot the library/binary file (output)
+ *  \param die  the current DIE
+ *  \param unit the DIE of the compile unit of the current DIE
+ *  \param frame containg frame if any
+ */
+static void MC_dwarf_handle_variable_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame);
+
+/** \brief Convert a libdw DWARF expression into a MC representation of the location
+ *
+ *  \param expr array of DWARf operations
+ *  \param len  number of elements
+ *  \return a new MC expression
+ */
+static dw_location_t MC_dwarf_get_expression(Dwarf_Op* expr,  size_t len);
+
+/** \brief Get the DW_TAG_type of the DIE
+ *
+ *  \param die DIE
+ *  \return DW_TAG_type attribute as a new string (NULL if none)
+ */
+static char* MC_dwarf_at_type(Dwarf_Die* die);
+
+/** \brief Get the name of an attribute (DW_AT_*) from its code
+ *
+ *  \param attr attribute code (see the DWARF specification)
+ *  \return name of the attribute
+ */
+const char* MC_dwarf_attrname(int attr) {
+  switch (attr) {
+#include "mc_dwarf_attrnames.h"
+  default:
+    return "DW_AT_unkown";
+  }
+}
+
+/** \brief Get the name of a dwarf tag (DW_TAG_*) from its code
+ *
+ *  \param tag tag code (see the DWARF specification)
+ *  \return name of the tag
+ */
+const char* MC_dwarf_tagname(int tag) {
+  switch (tag) {
+#include "mc_dwarf_tagnames.h"
+  case DW_TAG_invalid:
+    return "DW_TAG_invalid";
+  default:
+    return "DW_TAG_unkown";
+  }
+}
+
+/** \brief Get the name of the tag of a given DIE
+ *
+ *  \param die DIE
+ *  \return name of the tag of this DIE
+ */
+static inline const char* MC_dwarf_die_tagname(Dwarf_Die* die) {
+  return MC_dwarf_tagname(dwarf_tag(die));
+}
+
+// ***** Attributes
+
+/** \brief Get an attribute of a given DIE as a string
+ *
+ *  \param the DIE
+ *  \param attribute attribute
+ *  \return value of the given attribute of the given DIE
+ */
+static const char* MC_dwarf_attr_string(Dwarf_Die* die, int attribute) {
+  Dwarf_Attribute attr;
+  if (!dwarf_attr_integrate(die, attribute, &attr)) {
+       return NULL;
+  } else {
+       return dwarf_formstring(&attr);
+  }
+}
+
+/** \brief Get the linkage name of a DIE.
+ *
+ *  Use either DW_AT_linkage_name or DW_AR_MIPS_linkage_name.
+ *
+ *  \param DIE
+ *  \return linkage name of the given DIE (or NULL)
+ * */
+static const char* MC_dwarf_at_linkage_name(Dwarf_Die* die) {
+  const char* name = MC_dwarf_attr_string(die, DW_AT_linkage_name);
+  if (!name)
+    name = MC_dwarf_attr_string(die, DW_AT_MIPS_linkage_name);
+  return name;
+}
+
+/** \brief Create a location list from a given attribute
+ *
+ *  \param die the DIE
+ *  \param attr the attribute
+ *  \return MC specific representation of the location list represented by the given attribute
+ *  of the given die
+ */
+static dw_location_t MC_dwarf_get_location_list(Dwarf_Die* die, Dwarf_Attribute* attr) {
+
+  dw_location_t location = xbt_new0(s_dw_location_t, 1);
+  location->type = e_dw_loclist;
+  xbt_dynar_t loclist = xbt_dynar_new(sizeof(dw_location_entry_t), NULL);
+  location->location.loclist = loclist;
+
+  ptrdiff_t offset = 0;
+  Dwarf_Addr base, start, end;
+  Dwarf_Op *expr;
+  size_t len;
+
+  while (1) {
+
+    offset = dwarf_getlocations(attr, offset, &base, &start, &end, &expr, &len);
+    if (offset==0)
+      return location;
+    else if (offset==-1)
+      xbt_die("Error while loading location list");
+
+    dw_location_entry_t new_entry = xbt_new0(s_dw_location_entry_t, 1);
+    new_entry->lowpc = start;
+    new_entry->highpc = end;
+    new_entry->location = MC_dwarf_get_expression(expr, len);
+
+    xbt_dynar_push(loclist, &new_entry);
+
+  }
+}
+
+/** \brief Get the location expression or location list from an attribute
+ *
+ *  Processes direct expressions as well as location lists.
+ *
+ *  \param die the DIE
+ *  \param attr the attribute
+ *  \return MC specific representation of the location represented by the given attribute
+ *  of the given die
+ */
+static dw_location_t MC_dwarf_get_location(Dwarf_Die* die, Dwarf_Attribute* attr) {
+  int form = dwarf_whatform(attr);
+  switch (form) {
+
+  // The attribute is an DWARF location expression:
+  case DW_FORM_exprloc:
+  case DW_FORM_block1: // not in the spec
+  case DW_FORM_block2:
+  case DW_FORM_block4:
+  case DW_FORM_block:
+    {
+      Dwarf_Op* expr;
+      size_t len;
+      if (dwarf_getlocation(attr, &expr, &len))
+        xbt_die("Could not read location expression");
+      return MC_dwarf_get_expression(expr, len);
+    }
+
+  // The attribute is a reference to a location list entry:
+  case DW_FORM_sec_offset:
+  case DW_FORM_data2:
+  case DW_FORM_data4:
+  case DW_FORM_data8:
+    {
+      return MC_dwarf_get_location_list(die, attr);
+    }
+    break;
+
+  default:
+    xbt_die("Unexpected form %i list for location in attribute %s of <%p>%s",
+      form,
+      MC_dwarf_attrname(attr->code),
+      (void*) dwarf_dieoffset(die),
+      MC_dwarf_attr_string(die, DW_AT_name));
+    return NULL;
+  }
+}
+
+/** \brief Get the location expression or location list from an attribute
+ *
+ *  Processes direct expressions as well as location lists.
+ *
+ *  \param die the DIE
+ *  \param attribute the attribute code
+ *  \return MC specific representation of the location represented by the given attribute
+ *  of the given die
+ */
+static dw_location_t MC_dwarf_at_location(Dwarf_Die* die, int attribute) {
+  if(!dwarf_hasattr_integrate(die, attribute))
+    return xbt_new0(s_dw_location_t, 1);
+
+  Dwarf_Attribute attr;
+  dwarf_attr_integrate(die, attribute, &attr);
+  return MC_dwarf_get_location(die, &attr);
+}
+
+static char* MC_dwarf_at_type(Dwarf_Die* die) {
+  Dwarf_Attribute attr;
+  if (dwarf_hasattr_integrate(die, DW_AT_type)) {
+       dwarf_attr_integrate(die, DW_AT_type, &attr);
+       Dwarf_Die subtype_die;
+       if (dwarf_formref_die(&attr, &subtype_die)==NULL) {
+         xbt_die("Could not find DIE for type");
+       }
+       Dwarf_Off subtype_global_offset = dwarf_dieoffset(&subtype_die);
+    return bprintf("%" PRIx64 , subtype_global_offset);
+  }
+  else return NULL;
+}
+
+static uint64_t MC_dwarf_attr_addr(Dwarf_Die* die, int attribute) {
+  Dwarf_Attribute attr;
+  if(dwarf_attr_integrate(die, attribute, &attr)==NULL)
+    return 0;
+  Dwarf_Addr value;
+  if (dwarf_formaddr(&attr, &value) == 0)
+    return (uint64_t) value;
+  else
+    return 0;
+}
+
+static uint64_t MC_dwarf_attr_uint(Dwarf_Die* die, int attribute, uint64_t default_value) {
+  Dwarf_Attribute attr;
+  if (dwarf_attr_integrate(die, attribute, &attr)==NULL)
+    return default_value;
+  Dwarf_Word value;
+  return dwarf_formudata(dwarf_attr_integrate(die, attribute, &attr), &value) == 0 ? (uint64_t) value : default_value;
+}
+
+static bool MC_dwarf_attr_flag(Dwarf_Die* die, int attribute, int integrate) {
+  Dwarf_Attribute attr;
+  if ((integrate ? dwarf_attr_integrate(die, attribute, &attr)
+                    : dwarf_attr(die, attribute, &attr))==0)
+    return false;
+
+  bool result;
+  if (dwarf_formflag(&attr, &result))
+    xbt_die("Unexpected form for attribute %s",
+      MC_dwarf_attrname(attribute));
+  return result;
+}
+
+static uint64_t MC_dwarf_default_lower_bound(int lang) {
+  switch(lang) {
+  case DW_LANG_C:
+  case DW_LANG_C89:
+  case DW_LANG_C99:
+  case DW_LANG_C_plus_plus:
+  case DW_LANG_D:
+  case DW_LANG_Java:
+  case DW_LANG_ObjC:
+  case DW_LANG_ObjC_plus_plus:
+  case DW_LANG_Python:
+  case DW_LANG_UPC:
+    return 0;
+  case DW_LANG_Ada83:
+  case DW_LANG_Ada95:
+  case DW_LANG_Fortran77:
+  case DW_LANG_Fortran90:
+  case DW_LANG_Fortran95:
+  case DW_LANG_Modula2:
+  case DW_LANG_Pascal83:
+  case DW_LANG_PL1:
+  case DW_LANG_Cobol74:
+  case DW_LANG_Cobol85:
+    return 1;
+  default:
+    xbt_die("No default MT_TAG_lower_bound for language %i and none given", lang);
+    return 0;
+  }
+}
+
+static uint64_t MC_dwarf_subrange_element_count(Dwarf_Die* die, Dwarf_Die* unit) {
+  xbt_assert(dwarf_tag(die)==DW_TAG_enumeration_type ||dwarf_tag(die)==DW_TAG_subrange_type,
+      "MC_dwarf_subrange_element_count called with DIE of type %s", MC_dwarf_die_tagname(die));
+
+  // Use DW_TAG_count if present:
+  if (dwarf_hasattr_integrate(die, DW_AT_count)) {
+    return MC_dwarf_attr_uint(die, DW_AT_count, 0);
+  }
+
+  // Otherwise compute DW_TAG_upper_bound-DW_TAG_lower_bound:
+
+  if (!dwarf_hasattr_integrate(die, DW_AT_upper_bound)) {
+       // This is not really 0, but the code expects this (we do not know):
+    return 0;
+  }
+  uint64_t upper_bound = MC_dwarf_attr_uint(die, DW_AT_upper_bound, -1);
+
+  uint64_t lower_bound = 0;
+  if (dwarf_hasattr_integrate(die, DW_AT_lower_bound)) {
+    lower_bound = MC_dwarf_attr_uint(die, DW_AT_lower_bound, -1);
+  } else {
+       lower_bound = MC_dwarf_default_lower_bound(dwarf_srclang(unit));
+  }
+  return upper_bound - lower_bound;
+}
+
+static uint64_t MC_dwarf_array_element_count(Dwarf_Die* die, Dwarf_Die* unit) {
+  xbt_assert(dwarf_tag(die)==DW_TAG_array_type,
+    "MC_dwarf_array_element_count called with DIE of type %s", MC_dwarf_die_tagname(die));
+
+  int result = 1;
+  Dwarf_Die child;
+  int res;
+  for (res=dwarf_child(die, &child); res==0; res=dwarf_siblingof(&child,&child)) {
+       int child_tag = dwarf_tag(&child);
+    if (child_tag==DW_TAG_subrange_type ||child_tag==DW_TAG_enumeration_type) {
+      result *= MC_dwarf_subrange_element_count(&child, unit);
+    }
+  }
+  return result;
+}
+
+// ***** Location
+
+Dwarf_Off MC_dwarf_resolve_location(unw_cursor_t* c, dw_location_t location, void* frame_pointer_address) {
+  unw_word_t res;
+  switch (location->type){
+  case e_dw_compose:
+    if (xbt_dynar_length(location->location.compose) > 1){
+      return 0; /* TODO : location list with optimizations enabled */
+    }
+    dw_location_t location_entry = xbt_dynar_get_as(location->location.compose, 0, dw_location_t);
+    switch (location_entry->type){
+    case e_dw_register:
+      unw_get_reg(c, location_entry->location.reg, &res);
+      return res;
+    case e_dw_bregister_op:
+      unw_get_reg(c, location_entry->location.breg_op.reg, &res);
+      return (Dwarf_Off) ((long)res + location_entry->location.breg_op.offset);
+      break;
+    case e_dw_fbregister_op:
+      if (frame_pointer_address != NULL)
+        return (Dwarf_Off)((char *)frame_pointer_address + location_entry->location.fbreg_op);
+      else
+        return 0;
+    default:
+      return 0; /* FIXME : implement other cases (with optimizations enabled) */
+    }
+    break;
+    default:
+      return 0;
+  }
+}
+
+// ***** dw_type_t
+
+static void MC_dwarf_fill_member_location(dw_type_t type, dw_type_t member, Dwarf_Die* child) {
+  if (dwarf_hasattr(child, DW_AT_data_bit_offset)) {
+    xbt_die("Can't groke DW_AT_data_bit_offset.");
+  }
+
+  if (!dwarf_hasattr_integrate(child, DW_AT_data_member_location)) {
+    if (type->type != DW_TAG_union_type) {
+        xbt_die(
+          "Missing DW_AT_data_member_location field in DW_TAG_member %s of type <%p>%s",
+          member->name, type->id, type->name);
+    } else {
+      return;
+    }
+  }
+
+  Dwarf_Attribute attr;
+  dwarf_attr_integrate(child, DW_AT_data_member_location, &attr);
+  switch (dwarf_whatform(&attr)) {
+
+  case DW_FORM_exprloc:
+    {
+      Dwarf_Op* expr;
+      size_t len;
+      if (dwarf_getlocation(&attr, &expr, &len)) {
+        xbt_die(
+          "Could not read location expression DW_AT_data_member_location in DW_TAG_member %s of type <%p>%s",
+          MC_dwarf_attr_string(child, DW_AT_name),
+          type->id, type->name);
+      }
+      if (len==1 && expr[0].atom == DW_OP_plus_uconst) {
+        member->offset =  expr[0].number;
+      } else {
+        xbt_die("Can't groke this location expression yet. %i %i",
+          len==1 , expr[0].atom == DW_OP_plus_uconst);
+      }
+      break;
+    }
+  case DW_FORM_data1:
+  case DW_FORM_data2:
+  case DW_FORM_data4:
+  case DW_FORM_data8:
+  case DW_FORM_sdata:
+  case DW_FORM_udata:
+    {
+      Dwarf_Word offset;
+      if (!dwarf_formudata(&attr, &offset))
+        member->offset = offset;
+      else
+        xbt_die("Cannot get DW_AT_data_member_%s location <%p>%s",
+          MC_dwarf_attr_string(child, DW_AT_name),
+          type->id, type->name);
+      break;
+    }
+  }
+}
+
+static void MC_dwarf_add_members(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_type_t type) {
+  int res;
+  Dwarf_Die child;
+  xbt_assert(!type->members);
+  type->members = xbt_dynar_new(sizeof(dw_type_t), (void(*)(void*))dw_type_free);
+  for (res=dwarf_child(die, &child); res==0; res=dwarf_siblingof(&child,&child)) {
+    if (dwarf_tag(&child)==DW_TAG_member) {
+      // TODO, we should use another type (because is is not a type but a member)
+      dw_type_t member = xbt_new0(s_dw_type_t, 1);
+      member->type = -1;
+      member->id = NULL;
+
+      const char* name = MC_dwarf_attr_string(&child, DW_AT_name);
+      if(name)
+        member->name = xbt_strdup(name);
+      else
+        member->name = NULL;
+
+      member->byte_size = MC_dwarf_attr_uint(&child, DW_AT_byte_size, 0);
+      member->element_count = -1;
+      member->dw_type_id = MC_dwarf_at_type(&child);
+      member->members = NULL;
+      member->is_pointer_type = 0;
+      member->offset = 0;
+
+      if(dwarf_hasattr(&child, DW_AT_data_bit_offset)) {
+        xbt_die("Can't groke DW_AT_data_bit_offset.");
+      }
+
+      MC_dwarf_fill_member_location(type, member, &child);
+
+      if (!member->dw_type_id) {
+        xbt_die("Missing type for member %s of <%p>%s", member->name, type->id, type->name);
+      }
+
+      xbt_dynar_push(type->members, &member);
+    }
+  }
+}
+
+/** \brief Create a MC type object from a DIE
+ *
+ *  \param info current object info object
+ *  \param DIE (for a given type);
+ *  \param unit compilation unit of the current DIE
+ *  \return MC representation of the type
+ */
+static dw_type_t MC_dwarf_die_to_type(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit) {
+
+  dw_type_t type = xbt_new0(s_dw_type_t, 1);
+  type->type = -1;
+  type->id = NULL;
+  type->name = NULL;
+  type->byte_size = 0;
+  type->element_count = -1;
+  type->dw_type_id = NULL;
+  type->members = NULL;
+  type->is_pointer_type = 0;
+  type->offset = 0;
+
+  type->type = dwarf_tag(die);
+
+  // Global Offset
+  type->id = (void *) dwarf_dieoffset(die);
+
+  const char* name = MC_dwarf_attr_string(die, DW_AT_name);
+  if (name!=NULL) {
+       type->name = xbt_strdup(name);
+  }
+
+  XBT_DEBUG("Processing type <%p>%s", type->id, type->name);
+
+  type->dw_type_id = MC_dwarf_at_type(die);
+
+  // Computation of the byte_size;
+  if (dwarf_hasattr_integrate(die, DW_AT_byte_size))
+    type->byte_size = MC_dwarf_attr_uint(die, DW_AT_byte_size, 0);
+  else if (type->type == DW_TAG_array_type || type->type==DW_TAG_structure_type || type->type==DW_TAG_class_type) {
+    Dwarf_Word size;
+    if (dwarf_aggregate_size(die, &size)==0) {
+      type->byte_size = size;
+    }
+  }
+
+  switch (type->type) {
+  case DW_TAG_array_type:
+       type->element_count = MC_dwarf_array_element_count(die, unit);
+       // TODO, handle DW_byte_stride and (not) DW_bit_stride
+       break;
+
+  case DW_TAG_pointer_type:
+  case DW_TAG_reference_type:
+  case DW_TAG_rvalue_reference_type:
+    type->is_pointer_type = 1;
+    break;
+
+  case DW_TAG_structure_type:
+  case DW_TAG_union_type:
+  case DW_TAG_class_type:
+         MC_dwarf_add_members(info, die, unit, type);
+  }
+
+  return type;
+}
+
+static void MC_dwarf_handle_type_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit) {
+  dw_type_t type = MC_dwarf_die_to_type(info, die, unit);
+
+  char* key = bprintf("%" PRIx64, (uint64_t) type->id);
+  xbt_dict_set(info->types, key, type, NULL);
+}
+
+/** \brief Convert libdw location expresion elment into native one (or NULL in some cases) */
+static dw_location_t MC_dwarf_get_expression_element(Dwarf_Op* op) {
+  dw_location_t element = xbt_new0(s_dw_location_t, 1);
+  uint8_t atom = op->atom;
+  if (atom >= DW_OP_reg0 && atom<= DW_OP_reg31) {
+    element->type = e_dw_register;
+    element->location.reg = atom - DW_OP_reg0;
+  }
+  else if (atom >= DW_OP_breg0 && atom<= DW_OP_breg31) {
+    element->type = e_dw_bregister_op;
+    element->location.reg = atom - DW_OP_breg0;
+    element->location.breg_op.offset = op->number;
+  }
+  else if (atom >= DW_OP_lit0 && atom<= DW_OP_lit31) {
+    element->type = e_dw_lit;
+    element->location.reg = atom - DW_OP_lit0;
+  }
+  else switch (atom) {
+  case DW_OP_fbreg:
+    element->type = e_dw_fbregister_op;
+    element->location.fbreg_op = op->number;
+    break;
+  case DW_OP_piece:
+    element->type = e_dw_piece;
+    element->location.piece = op->number;
+    break;
+  case DW_OP_plus_uconst:
+    element->type = e_dw_plus_uconst;
+    element->location.plus_uconst = op->number;
+    break;
+  case DW_OP_abs:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("abs");
+    break;
+  case DW_OP_and:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("and");
+    break;
+  case DW_OP_div:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("div");
+    break;
+  case DW_OP_minus:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("minus");
+    break;
+  case DW_OP_mod:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("mod");
+    break;
+  case DW_OP_mul:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("mul");
+    break;
+  case DW_OP_neg:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("neg");
+    break;
+  case DW_OP_not:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("not");
+    break;
+  case DW_OP_or:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("or");
+    break;
+  case DW_OP_plus:
+    element->type = e_dw_arithmetic;
+    element->location.arithmetic = xbt_strdup("plus");
+    break;
+
+  case DW_OP_stack_value:
+    // Why nothing here?
+    xbt_free(element);
+    return NULL;
+
+  case DW_OP_deref_size:
+    element->type = e_dw_deref;
+    element->location.deref_size =  (unsigned int short) op->number;
+    break;
+  case DW_OP_deref:
+    element->type = e_dw_deref;
+    element->location.deref_size = sizeof(void *);
+    break;
+  case DW_OP_constu:
+    element->type = e_dw_uconstant;
+    element->location.uconstant.bytes = 1;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+  case DW_OP_consts:
+    element->type = e_dw_sconstant;
+    element->location.uconstant.bytes = 1;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+
+  case DW_OP_const1u:
+    element->type = e_dw_uconstant;
+    element->location.uconstant.bytes = 1;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+  case DW_OP_const2u:
+    element->type = e_dw_uconstant;
+    element->location.uconstant.bytes = 2;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+  case DW_OP_const4u:
+    element->type = e_dw_uconstant;
+    element->location.uconstant.bytes = 4;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+  case DW_OP_const8u:
+    element->type = e_dw_uconstant;
+    element->location.uconstant.bytes = 8;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+
+  case DW_OP_const1s:
+    element->type = e_dw_sconstant;
+    element->location.uconstant.bytes = 1;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+  case DW_OP_const2s:
+    element->type = e_dw_sconstant;
+    element->location.uconstant.bytes = 2;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+  case DW_OP_const4s:
+    element->type = e_dw_sconstant;
+    element->location.uconstant.bytes = 4;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+  case DW_OP_const8s:
+    element->type = e_dw_sconstant;
+    element->location.uconstant.bytes = 8;
+    element->location.uconstant.value = (unsigned long int) op->number;
+    break;
+  default:
+    element->type = e_dw_unsupported;
+    break;
+  }
+  return element;
+}
+
+/** \brief Convert libdw location expresion into native one */
+static dw_location_t MC_dwarf_get_expression(Dwarf_Op* expr,  size_t len) {
+  dw_location_t loc = xbt_new0(s_dw_location_t, 1);
+  loc->type = e_dw_compose;
+  loc->location.compose = xbt_dynar_new(sizeof(dw_location_t), NULL);
+
+  int i;
+  for (i=0; i!=len; ++i) {
+    dw_location_t element =  MC_dwarf_get_expression_element(expr+i);
+    if (element)
+      xbt_dynar_push(loc->location.compose, &element);
+  }
+
+  return loc;
+}
+
+static dw_variable_t MC_die_to_variable(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
+  // Drop declaration:
+  if (MC_dwarf_attr_flag(die, DW_AT_declaration, false))
+    return NULL;
+
+  Dwarf_Attribute attr_location;
+  if (dwarf_attr(die, DW_AT_location, &attr_location)==NULL) {
+    // No location: do not add it ?
+    return NULL;
+  }
+
+  dw_variable_t variable = xbt_new0(s_dw_variable_t, 1);
+  variable->dwarf_offset = dwarf_dieoffset(die);
+  variable->global = frame == NULL; // Can be override base on DW_AT_location
+  variable->name = xbt_strdup(MC_dwarf_attr_string(die, DW_AT_name));
+  variable->type_origin = MC_dwarf_at_type(die);
+  variable->address.address = NULL;
+
+  int form;
+  switch (form = dwarf_whatform(&attr_location)) {
+  case DW_FORM_exprloc:
+  case DW_FORM_block1: // Not in the spec but found in the wild.
+    {
+      Dwarf_Op* expr;
+      size_t len;
+      if (dwarf_getlocation(&attr_location, &expr, &len)) {
+        xbt_die(
+          "Could not read location expression in DW_AT_location of variable <%p>%s",
+          (void*) variable->dwarf_offset, variable->name);
+      }
+
+      if (len==1 && expr[0].atom == DW_OP_addr) {
+        variable->global = 1;
+        Dwarf_Off offset = expr[0].number;
+        // TODO, Why is this different base on the object?
+        Dwarf_Off base = strcmp(info->file_name, xbt_binary_name) !=0 ? (Dwarf_Off) info->start_text : 0;
+        variable->address.address = (void*) (base + offset);
+      } else {
+        variable->address.location = MC_dwarf_get_expression(expr, len);
+      }
+
+      break;
+    }
+  case DW_FORM_sec_offset: // type loclistptr
+  case DW_FORM_data2:
+  case DW_FORM_data4:
+  case DW_FORM_data8:
+    variable->address.location = MC_dwarf_get_location_list(die, &attr_location);
+    break;
+  default:
+    xbt_die("Unexpected form %i list for location in <%p>%s",
+      form, (void*) variable->dwarf_offset, variable->name);
+  }
+
+  return variable;
+}
+
+static void MC_dwarf_handle_variable_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
+  dw_variable_t variable = MC_die_to_variable(info, die, unit, frame);
+  if(variable==NULL)
+      return;
+  MC_dwarf_register_variable(info, frame, variable);
+}
+
+static void MC_dwarf_handle_subprogram_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t parent_frame) {
+  dw_frame_t frame = xbt_new0(s_dw_frame_t, 1);
+
+  frame->start = dwarf_dieoffset(die);
+
+  const char* name = MC_dwarf_at_linkage_name(die);
+  if (name==NULL)
+    name = MC_dwarf_attr_string(die, DW_AT_name);
+  frame->name = xbt_strdup(name);
+
+  // Variables are filled in the (recursive) call of MC_dwarf_handle_children:
+  frame->variables = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
+  frame->high_pc = (void*) MC_dwarf_attr_addr(die, DW_AT_high_pc);
+  frame->low_pc = (void*) MC_dwarf_attr_addr(die, DW_AT_low_pc);
+  frame->frame_base = MC_dwarf_at_location(die, DW_AT_frame_base);
+  frame->end = -1; // This one is now useless:
+
+  // Handle children:
+  MC_dwarf_handle_children(info, die, unit, frame);
+
+  // Register it:
+  xbt_dict_set(info->local_variables, frame->name, frame, NULL);
+}
+
+static void MC_dwarf_handle_children(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
+  Dwarf_Die child;
+  int res;
+  for (res=dwarf_child(die, &child); res==0; res=dwarf_siblingof(&child,&child)) {
+    MC_dwarf_handle_die(info, &child, unit, frame);
+  }
+}
+
+static void MC_dwarf_handle_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
+  int tag = dwarf_tag(die);
+  switch (tag) {
+    case DW_TAG_array_type:
+    case DW_TAG_class_type:
+    case DW_TAG_enumeration_type:
+    case DW_TAG_typedef:
+    case DW_TAG_pointer_type:
+    case DW_TAG_string_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_subroutine_type:
+    case DW_TAG_union_type:
+    case DW_TAG_ptr_to_member_type:
+    case DW_TAG_set_type:
+    case DW_TAG_subrange_type:
+    case DW_TAG_base_type:
+    case DW_TAG_const_type:
+    case DW_TAG_file_type:
+    case DW_TAG_packed_type:
+    case DW_TAG_volatile_type:
+    case DW_TAG_restrict_type:
+    case DW_TAG_interface_type:
+    case DW_TAG_unspecified_type:
+    case DW_TAG_mutable_type:
+    case DW_TAG_shared_type:
+      MC_dwarf_handle_type_die(info, die, unit);
+      break;
+    case DW_TAG_inlined_subroutine:
+    case DW_TAG_subprogram:
+      MC_dwarf_handle_subprogram_die(info, die, unit, frame);
+      return;
+    // case DW_TAG_formal_parameter:
+    case DW_TAG_variable:
+    case DW_TAG_formal_parameter:
+      MC_dwarf_handle_variable_die(info, die, unit, frame);
+      break;
+  }
+
+  // Recursive processing of children DIE:
+  MC_dwarf_handle_children(info, die, unit, frame);
+}
+
+void MC_dwarf_get_variables(mc_object_info_t info) {
+  int fd = open(info->file_name, O_RDONLY);
+  if (fd<0) {
+    xbt_die("Could not open file %s", info->file_name);
+  }
+  Dwarf *dwarf = dwarf_begin(fd, DWARF_C_READ);
+  if (dwarf==NULL) {
+    xbt_die("Your program must be compiled with -g");
+  }
+
+  Dwarf_Off offset = 0;
+  Dwarf_Off next_offset = 0;
+  size_t length;
+  while (dwarf_nextcu (dwarf, offset, &next_offset, &length, NULL, NULL, NULL) == 0) {
+    Dwarf_Die die;
+    if(dwarf_offdie(dwarf, offset+length, &die)!=NULL) {
+      MC_dwarf_handle_die(info, &die, &die, NULL);
+    }
+    offset = next_offset;
+  }
+
+  dwarf_end(dwarf);
+  close(fd);
+}
diff --git a/src/mc/mc_dwarf_attrnames.h b/src/mc/mc_dwarf_attrnames.h
new file mode 100644 (file)
index 0000000..1ea8182
--- /dev/null
@@ -0,0 +1,139 @@
+case 0x01: return "DW_AT_sibling";
+case 0x02: return "DW_AT_location";
+case 0x03: return "DW_AT_name";
+case 0x09: return "DW_AT_ordering";
+case 0x0a: return "DW_AT_subscr_data";
+case 0x0b: return "DW_AT_byte_size";
+case 0x0c: return "DW_AT_bit_offset";
+case 0x0d: return "DW_AT_bit_size";
+case 0x0f: return "DW_AT_element_list";
+case 0x10: return "DW_AT_stmt_list";
+case 0x11: return "DW_AT_low_pc";
+case 0x12: return "DW_AT_high_pc";
+case 0x13: return "DW_AT_language";
+case 0x14: return "DW_AT_member";
+case 0x15: return "DW_AT_discr";
+case 0x16: return "DW_AT_discr_value";
+case 0x17: return "DW_AT_visibility";
+case 0x18: return "DW_AT_import";
+case 0x19: return "DW_AT_string_length";
+case 0x1a: return "DW_AT_common_reference";
+case 0x1b: return "DW_AT_comp_dir";
+case 0x1c: return "DW_AT_const_value";
+case 0x1d: return "DW_AT_containing_type";
+case 0x1e: return "DW_AT_default_value";
+case 0x20: return "DW_AT_inline";
+case 0x21: return "DW_AT_is_optional";
+case 0x22: return "DW_AT_lower_bound";
+case 0x25: return "DW_AT_producer";
+case 0x27: return "DW_AT_prototyped";
+case 0x2a: return "DW_AT_return_addr";
+case 0x2c: return "DW_AT_start_scope";
+case 0x2e: return "DW_AT_bit_stride";
+case 0x2f: return "DW_AT_upper_bound";
+case 0x31: return "DW_AT_abstract_origin";
+case 0x32: return "DW_AT_accessibility";
+case 0x33: return "DW_AT_address_class";
+case 0x34: return "DW_AT_artificial";
+case 0x35: return "DW_AT_base_types";
+case 0x36: return "DW_AT_calling_convention";
+case 0x37: return "DW_AT_count";
+case 0x38: return "DW_AT_data_member_location";
+case 0x39: return "DW_AT_decl_column";
+case 0x3a: return "DW_AT_decl_file";
+case 0x3b: return "DW_AT_decl_line";
+case 0x3c: return "DW_AT_declaration";
+case 0x3d: return "DW_AT_discr_list";
+case 0x3e: return "DW_AT_encoding";
+case 0x3f: return "DW_AT_external";
+case 0x40: return "DW_AT_frame_base";
+case 0x41: return "DW_AT_friend";
+case 0x42: return "DW_AT_identifier_case";
+case 0x43: return "DW_AT_macro_info";
+case 0x44: return "DW_AT_namelist_item";
+case 0x45: return "DW_AT_priority";
+case 0x46: return "DW_AT_segment";
+case 0x47: return "DW_AT_specification";
+case 0x48: return "DW_AT_static_link";
+case 0x49: return "DW_AT_type";
+case 0x4a: return "DW_AT_use_location";
+case 0x4b: return "DW_AT_variable_parameter";
+case 0x4c: return "DW_AT_virtuality";
+case 0x4d: return "DW_AT_vtable_elem_location";
+case 0x4e: return "DW_AT_allocated";
+case 0x4f: return "DW_AT_associated";
+case 0x50: return "DW_AT_data_location";
+case 0x51: return "DW_AT_byte_stride";
+case 0x52: return "DW_AT_entry_pc";
+case 0x53: return "DW_AT_use_UTF8";
+case 0x54: return "DW_AT_extension";
+case 0x55: return "DW_AT_ranges";
+case 0x56: return "DW_AT_trampoline";
+case 0x57: return "DW_AT_call_column";
+case 0x58: return "DW_AT_call_file";
+case 0x59: return "DW_AT_call_line";
+case 0x5a: return "DW_AT_description";
+case 0x5b: return "DW_AT_binary_scale";
+case 0x5c: return "DW_AT_decimal_scale";
+case 0x5d: return "DW_AT_small";
+case 0x5e: return "DW_AT_decimal_sign";
+case 0x5f: return "DW_AT_digit_count";
+case 0x60: return "DW_AT_picture_string";
+case 0x61: return "DW_AT_mutable";
+case 0x62: return "DW_AT_threads_scaled";
+case 0x63: return "DW_AT_explicit";
+case 0x64: return "DW_AT_object_pointer";
+case 0x65: return "DW_AT_endianity";
+case 0x66: return "DW_AT_elemental";
+case 0x67: return "DW_AT_pure";
+case 0x68: return "DW_AT_recursive";
+case 0x69: return "DW_AT_signature";
+case 0x6a: return "DW_AT_main_subprogram";
+case 0x6b: return "DW_AT_data_bit_offset";
+case 0x6c: return "DW_AT_const_expr";
+case 0x6d: return "DW_AT_enum_class";
+case 0x6e: return "DW_AT_linkage_name";
+case 0x2000: return "DW_AT_lo_user";
+case 0x2001: return "DW_AT_MIPS_fde";
+case 0x2002: return "DW_AT_MIPS_loop_begin";
+case 0x2003: return "DW_AT_MIPS_tail_loop_begin";
+case 0x2004: return "DW_AT_MIPS_epilog_begin";
+case 0x2005: return "DW_AT_MIPS_loop_unroll_factor";
+case 0x2006: return "DW_AT_MIPS_software_pipeline_depth";
+case 0x2007: return "DW_AT_MIPS_linkage_name";
+case 0x2008: return "DW_AT_MIPS_stride";
+case 0x2009: return "DW_AT_MIPS_abstract_name";
+case 0x200a: return "DW_AT_MIPS_clone_origin";
+case 0x200b: return "DW_AT_MIPS_has_inlines";
+case 0x200c: return "DW_AT_MIPS_stride_byte";
+case 0x200d: return "DW_AT_MIPS_stride_elem";
+case 0x200e: return "DW_AT_MIPS_ptr_dopetype";
+case 0x200f: return "DW_AT_MIPS_allocatable_dopetype";
+case 0x2010: return "DW_AT_MIPS_assumed_shape_dopetype";
+case 0x2011: return "DW_AT_MIPS_assumed_size";
+case 0x2101: return "DW_AT_sf_names";
+case 0x2102: return "DW_AT_src_info";
+case 0x2103: return "DW_AT_mac_info";
+case 0x2104: return "DW_AT_src_coords";
+case 0x2105: return "DW_AT_body_begin";
+case 0x2106: return "DW_AT_body_end";
+case 0x2107: return "DW_AT_GNU_vector";
+case 0x2108: return "DW_AT_GNU_guarded_by";
+case 0x2109: return "DW_AT_GNU_pt_guarded_by";
+case 0x210a: return "DW_AT_GNU_guarded";
+case 0x210b: return "DW_AT_GNU_pt_guarded";
+case 0x210c: return "DW_AT_GNU_locks_excluded";
+case 0x210d: return "DW_AT_GNU_exclusive_locks_required";
+case 0x210e: return "DW_AT_GNU_shared_locks_required";
+case 0x210f: return "DW_AT_GNU_odr_signature";
+case 0x2110: return "DW_AT_GNU_template_name";
+case 0x2111: return "DW_AT_GNU_call_site_value";
+case 0x2112: return "DW_AT_GNU_call_site_data_value";
+case 0x2113: return "DW_AT_GNU_call_site_target";
+case 0x2114: return "DW_AT_GNU_call_site_target_clobbered";
+case 0x2115: return "DW_AT_GNU_tail_call";
+case 0x2116: return "DW_AT_GNU_all_tail_call_sites";
+case 0x2117: return "DW_AT_GNU_all_call_sites";
+case 0x2118: return "DW_AT_GNU_all_source_call_sites";
+case 0x2119: return "DW_AT_GNU_macros";
+case 0x3fff: return "DW_AT_hi_user";
diff --git a/src/mc/mc_dwarf_tagnames.h b/src/mc/mc_dwarf_tagnames.h
new file mode 100644 (file)
index 0000000..98b883a
--- /dev/null
@@ -0,0 +1,74 @@
+case 0x01: return "DW_TAG_array_type";
+case 0x02: return "DW_TAG_class_type";
+case 0x03: return "DW_TAG_entry_point";
+case 0x04: return "DW_TAG_enumeration_type";
+case 0x05: return "DW_TAG_formal_parameter";
+case 0x08: return "DW_TAG_imported_declaration";
+case 0x0a: return "DW_TAG_label";
+case 0x0b: return "DW_TAG_lexical_block";
+case 0x0d: return "DW_TAG_member";
+case 0x0f: return "DW_TAG_pointer_type";
+case 0x10: return "DW_TAG_reference_type";
+case 0x11: return "DW_TAG_compile_unit";
+case 0x12: return "DW_TAG_string_type";
+case 0x13: return "DW_TAG_structure_type";
+case 0x15: return "DW_TAG_subroutine_type";
+case 0x16: return "DW_TAG_typedef";
+case 0x17: return "DW_TAG_union_type";
+case 0x18: return "DW_TAG_unspecified_parameters";
+case 0x19: return "DW_TAG_variant";
+case 0x1a: return "DW_TAG_common_block";
+case 0x1b: return "DW_TAG_common_inclusion";
+case 0x1c: return "DW_TAG_inheritance";
+case 0x1d: return "DW_TAG_inlined_subroutine";
+case 0x1e: return "DW_TAG_module";
+case 0x1f: return "DW_TAG_ptr_to_member_type";
+case 0x20: return "DW_TAG_set_type";
+case 0x21: return "DW_TAG_subrange_type";
+case 0x22: return "DW_TAG_with_stmt";
+case 0x23: return "DW_TAG_access_declaration";
+case 0x24: return "DW_TAG_base_type";
+case 0x25: return "DW_TAG_catch_block";
+case 0x26: return "DW_TAG_const_type";
+case 0x27: return "DW_TAG_constant";
+case 0x28: return "DW_TAG_enumerator";
+case 0x29: return "DW_TAG_file_type";
+case 0x2a: return "DW_TAG_friend";
+case 0x2b: return "DW_TAG_namelist";
+case 0x2c: return "DW_TAG_namelist_item";
+case 0x2d: return "DW_TAG_packed_type";
+case 0x2e: return "DW_TAG_subprogram";
+case 0x2f: return "DW_TAG_template_type_parameter";
+case 0x30: return "DW_TAG_template_value_parameter";
+case 0x31: return "DW_TAG_thrown_type";
+case 0x32: return "DW_TAG_try_block";
+case 0x33: return "DW_TAG_variant_part";
+case 0x34: return "DW_TAG_variable";
+case 0x35: return "DW_TAG_volatile_type";
+case 0x36: return "DW_TAG_dwarf_procedure";
+case 0x37: return "DW_TAG_restrict_type";
+case 0x38: return "DW_TAG_interface_type";
+case 0x39: return "DW_TAG_namespace";
+case 0x3a: return "DW_TAG_imported_module";
+case 0x3b: return "DW_TAG_unspecified_type";
+case 0x3c: return "DW_TAG_partial_unit";
+case 0x3d: return "DW_TAG_imported_unit";
+case 0x3e: return "DW_TAG_mutable_type";
+case 0x3f: return "DW_TAG_condition";
+case 0x40: return "DW_TAG_shared_type";
+case 0x41: return "DW_TAG_type_unit";
+case 0x42: return "DW_TAG_rvalue_reference_type";
+case 0x43: return "DW_TAG_template_alias";
+case 0x4080: return "DW_TAG_lo_user";
+case 0x4081: return "DW_TAG_MIPS_loop";
+case 0x4101: return "DW_TAG_format_label";
+case 0x4102: return "DW_TAG_function_template";
+case 0x4103: return "DW_TAG_class_template";
+case 0x4104: return "DW_TAG_GNU_BINCL";
+case 0x4105: return "DW_TAG_GNU_EINCL";
+case 0x4106: return "DW_TAG_GNU_template_template_param";
+case 0x4107: return "DW_TAG_GNU_template_parameter_pack";
+case 0x4108: return "DW_TAG_GNU_formal_parameter_pack";
+case 0x4109: return "DW_TAG_GNU_call_site";
+case 0x410a: return "DW_TAG_GNU_call_site_parameter";
+case 0xffff: return "DW_TAG_hi_user";
index a4d9bc3..930098f 100644 (file)
@@ -8,6 +8,7 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <sys/time.h>
+#include <libgen.h>
 
 #include "simgrid/sg_config.h"
 #include "../surf/surf_private.h"
@@ -18,6 +19,8 @@
 #include "xbt/automaton.h"
 #include "xbt/dict.h"
 
+static void MC_post_process_types(mc_object_info_t info);
+
 XBT_LOG_NEW_CATEGORY(mc, "All MC categories");
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_global, mc,
                                 "Logging specific to MC (global)");
@@ -110,12 +113,8 @@ int compare;
 xbt_automaton_t _mc_property_automaton = NULL;
 
 /* Variables */
-xbt_dict_t mc_local_variables_libsimgrid = NULL;
-xbt_dict_t mc_local_variables_binary = NULL;
-xbt_dynar_t mc_global_variables_libsimgrid = NULL;
-xbt_dynar_t mc_global_variables_binary = NULL;
-xbt_dict_t mc_variables_type_libsimgrid = NULL;
-xbt_dict_t mc_variables_type_binary = NULL;
+mc_object_info_t mc_libsimgrid_info = NULL;
+mc_object_info_t mc_binary_info = NULL;
 
 /* Ignore mechanism */
 xbt_dynar_t mc_stack_comparison_ignore;
@@ -151,7 +150,7 @@ static void dw_location_entry_free(dw_location_entry_t e){
   xbt_free(e);
 }
 
-static void dw_type_free(dw_type_t t){
+void dw_type_free(dw_type_t t){
   xbt_free(t->name);
   xbt_free(t->dw_type_id);
   xbt_dynar_free(&(t->members));
@@ -162,7 +161,7 @@ static void dw_type_free_voidp(void *t){
   dw_type_free((dw_type_t) * (void **) t);
 }
 
-static void dw_variable_free(dw_variable_t v){
+void dw_variable_free(dw_variable_t v){
   if(v){
     xbt_free(v->name);
     xbt_free(v->type_origin);
@@ -172,10 +171,33 @@ static void dw_variable_free(dw_variable_t v){
   }
 }
 
-static void dw_variable_free_voidp(void *t){
+void dw_variable_free_voidp(void *t){
   dw_variable_free((dw_variable_t) * (void **) t);
 }
 
+// object_info
+
+mc_object_info_t MC_new_object_info(void) {
+  mc_object_info_t res = xbt_new(s_mc_object_info_t, 1);
+  res->file_name = NULL;
+  res->start_text = NULL;
+  res->start_data = NULL;
+  res->start_bss = NULL;
+  res->local_variables = xbt_dict_new_homogeneous(NULL);
+  res->global_variables = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
+  res->types = xbt_dict_new_homogeneous(NULL);
+  return res;
+}
+
+void MC_free_object_info(mc_object_info_t* info) {
+  xbt_free(&(*info)->file_name);
+  xbt_dict_free(&(*info)->local_variables);
+  xbt_dynar_free(&(*info)->global_variables);
+  xbt_dict_free(&(*info)->types);
+  xbt_free(info);
+  *info = NULL;
+}
+
 /*************************************************************************/
 
 static dw_location_t MC_dwarf_get_location(xbt_dict_t location_list, char *expr){
@@ -314,110 +336,11 @@ static dw_location_t MC_dwarf_get_location(xbt_dict_t location_list, char *expr)
 
 }
 
-static xbt_dict_t MC_dwarf_get_location_list(const char *elf_file){
-
-  char *command = bprintf("objdump -Wo %s", elf_file);
-
-  FILE *fp = popen(command, "r");
-
-  if(fp == NULL){
-    perror("popen for objdump failed");
-    xbt_abort();
-  }
-
-  int debug = 0; /*Detect if the program has been compiled with -g */
-
-  xbt_dict_t location_list = xbt_dict_new_homogeneous(NULL);
-  char *line = NULL, *loc_expr = NULL;
-  ssize_t read;
-  size_t n = 0;
-  int cursor_remove;
-  xbt_dynar_t split = NULL;
-
-  while ((read = xbt_getline(&line, &n, fp)) != -1) {
-
-    /* Wipeout the new line character */
-    line[read - 1] = '\0';
-
-    xbt_str_trim(line, NULL);
-    
-    if(n == 0)
-      continue;
-
-    if(strlen(line) == 0)
-      continue;
-
-    if(debug == 0){
-
-      if(strncmp(line, elf_file, strlen(elf_file)) == 0)
-        continue;
-      
-      if(strncmp(line, "Contents", 8) == 0)
-        continue;
-
-      if(strncmp(line, "Offset", 6) == 0){
-        debug = 1;
-        continue;
-      }
-    }
-
-    if(debug == 0){
-      XBT_INFO("Your program must be compiled with -g");
-      xbt_abort();
-    }
-
-    xbt_dynar_t loclist = xbt_dynar_new(sizeof(dw_location_entry_t), NULL);
-
-    xbt_str_strip_spaces(line);
-    split = xbt_str_split(line, " ");
-
-    while(read != -1 && strcmp("<End", (char *)xbt_dynar_get_as(split, 1, char *)) != 0){
-      
-      dw_location_entry_t new_entry = xbt_new0(s_dw_location_entry_t, 1);
-      new_entry->lowpc = strtoul((char *)xbt_dynar_get_as(split, 1, char *), NULL, 16);
-      new_entry->highpc = strtoul((char *)xbt_dynar_get_as(split, 2, char *), NULL, 16);
-      
-      cursor_remove =0;
-      while(cursor_remove < 3){
-        xbt_dynar_remove_at(split, 0, NULL);
-        cursor_remove++;
-      }
-
-      loc_expr = xbt_str_join(split, " ");
-      xbt_str_ltrim(loc_expr, "(");
-      xbt_str_rtrim(loc_expr, ")");
-      new_entry->location = MC_dwarf_get_location(NULL, loc_expr);
-
-      xbt_dynar_push(loclist, &new_entry);
-
-      xbt_dynar_free(&split);
-      free(loc_expr);
-
-      read = xbt_getline(&line, &n, fp);
-      if(read != -1){
-        line[read - 1] = '\0';
-        xbt_str_strip_spaces(line);
-        split = xbt_str_split(line, " ");
-      }
-
-    }
-
-
-    char *key = bprintf("%d", (int)strtoul((char *)xbt_dynar_get_as(split, 0, char *), NULL, 16));
-    xbt_dict_set(location_list, key, loclist, NULL);
-    xbt_free(key);
-    
-    xbt_dynar_free(&split);
-
-  }
-
-  xbt_free(line);
-  xbt_free(command);
-  pclose(fp);
-
-  return location_list;
-}
 
+/** \brief Finds a frame (DW_TAG_subprogram) from an DWARF offset in the rangd of this subprogram
+ *
+ * The offset can be an offset of a child DW_TAG_variable.
+ */
 static dw_frame_t MC_dwarf_get_frame_by_offset(xbt_dict_t all_variables, unsigned long int offset){
 
   xbt_dict_cursor_t cursor = NULL;
@@ -492,731 +415,49 @@ static int MC_dwarf_get_variable_index(xbt_dynar_t variables, char* var, void *a
 
 }
 
+void MC_dwarf_register_global_variable(mc_object_info_t info, dw_variable_t variable) {
+  int index = MC_dwarf_get_variable_index(info->global_variables, variable->name, variable->address.address);
+  if (index != -1)
+    xbt_dynar_insert_at(info->global_variables, index, &variable);
+  // TODO, else ?
+}
 
-static void MC_dwarf_get_variables(const char *elf_file, xbt_dict_t location_list, xbt_dict_t *local_variables, xbt_dynar_t *global_variables, xbt_dict_t *types){
-
-  char *command = bprintf("objdump -Wi %s", elf_file);
-  
-  FILE *fp = popen(command, "r");
-
-  if(fp == NULL)
-    perror("popen for objdump failed");
-
-  char *line = NULL, *origin, *abstract_origin, *current_frame = NULL, 
-    *subprogram_name = NULL, *subprogram_start = NULL, *subprogram_end = NULL,
-    *node_type = NULL, *location_type = NULL, *variable_name = NULL, 
-    *loc_expr = NULL, *name = NULL, *end =NULL, *type_origin = NULL, *global_address = NULL, 
-    *parent_value = NULL;
-
-  ssize_t read =0;
-  size_t n = 0;
-  int global_variable = 0, parent = 0, new_frame = 0, new_variable = 1, size = 0, 
-    is_pointer = 0, struct_decl = 0, member_end = 0,
-    enumeration_size = 0, subrange = 0, union_decl = 0, offset = 0, index = 0;
-  
-  xbt_dynar_t split = NULL, split2 = NULL;
-
-  xbt_dict_t variables_origin = xbt_dict_new_homogeneous(xbt_free);
-  xbt_dict_t subprograms_origin = xbt_dict_new_homogeneous(xbt_free);
-
-  dw_frame_t variable_frame, subroutine_frame = NULL;
-
-  e_dw_type_type type_type = -1;
-
-  read = xbt_getline(&line, &n, fp);
-
-  while (read != -1) {
-
-    /* Wipeout the new line character */
-    line[read - 1] = '\0';
-  
-    if(n == 0 || strlen(line) == 0){
-      read = xbt_getline(&line, &n, fp);
-      continue;
-    }
-
-    xbt_str_ltrim(line, NULL);
-    xbt_str_strip_spaces(line);
-    
-    if(line[0] != '<'){
-      read = xbt_getline(&line, &n, fp);
-      continue;
-    }
-    
-    xbt_dynar_free(&split);
-    split = xbt_str_split(line, " ");
-
-    /* Get node type */
-    node_type = xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *);
-
-    if(strcmp(node_type, "(DW_TAG_subprogram)") == 0){ /* New frame */
-
-      dw_frame_t frame = NULL;
-
-      strtok(xbt_dynar_get_as(split, 0, char *), "<");
-      subprogram_start = xbt_strdup(strtok(NULL, "<"));
-      xbt_str_rtrim(subprogram_start, ">:");
-
-      read = xbt_getline(&line, &n, fp);
-   
-      while(read != -1){
-
-        /* Wipeout the new line character */
-        line[read - 1] = '\0';
-
-        if(n == 0 || strlen(line) == 0){
-          read = xbt_getline(&line, &n, fp);
-          continue;
-        }
-        
-        xbt_dynar_free(&split);
-        xbt_str_rtrim(line, NULL);
-        xbt_str_strip_spaces(line);
-        split = xbt_str_split(line, " ");
-          
-        node_type = xbt_dynar_get_as(split, 1, char *);
-
-        if(strncmp(node_type, "DW_AT_", 6) != 0)
-          break;
-
-        if(strcmp(node_type, "DW_AT_sibling") == 0){
-
-          subprogram_end = xbt_strdup(xbt_dynar_get_as(split, 3, char*));
-          xbt_str_ltrim(subprogram_end, "<0x");
-          xbt_str_rtrim(subprogram_end, ">");
-          
-        }else if(strcmp(node_type, "DW_AT_abstract_origin:") == 0){ /* Frame already in dict */
-          
-          new_frame = 0;
-          abstract_origin = xbt_strdup(xbt_dynar_get_as(split, 2, char*));
-          xbt_str_ltrim(abstract_origin, "<0x");
-          xbt_str_rtrim(abstract_origin, ">");
-          subprogram_name = (char *)xbt_dict_get_or_null(subprograms_origin, abstract_origin);
-          frame = xbt_dict_get_or_null(*local_variables, subprogram_name); 
-          xbt_free(abstract_origin);
-
-        }else if(strcmp(node_type, "DW_AT_name") == 0){
-
-          new_frame = 1;
-          xbt_free(current_frame);
-          frame = xbt_new0(s_dw_frame_t, 1);
-          frame->name = strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *)); 
-          frame->variables = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
-          frame->frame_base = xbt_new0(s_dw_location_t, 1); 
-          current_frame = strdup(frame->name);
-
-          xbt_dict_set(subprograms_origin, subprogram_start, xbt_strdup(frame->name), NULL);
-        
-        }else if(strcmp(node_type, "DW_AT_frame_base") == 0){
-
-          location_type = xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *);
-
-          if(strcmp(location_type, "list)") == 0){ /* Search location in location list */
-
-            frame->frame_base = MC_dwarf_get_location(location_list, xbt_dynar_get_as(split, 3, char *));
-             
-          }else{
-                
-            xbt_str_strip_spaces(line);
-            split2 = xbt_str_split(line, "(");
-            xbt_dynar_remove_at(split2, 0, NULL);
-            loc_expr = xbt_str_join(split2, " ");
-            xbt_str_rtrim(loc_expr, ")");
-            frame->frame_base = MC_dwarf_get_location(NULL, loc_expr);
-            xbt_dynar_free(&split2);
-            xbt_free(loc_expr);
-
-          }
-        }else if(strcmp(node_type, "DW_AT_low_pc") == 0){
-          
-          if(frame != NULL)
-            frame->low_pc = (void *)strtoul(xbt_dynar_get_as(split, 3, char *), NULL, 16);
-
-        }else if(strcmp(node_type, "DW_AT_high_pc") == 0){
-
-          if(frame != NULL)
-            frame->high_pc = (void *)strtoul(xbt_dynar_get_as(split, 3, char *), NULL, 16);
-
-        }else if(strcmp(node_type, "DW_AT_MIPS_linkage_name:") == 0){
-
-          xbt_free(frame->name);
-          xbt_free(current_frame);
-          frame->name = strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *));   
-          current_frame = strdup(frame->name);
-          xbt_dict_set(subprograms_origin, subprogram_start, xbt_strdup(frame->name), NULL);
-
-        }
-
-        read = xbt_getline(&line, &n, fp);
-
-      }
-      if(new_frame == 1){
-        frame->start = strtoul(subprogram_start, NULL, 16);
-        if(subprogram_end != NULL)
-          frame->end = strtoul(subprogram_end, NULL, 16);
-        xbt_dict_set(*local_variables, frame->name, frame, NULL);
-      }
-
-      xbt_free(subprogram_start);
-      xbt_free(subprogram_end);
-      subprogram_end = NULL;
-        
-
-    }else if(strcmp(node_type, "(DW_TAG_variable)") == 0){ /* New variable */
-
-      dw_variable_t var = NULL;
-      
-      parent_value = strdup(xbt_dynar_get_as(split, 0, char *));
-      parent_value = strtok(parent_value,"<");
-      xbt_str_rtrim(parent_value, ">");
-      parent = atoi(parent_value);
-      xbt_free(parent_value);
-
-      if(parent == 1)
-        global_variable = 1;
-    
-      strtok(xbt_dynar_get_as(split, 0, char *), "<");
-      origin = xbt_strdup(strtok(NULL, "<"));
-      xbt_str_rtrim(origin, ">:");
-      
-      read = xbt_getline(&line, &n, fp);
-      
-      while(read != -1){
-
-        /* Wipeout the new line character */
-        line[read - 1] = '\0'; 
-
-        if(n == 0 || strlen(line) == 0){
-          read = xbt_getline(&line, &n, fp);
-          continue;
-        }
-    
-        xbt_dynar_free(&split);
-        xbt_str_rtrim(line, NULL);
-        xbt_str_strip_spaces(line);
-        split = xbt_str_split(line, " ");
-  
-        node_type = xbt_dynar_get_as(split, 1, char *);
-
-        if(strncmp(node_type, "DW_AT_", 6) != 0)
-          break;
-
-        if(strcmp(node_type, "DW_AT_name") == 0){
-
-          var = xbt_new0(s_dw_variable_t, 1);
-          var->name = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *));
-          xbt_dict_set(variables_origin, origin, xbt_strdup(var->name), NULL);
-         
-        }else if(strcmp(node_type, "DW_AT_abstract_origin:") == 0){
-
-          new_variable = 0;
-
-          abstract_origin = xbt_dynar_get_as(split, 2, char *);
-          xbt_str_ltrim(abstract_origin, "<0x");
-          xbt_str_rtrim(abstract_origin, ">");
-          
-          variable_name = (char *)xbt_dict_get_or_null(variables_origin, abstract_origin);
-          variable_frame = MC_dwarf_get_frame_by_offset(*local_variables, strtoul(abstract_origin, NULL, 16));
-          var = MC_dwarf_get_variable_by_name(variable_frame, variable_name); 
-
-        }else if(strcmp(node_type, "DW_AT_location") == 0){
-
-          if(var != NULL){
-
-            if(!global_variable){
-
-              location_type = xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *);
-
-              if(strcmp(location_type, "list)") == 0){ /* Search location in location list */
-                var->address.location = MC_dwarf_get_location(location_list, xbt_dynar_get_as(split, 3, char *));
-              }else{
-                xbt_str_strip_spaces(line);
-                split2 = xbt_str_split(line, "(");
-                xbt_dynar_remove_at(split2, 0, NULL);
-                loc_expr = xbt_str_join(split2, " ");
-                xbt_str_rtrim(loc_expr, ")");
-                if(strncmp("DW_OP_addr", loc_expr, 10) == 0){
-                  global_variable = 1;
-                  xbt_dynar_free(&split2);
-                  split2 = xbt_str_split(loc_expr, " ");
-                  if(strcmp(elf_file, xbt_binary_name) != 0)
-                    var->address.address = (char *)start_text_libsimgrid + (long)((void *)strtoul(xbt_dynar_get_as(split2, xbt_dynar_length(split2) - 1, char*), NULL, 16));
-                  else
-                    var->address.address = (void *)strtoul(xbt_dynar_get_as(split2, xbt_dynar_length(split2) - 1, char*), NULL, 16);
-                }else{
-                  var->address.location = MC_dwarf_get_location(NULL, loc_expr);
-                }
-                xbt_dynar_free(&split2);
-                xbt_free(loc_expr);
-              }
-            }else{
-              global_address = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *));
-              xbt_str_rtrim(global_address, ")");
-              if(strcmp(elf_file, xbt_binary_name) != 0)
-                var->address.address = (char *)start_text_libsimgrid + (long)((void *)strtoul(global_address, NULL, 16));
-              else
-                var->address.address = (void *)strtoul(global_address, NULL, 16);
-              xbt_free(global_address);
-              global_address = NULL;
-            }
-
-          }
-                   
-        }else if(strcmp(node_type, "DW_AT_type") == 0){
-          
-          type_origin = xbt_strdup(xbt_dynar_get_as(split, 3, char *));
-          xbt_str_ltrim(type_origin, "<0x");
-          xbt_str_rtrim(type_origin, ">");
-        
-        }else if(strcmp(node_type, "DW_AT_declaration") == 0){
-
-          new_variable = 0;
-          if(new_variable){
-            dw_variable_free(var);
-            var = NULL;
-          }
-        
-        }else if(strcmp(node_type, "DW_AT_artificial") == 0){
-          
-          new_variable = 0;
-          if(new_variable){
-            dw_variable_free(var);
-            var = NULL;
-          }
-        
-        }
-
-        read = xbt_getline(&line, &n, fp);
-      }
-
-      if(new_variable == 1){
-        
-        if(!global_variable){
-          variable_frame = xbt_dict_get_or_null(*local_variables, current_frame);
-          var->type_origin = strdup(type_origin);
-          var->global = 0;
-          index = MC_dwarf_get_variable_index(variable_frame->variables, var->name, NULL);
-          if(index != -1)
-            xbt_dynar_insert_at(variable_frame->variables, index, &var);
-        }else{
-          var->type_origin = strdup(type_origin);
-          var->global = 1;
-          index = MC_dwarf_get_variable_index(*global_variables, var->name, var->address.address);
-          if(index != -1)
-            xbt_dynar_insert_at(*global_variables, index, &var); 
-        }
-
-         xbt_free(type_origin);
-         type_origin = NULL;
-      }
-
-      global_variable = 0;
-      new_variable = 1;
-
-    }else if(strcmp(node_type, "(DW_TAG_inlined_subroutine)") == 0){
-
-      read = xbt_getline(&line, &n, fp);
-
-      while(read != -1){
-
-        /* Wipeout the new line character */
-        line[read - 1] = '\0'; 
-
-        if(n == 0 || strlen(line) == 0){
-          read = xbt_getline(&line, &n, fp);
-          continue;
-        }
-
-        xbt_dynar_free(&split);
-        xbt_str_rtrim(line, NULL);
-        xbt_str_strip_spaces(line);
-        split = xbt_str_split(line, " ");
-        
-        if(strncmp(xbt_dynar_get_as(split, 1, char *), "DW_AT_", 6) != 0)
-          break;
-          
-        node_type = xbt_dynar_get_as(split, 1, char *);
-
-        if(strcmp(node_type, "DW_AT_abstract_origin:") == 0){
-
-          origin = xbt_dynar_get_as(split, 2, char *);
-          xbt_str_ltrim(origin, "<0x");
-          xbt_str_rtrim(origin, ">");
-          
-          subprogram_name = (char *)xbt_dict_get_or_null(subprograms_origin, origin);
-          subroutine_frame = xbt_dict_get_or_null(*local_variables, subprogram_name);
-        
-        }else if(strcmp(node_type, "DW_AT_low_pc") == 0){
-
-          subroutine_frame->low_pc = (void *)strtoul(xbt_dynar_get_as(split, 3, char *), NULL, 16);
-
-        }else if(strcmp(node_type, "DW_AT_high_pc") == 0){
-
-          subroutine_frame->high_pc = (void *)strtoul(xbt_dynar_get_as(split, 3, char *), NULL, 16);
-        }
-
-        read = xbt_getline(&line, &n, fp);
-      
-      }
-
-    }else if(strcmp(node_type, "(DW_TAG_base_type)") == 0 
-             || strcmp(node_type, "(DW_TAG_enumeration_type)") == 0
-             || strcmp(node_type, "(DW_TAG_enumerator)") == 0
-             || strcmp(node_type, "(DW_TAG_typedef)") == 0
-             || strcmp(node_type, "(DW_TAG_const_type)") == 0
-             || strcmp(node_type, "(DW_TAG_subroutine_type)") == 0
-             || strcmp(node_type, "(DW_TAG_volatile_type)") == 0
-             || (is_pointer = !strcmp(node_type, "(DW_TAG_pointer_type)"))){
-
-      if(strcmp(node_type, "(DW_TAG_base_type)") == 0)
-        type_type = e_dw_base_type;
-      else if(strcmp(node_type, "(DW_TAG_enumeration_type)") == 0)
-        type_type = e_dw_enumeration_type;
-      else if(strcmp(node_type, "(DW_TAG_enumerator)") == 0)
-        type_type = e_dw_enumerator;
-      else if(strcmp(node_type, "(DW_TAG_typedef)") == 0)
-        type_type = e_dw_typedef;
-      else if(strcmp(node_type, "(DW_TAG_const_type)") == 0)
-        type_type = e_dw_const_type;
-      else if(strcmp(node_type, "(DW_TAG_pointer_type)") == 0)
-        type_type = e_dw_pointer_type;
-      else if(strcmp(node_type, "(DW_TAG_subroutine_type)") == 0)
-        type_type = e_dw_subroutine_type;
-      else if(strcmp(node_type, "(DW_TAG_volatile_type)") == 0)
-        type_type = e_dw_volatile_type;
-
-      strtok(xbt_dynar_get_as(split, 0, char *), "<");
-      origin = strdup(strtok(NULL, "<"));
-      xbt_str_rtrim(origin, ">:");
-      
-      read = xbt_getline(&line, &n, fp);
-      
-      while(read != -1){
-        
-         /* Wipeout the new line character */
-        line[read - 1] = '\0'; 
-
-        if(n == 0 || strlen(line) == 0){
-          read = xbt_getline(&line, &n, fp);
-          continue;
-        }
-
-        xbt_dynar_free(&split);
-        xbt_str_rtrim(line, NULL);
-        xbt_str_strip_spaces(line);
-        split = xbt_str_split(line, " ");
-        
-        if(strncmp(xbt_dynar_get_as(split, 1, char *), "DW_AT_", 6) != 0)
-          break;
-
-        node_type = xbt_dynar_get_as(split, 1, char *);
-
-        if(strcmp(node_type, "DW_AT_byte_size") == 0){
-          size = strtol(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL, 10);
-          if(type_type == e_dw_enumeration_type)
-            enumeration_size = size;
-        }else if(strcmp(node_type, "DW_AT_name") == 0){
-          end = xbt_str_join(split, " ");
-          xbt_dynar_free(&split);
-          split = xbt_str_split(end, "):");
-          xbt_str_ltrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL);
-          name = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*));
-        }else if(strcmp(node_type, "DW_AT_type") == 0){
-          type_origin = xbt_strdup(xbt_dynar_get_as(split, 3, char *));
-          xbt_str_ltrim(type_origin, "<0x");
-          xbt_str_rtrim(type_origin, ">");
-        }
-        
-        read = xbt_getline(&line, &n, fp);
-      }
-
-      dw_type_t type = xbt_new0(s_dw_type_t, 1);
-      type->type = type_type;
-      if(name)
-        type->name = xbt_strdup(name);
-      else
-        type->name = xbt_strdup("undefined");
-      type->is_pointer_type = is_pointer;
-      type->id = (void *)strtoul(origin, NULL, 16);
-      if(type_origin)
-        type->dw_type_id = xbt_strdup(type_origin);
-      if(type_type == e_dw_enumerator)
-        type->size = enumeration_size;
-      else
-        type->size = size;
-      type->members = NULL;
-
-      xbt_dict_set(*types, origin, type, NULL); 
-
-      xbt_free(name);
-      name = NULL;
-      xbt_free(type_origin);
-      type_origin = NULL;
-      xbt_free(end);
-      end = NULL;
-
-      is_pointer = 0;
-      size = 0;
-      xbt_free(origin);
-
-    }else if(strcmp(node_type, "(DW_TAG_structure_type)") == 0 || strcmp(node_type, "(DW_TAG_union_type)") == 0){
-      
-      if(strcmp(node_type, "(DW_TAG_structure_type)") == 0)
-        struct_decl = 1;
-      else
-        union_decl = 1;
-
-      strtok(xbt_dynar_get_as(split, 0, char *), "<");
-      origin = strdup(strtok(NULL, "<"));
-      xbt_str_rtrim(origin, ">:");
-      
-      read = xbt_getline(&line, &n, fp);
-
-      dw_type_t type = NULL;
-
-      while(read != -1){
-      
-        while(read != -1){
-        
-          /* Wipeout the new line character */
-          line[read - 1] = '\0'; 
-
-          if(n == 0 || strlen(line) == 0){
-            read = xbt_getline(&line, &n, fp);
-            continue;
-          }
-
-          xbt_dynar_free(&split);
-          xbt_str_rtrim(line, NULL);
-          xbt_str_strip_spaces(line);
-          split = xbt_str_split(line, " ");
-        
-          node_type = xbt_dynar_get_as(split, 1, char *);
-
-          if(strncmp(node_type, "DW_AT_", 6) != 0){
-            member_end = 1;
-            break;
-          }
-
-          if(strcmp(node_type, "DW_AT_byte_size") == 0){
-            size = strtol(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL, 10);
-          }else if(strcmp(node_type, "DW_AT_name") == 0){
-            xbt_free(end);
-            end = xbt_str_join(split, " ");
-            xbt_dynar_free(&split);
-            split = xbt_str_split(end, "):");
-            xbt_str_ltrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL);
-            name = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*));
-          }else if(strcmp(node_type, "DW_AT_type") == 0){
-            type_origin = xbt_strdup(xbt_dynar_get_as(split, 3, char *));
-            xbt_str_ltrim(type_origin, "<0x");
-            xbt_str_rtrim(type_origin, ">");
-          }else if(strcmp(node_type, "DW_AT_data_member_location:") == 0){
-            xbt_free(end);
-            end = xbt_str_join(split, " ");
-            xbt_dynar_free(&split);
-            split = xbt_str_split(end, "DW_OP_plus_uconst:");
-            xbt_str_ltrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), NULL);
-            xbt_str_rtrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), ")");
-            offset = strtol(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL, 10);
-          }
-
-          read = xbt_getline(&line, &n, fp);
-          
-        }
-
-        if(member_end && type){         
-          member_end = 0;
-          
-          dw_type_t member_type = xbt_new0(s_dw_type_t, 1);
-          member_type->name = xbt_strdup(name);
-          member_type->size = size;
-          member_type->is_pointer_type = is_pointer;
-          member_type->id = (void *)strtoul(origin, NULL, 16);
-          member_type->offset = offset;
-          if(type_origin)
-            member_type->dw_type_id = xbt_strdup(type_origin);
-
-          xbt_dynar_push(type->members, &member_type);
-
-          xbt_free(name);
-          name = NULL;
-          xbt_free(end);
-          end = NULL;
-          xbt_free(type_origin);
-          type_origin = NULL;
-          size = 0;
-          offset = 0;
-
-          xbt_free(origin);
-          origin = NULL;
-          strtok(xbt_dynar_get_as(split, 0, char *), "<");
-          origin = strdup(strtok(NULL, "<"));
-          xbt_str_rtrim(origin, ">:");
-
-        }
-
-        if(struct_decl || union_decl){
-          type = xbt_new0(s_dw_type_t, 1);
-          if(struct_decl)
-            type->type = e_dw_structure_type;
-          else
-            type->type = e_dw_union_type;
-          type->name = xbt_strdup(name);
-          type->size = size;
-          type->is_pointer_type = is_pointer;
-          type->id = (void *)strtoul(origin, NULL, 16);
-          if(type_origin)
-            type->dw_type_id = xbt_strdup(type_origin);
-          type->members = xbt_dynar_new(sizeof(dw_type_t), dw_type_free_voidp);
-          
-          xbt_dict_set(*types, origin, type, NULL); 
-          
-          xbt_free(name);
-          name = NULL;
-          xbt_free(end);
-          end = NULL;
-          xbt_free(type_origin);
-          type_origin = NULL;
-          size = 0;
-          struct_decl = 0;
-          union_decl = 0;
-
-        }
-
-        if(strcmp(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), "(DW_TAG_member)") != 0)
-          break;  
-
-        read = xbt_getline(&line, &n, fp);
-    
-      }
-
-      xbt_free(origin);
-      origin = NULL;
-
-    }else if(strcmp(node_type, "(DW_TAG_array_type)") == 0){
-      
-      strtok(xbt_dynar_get_as(split, 0, char *), "<");
-      origin = strdup(strtok(NULL, "<"));
-      xbt_str_rtrim(origin, ">:");
-      
-      read = xbt_getline(&line, &n, fp);
-
-      dw_type_t type = NULL;
-
-      while(read != -1){
-      
-        while(read != -1){
-        
-          /* Wipeout the new line character */
-          line[read - 1] = '\0'; 
-
-          if(n == 0 || strlen(line) == 0){
-            read = xbt_getline(&line, &n, fp);
-            continue;
-          }
-
-          xbt_dynar_free(&split);
-          xbt_str_rtrim(line, NULL);
-          xbt_str_strip_spaces(line);
-          split = xbt_str_split(line, " ");
-        
-          node_type = xbt_dynar_get_as(split, 1, char *);
-
-          if(strncmp(node_type, "DW_AT_", 6) != 0)
-            break;
-
-          if(strcmp(node_type, "DW_AT_upper_bound") == 0){
-            size = strtol(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL, 10);
-          }else if(strcmp(node_type, "DW_AT_name") == 0){
-            end = xbt_str_join(split, " ");
-            xbt_dynar_free(&split);
-            split = xbt_str_split(end, "):");
-            xbt_str_ltrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL);
-            name = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*));
-          }else if(strcmp(node_type, "DW_AT_type") == 0){
-            type_origin = xbt_strdup(xbt_dynar_get_as(split, 3, char *));
-            xbt_str_ltrim(type_origin, "<0x");
-            xbt_str_rtrim(type_origin, ">");
-          }
-
-          read = xbt_getline(&line, &n, fp);
-          
-        }
-
-        if(strcmp(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), "(DW_TAG_subrange_type)") == 0){
-          subrange = 1;         
-        }
-
-        if(subrange && type){         
-          type->size = size;
-      
-          xbt_free(name);
-          name = NULL;
-          xbt_free(end);
-          end = NULL;
-          xbt_free(type_origin);
-          type_origin = NULL;
-          size = 0;
-
-          xbt_free(origin);
-          origin = NULL;
-          strtok(xbt_dynar_get_as(split, 0, char *), "<");
-          origin = strdup(strtok(NULL, "<"));
-          xbt_str_rtrim(origin, ">:");
-
-        }else {
-          
-          type = xbt_new0(s_dw_type_t, 1);
-          type->type = e_dw_array_type;
-          type->name = xbt_strdup(name);
-          type->is_pointer_type = is_pointer;
-          type->id = (void *)strtoul(origin, NULL, 16);
-          if(type_origin)
-            type->dw_type_id = xbt_strdup(type_origin);
-          type->members = NULL;
-          
-          xbt_dict_set(*types, origin, type, NULL); 
-          
-          xbt_free(name);
-          name = NULL;
-          xbt_free(end);
-          end = NULL;
-          xbt_free(type_origin);
-          type_origin = NULL;
-          size = 0;
-        }
-
-        if(strcmp(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), "(DW_TAG_subrange_type)") != 0)
-          break;  
-
-        read = xbt_getline(&line, &n, fp);
-    
-      }
-
-      xbt_free(origin);
-      origin = NULL;
-
-    }else{
-
-      read = xbt_getline(&line, &n, fp);
+void MC_dwarf_register_non_global_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable) {
+  xbt_assert(frame, "Frame is NULL");
+  int index = MC_dwarf_get_variable_index(frame->variables, variable->name, NULL);
+  if (index != -1)
+    xbt_dynar_insert_at(frame->variables, index, &variable);
+  // TODO, else ?
+}
 
-    }
+void MC_dwarf_register_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable) {
+  if(variable->global)
+    MC_dwarf_register_global_variable(info, variable);
+  else if(frame==NULL)
+    xbt_die("No frame for this local variable");
+  else
+    MC_dwarf_register_non_global_variable(info, frame, variable);
+}
 
+static void MC_post_process_array_size(mc_object_info_t info, dw_type_t type) {
+  xbt_assert(type->dw_type_id, "No base type for array <%p>%s", type->id, type->name);
+  dw_type_t subtype = xbt_dict_get_or_null(info->types, type->dw_type_id);
+  xbt_assert(subtype, "Unkown base type <%s> for array <%p>%s", type->dw_type_id, type->id, type->name);
+  if(subtype->type==DW_TAG_array_type && type->byte_size==0) {
+         MC_post_process_array_size(info, subtype);
   }
-  
-  xbt_dynar_free(&split);
-  xbt_dict_free(&variables_origin);
-  xbt_dict_free(&subprograms_origin);
-  xbt_free(line);
-  xbt_free(command);
-  pclose(fp);
-  
+  type->byte_size = type->element_count*subtype->byte_size;
 }
 
+static void MC_post_process_types(mc_object_info_t info) {
+  xbt_dict_cursor_t cursor;
+  char *origin;
+  dw_type_t type;
+  xbt_dict_foreach(info->types, cursor, origin, type){
+    if(type->type==DW_TAG_array_type && type->byte_size==0)
+      MC_post_process_array_size(info, type);
+  }
+}
 
 /*******************************  Ignore mechanism *******************************/
 /*********************************************************************************/
@@ -1375,20 +616,20 @@ void MC_ignore_global_variable(const char *name){
 
   MC_SET_RAW_MEM;
 
-  if(mc_global_variables_libsimgrid){
+  if(mc_libsimgrid_info){
 
     unsigned int cursor = 0;
     dw_variable_t current_var;
     int start = 0;
-    int end = xbt_dynar_length(mc_global_variables_libsimgrid) - 1;
+    int end = xbt_dynar_length(mc_libsimgrid_info->global_variables) - 1;
 
     while(start <= end){
       cursor = (start + end) /2;
-      current_var = (dw_variable_t)xbt_dynar_get_as(mc_global_variables_libsimgrid, cursor, dw_variable_t);
+      current_var = (dw_variable_t)xbt_dynar_get_as(mc_libsimgrid_info->global_variables, cursor, dw_variable_t);
       if(strcmp(current_var->name, name) == 0){
-        xbt_dynar_remove_at(mc_global_variables_libsimgrid, cursor, NULL);
+        xbt_dynar_remove_at(mc_libsimgrid_info->global_variables, cursor, NULL);
         start = 0;
-        end = xbt_dynar_length(mc_global_variables_libsimgrid) - 1;
+        end = xbt_dynar_length(mc_libsimgrid_info->global_variables) - 1;
       }else if(strcmp(current_var->name, name) < 0){
         start = cursor + 1;
       }else{
@@ -1449,7 +690,7 @@ void MC_ignore_local_variable(const char *var_name, const char *frame_name){
 
   MC_SET_RAW_MEM;
 
-  if(mc_local_variables_libsimgrid){
+  if(mc_libsimgrid_info){
     unsigned int cursor = 0;
     dw_variable_t current_var;
     int start, end;
@@ -1457,7 +698,7 @@ void MC_ignore_local_variable(const char *var_name, const char *frame_name){
       xbt_dict_cursor_t dict_cursor;
       char *current_frame_name;
       dw_frame_t frame;
-      xbt_dict_foreach(mc_local_variables_libsimgrid, dict_cursor, current_frame_name, frame){
+      xbt_dict_foreach(mc_libsimgrid_info->local_variables, dict_cursor, current_frame_name, frame){
         start = 0;
         end = xbt_dynar_length(frame->variables) - 1;
         while(start <= end){
@@ -1474,7 +715,7 @@ void MC_ignore_local_variable(const char *var_name, const char *frame_name){
           } 
         }
       }
-       xbt_dict_foreach(mc_local_variables_binary, dict_cursor, current_frame_name, frame){
+       xbt_dict_foreach(mc_binary_info->local_variables, dict_cursor, current_frame_name, frame){
         start = 0;
         end = xbt_dynar_length(frame->variables) - 1;
         while(start <= end){
@@ -1492,7 +733,8 @@ void MC_ignore_local_variable(const char *var_name, const char *frame_name){
         }
       }
     }else{
-      xbt_dynar_t variables_list = ((dw_frame_t)xbt_dict_get_or_null(mc_local_variables_libsimgrid, frame_name))->variables;
+      xbt_dynar_t variables_list = ((dw_frame_t)xbt_dict_get_or_null(
+                                      mc_libsimgrid_info->local_variables, frame_name))->variables;
       start = 0;
       end = xbt_dynar_length(variables_list) - 1;
       while(start <= end){
@@ -1689,10 +931,24 @@ static void MC_dump_ignored_global_variables(void){
 
 }
 
+static void MC_init_debug_info();
+static void MC_init_debug_info() {
+  XBT_INFO("Get debug information ...");
+
+  memory_map_t maps = MC_get_memory_map();
+
+  /* Get local variables for state equality detection */
+  mc_binary_info = MC_find_object_info(maps, xbt_binary_name);
+  mc_libsimgrid_info = MC_find_object_info(maps, libsimgrid_path);
+
+  MC_free_memory_map(maps);
+  XBT_INFO("Get debug information done !");
+}
+
 void MC_init(){
 
   int raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
-  
+
   compare = 0;
 
   /* Initialize the data structures that must be persistent across every
@@ -1701,36 +957,11 @@ void MC_init(){
   MC_SET_RAW_MEM;
 
   MC_init_memory_map_info();
-  
-  mc_local_variables_libsimgrid = xbt_dict_new_homogeneous(NULL);
-  mc_local_variables_binary = xbt_dict_new_homogeneous(NULL);
-  mc_global_variables_libsimgrid = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
-  mc_global_variables_binary = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
-  mc_variables_type_libsimgrid = xbt_dict_new_homogeneous(NULL);
-  mc_variables_type_binary = xbt_dict_new_homogeneous(NULL);
-
-  XBT_INFO("Get debug information ...");
-
-  /* Get local variables in binary for state equality detection */
-  xbt_dict_t binary_location_list = MC_dwarf_get_location_list(xbt_binary_name);
-  MC_dwarf_get_variables(xbt_binary_name, binary_location_list, &mc_local_variables_binary, &mc_global_variables_binary, &mc_variables_type_binary);
-
-  /* Get local variables in libsimgrid for state equality detection */
-  xbt_dict_t libsimgrid_location_list = MC_dwarf_get_location_list(libsimgrid_path);
-  MC_dwarf_get_variables(libsimgrid_path, libsimgrid_location_list, &mc_local_variables_libsimgrid, &mc_global_variables_libsimgrid, &mc_variables_type_libsimgrid);
-
-  xbt_dict_free(&libsimgrid_location_list);
-  xbt_dict_free(&binary_location_list);
-
-  XBT_INFO("Get debug information done !");
+  MC_init_debug_info();
 
   /* Remove variables ignored before getting list of variables */
   MC_dump_ignored_local_variables();
   MC_dump_ignored_global_variables();
-  
-  /* Get .plt section (start and end addresses) for data libsimgrid and data program comparison */
-  MC_get_libsimgrid_plt_section();
-  MC_get_binary_plt_section();
 
    /* Init parmap */
   parmap = xbt_parmap_mc_new(xbt_os_get_numcores(), XBT_PARMAP_DEFAULT);
@@ -1865,8 +1096,7 @@ void MC_modelcheck_safety(void)
   }else{
     MC_SET_RAW_MEM;
     MC_init_memory_map_info();
-    MC_get_libsimgrid_plt_section();
-    MC_get_binary_plt_section();
+    MC_init_debug_info();
     MC_UNSET_RAW_MEM;
   }
 
@@ -1933,6 +1163,7 @@ void MC_modelcheck_liveness(){
 void MC_exit(void)
 {
   xbt_free(mc_time);
+
   MC_memory_exit();
   //xbt_abort();
 }
index b10c810..110b848 100644 (file)
@@ -39,6 +39,9 @@ void MC_memory_init()
 #include "xbt_modinter.h"
 void MC_memory_exit(void)
 {
+  MC_free_object_info(&mc_binary_info);
+  MC_free_object_info(&mc_libsimgrid_info);
+
   if (raw_heap)
     xbt_mheap_destroy(raw_heap);
 }
index e43b409..7fe3f6b 100644 (file)
@@ -12,6 +12,8 @@
 #ifndef WIN32
 #include <sys/mman.h>
 #endif
+#include <elfutils/libdw.h>
+
 #include "mc/mc.h"
 #include "mc/datatypes.h"
 #include "xbt/fifo.h"
@@ -221,25 +223,8 @@ typedef struct s_memory_map {
 void MC_init_memory_map_info(void);
 memory_map_t MC_get_memory_map(void);
 void MC_free_memory_map(memory_map_t map);
-void MC_get_libsimgrid_plt_section(void);
-void MC_get_binary_plt_section(void);
 
-extern void *start_data_libsimgrid;
-extern void *start_data_binary;
-extern void *start_bss_binary;
 extern char *libsimgrid_path;
-extern void *start_text_libsimgrid;
-extern void *start_text_binary;
-extern void *start_bss_libsimgrid;
-extern void *start_plt_libsimgrid;
-extern void *end_plt_libsimgrid;
-extern void *start_plt_binary;
-extern void *end_plt_binary;
-extern void *start_got_plt_libsimgrid;
-extern void *end_got_plt_libsimgrid;
-extern void *start_got_plt_binary;
-extern void *end_got_plt_binary;
-
 
 /********************************** Snapshot comparison **********************************/
 
@@ -336,12 +321,27 @@ void MC_dump_stack_liveness(xbt_fifo_t stack);
 
 /********************************** Variables with DWARF **********************************/
 
-extern xbt_dict_t mc_local_variables_libsimgrid;
-extern xbt_dict_t mc_local_variables_binary;
-extern xbt_dynar_t mc_global_variables_libsimgrid;
-extern xbt_dynar_t mc_global_variables_binary;
-extern xbt_dict_t mc_variables_type_libsimgrid;
-extern xbt_dict_t mc_variables_type_binary;
+typedef struct s_mc_object_info {
+  char* file_name;
+  char* start_text;
+  char* start_data;
+  char* start_bss;
+  xbt_dict_t local_variables; // xbt_dict_t<frame_name, dw_frame_t>
+  xbt_dynar_t global_variables; // xbt_dynar_t<dw_variable_t>
+  xbt_dict_t types; // xbt_dict_t<origin as hexadecimal string, dw_type_t>
+} s_mc_object_info_t, *mc_object_info_t;
+
+mc_object_info_t MC_new_object_info(void);
+mc_object_info_t MC_find_object_info(memory_map_t maps, char* name);
+void MC_free_object_info(mc_object_info_t* p);
+
+void MC_dwarf_get_variables(mc_object_info_t info);
+void MC_dwarf_get_variables_libdw(mc_object_info_t info);
+const char* MC_dwarf_attrname(int attr);
+const char* MC_dwarf_tagname(int tag);
+
+extern mc_object_info_t mc_libsimgrid_info;
+extern mc_object_info_t mc_binary_info;
 
 typedef enum {
   e_dw_loclist,
@@ -406,12 +406,13 @@ typedef struct s_dw_location_entry{
 }s_dw_location_entry_t, *dw_location_entry_t;
 
 typedef struct s_dw_variable{
+  Dwarf_Off dwarf_offset; /* Global offset of the field. */
   int global;
   char *name;
   char *type_origin;
   union{
-    dw_location_t location;
-    void *address;
+    dw_location_t location; // For global==0
+    void *address; // For global!=0
   }address;
 }s_dw_variable_t, *dw_variable_t;
 
@@ -420,11 +421,24 @@ typedef struct s_dw_frame{
   void *low_pc;
   void *high_pc;
   dw_location_t frame_base;
-  xbt_dynar_t variables; /* Cannot use dict, there may be several variables with the same name (in different lexical blocks)*/
-  unsigned long int start;
-  unsigned long int end;
+  xbt_dynar_t /* <dw_variable_t> */ variables; /* Cannot use dict, there may be several variables with the same name (in different lexical blocks)*/
+  unsigned long int start; /* DWARF offset of the subprogram */
+  unsigned long int end;   /* Dwarf offset of the next sibling */
 }s_dw_frame_t, *dw_frame_t;
 
+void dw_type_free(dw_type_t t);
+void dw_variable_free(dw_variable_t v);
+void dw_variable_free_voidp(void *t);
+
+void MC_dwarf_register_global_variable(mc_object_info_t info, dw_variable_t variable);
+void MC_register_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable);
+void MC_dwarf_register_non_global_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable);
+void MC_dwarf_register_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable);
+
+/********************************** DWARF **********************************/
+
+Dwarf_Off MC_dwarf_resolve_location(unw_cursor_t* c, dw_location_t location, void* frame_pointer_address);
+
 /********************************** Miscellaneous **********************************/
 
 typedef struct s_local_variable{
index dc6cae3..cb2018a 100644 (file)
@@ -191,6 +191,37 @@ xbt_dict_t MSG_file_ls(const char *mount, const char *path)
   return simcall_file_ls(mount, path);
 }
 
+/*
+ * Move a file to another location. Depending on the values of dest, dest, mount,
+ * and fullname, this move can be local or remote and, within a host, on the same
+ * mounted disk or between mounted disks.
+ *
+ */
+msg_error_t MSG_file_move (msg_file_t fd, msg_host_t dest, char* mount, char* fullname)
+{
+  THROW_UNIMPLEMENTED;
+  return MSG_OK;
+}
+
+/*
+ * Set the file position indicator in the msg_file_t by adding offset bytes
+ * to the position specified by whence (either SEEK_SET, SEEK_CUR, or SEEK_END).
+ */
+msg_error_t MSG_file_seek (msg_file_t fd, sg_storage_size_t offset, int whence)
+{
+  THROW_UNIMPLEMENTED;
+  return MSG_OK;
+}
+
+/*
+ * Rename the file in the contents of its associated storage.
+ */
+msg_error_t MSG_file_rename (msg_file_t fd, char* new_name)
+{
+  THROW_UNIMPLEMENTED;
+  return MSG_OK;
+}
+
 /********************************* Storage **************************************/
 
 /** @addtogroup msg_storage_management
@@ -199,8 +230,6 @@ xbt_dict_t MSG_file_ls(const char *mount, const char *path)
  *
  */
 
-
-/* TODO: PV: to comment */
 msg_storage_t __MSG_storage_create(smx_storage_t storage)
 {
   const char *name = SIMIX_storage_get_name(storage);
@@ -340,3 +369,4 @@ sg_storage_size_t MSG_storage_get_size(msg_storage_t storage)
 {
   return SIMIX_storage_get_size(storage);
 }
+
index 287cb9c..87b0c9d 100644 (file)
@@ -275,10 +275,9 @@ xbt_dynar_t SD_daxload(const char *filename)
   xbt_dynar_push(result, &root_task);
   end_task = SD_task_create_comp_seq("end", NULL, 0);
 
-  _XBT_GNUC_UNUSED int res;
-  res = dax_lex();
-  xbt_assert(!res, "Parse error in %s: %s", filename,
-              dax__parse_err_msg());
+  int res = dax_lex();
+  if (res != 0)
+    xbt_die("Parse error in %s: %s", filename, dax__parse_err_msg());
   dax__delete_buffer(input_buffer);
   fclose(in_file);
   dax_lex_destroy();
index 5b8a406..b812c87 100644 (file)
@@ -55,6 +55,9 @@ static void sg_config_cmd_line(int *argc, char **argv)
 
       xbt_cfg_set_parse(_sg_cfg_set, opt);
       XBT_DEBUG("Did apply '%s' as config setting", opt);
+    } else if (!strcmp(argv[i], "--version")) {
+      printf("%s\n", SIMGRID_VERSION_STRING);
+      shall_exit = 1;
     } else if (!strcmp(argv[i], "--cfg-help") || !strcmp(argv[i], "--help")) {
       printf
           ("Description of the configuration accepted by this simulator:\n");
@@ -71,6 +74,8 @@ static void sg_config_cmd_line(int *argc, char **argv)
 #endif
 "\n"
 "You can also use --help-logs and --help-log-categories to see the details of logging output.\n"
+"\n"
+"You can also use --version to get SimGrid version information.\n"
 "\n"
         );
       shall_exit = 1;
@@ -611,12 +616,12 @@ void sg_config_init(int *argc, char **argv)
             "Context factory to use in SIMIX. Possible values: thread");
     const char *dflt_ctx_fact = "thread";
 #ifdef CONTEXT_UCONTEXT
-    strcat(description, ", ucontext");
     dflt_ctx_fact = "ucontext";
+    strcat(strcat(description, ", "), dflt_ctx_fact);
 #endif
 #ifdef HAVE_RAWCTX
-    strcat(description, ", raw");
     dflt_ctx_fact = "raw";
+    strcat(strcat(description, ", "), dflt_ctx_fact);
 #endif
     strcat(description, ".");
     xbt_cfg_register(&_sg_cfg_set, "contexts/factory", description,
@@ -628,6 +633,8 @@ void sg_config_init(int *argc, char **argv)
                      "Stack size of contexts in Kib",
                      xbt_cfgelm_int, 1, 1, _sg_cfg_cb_context_stack_size, NULL);
     xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/stack_size", 128);
+    /* No, it was not set yet (the above setdefault() changed this to 1). */
+    smx_context_stack_size_was_set = 0;
 
     /* number of parallel threads for user processes */
     xbt_cfg_register(&_sg_cfg_set, "contexts/nthreads",
@@ -696,7 +703,7 @@ void sg_config_init(int *argc, char **argv)
     xbt_cfg_setdefault_boolean(_sg_cfg_set, "smpi/use_shared_malloc", "yes");
 
     xbt_cfg_register(&_sg_cfg_set, "smpi/cpu_threshold",
-                     "Minimal computation time (in seconds) not discarded.",
+                     "Minimal computation time (in seconds) not discarded, or -1 for infinity.",
                      xbt_cfgelm_double, 1, 1, NULL, NULL);
     xbt_cfg_setdefault_double(_sg_cfg_set, "smpi/cpu_threshold", 1e-6);
 
index e638bb7..707cf77 100644 (file)
@@ -127,7 +127,7 @@ XBT_INLINE int SIMIX_context_get_nthreads(void) {
  *
  * \param nb_threads the number of threads to use
  */
-XBT_INLINE void SIMIX_context_set_nthreads(int nb_threads) {
+void SIMIX_context_set_nthreads(int nb_threads) {
   if (nb_threads<=0) {  
      nb_threads = xbt_os_get_numcores();
      XBT_INFO("Auto-setting contexts/nthreads to %d",nb_threads);
index 0cb33eb..7f9689a 100644 (file)
@@ -26,6 +26,7 @@ static smx_action_t SIMIX_fifo_get_comm(xbt_fifo_t fifo, e_smx_comm_type_t type,
                                         int (*match_fun)(void *, void *,smx_action_t),
                                         void *user_data, smx_action_t my_action);
 static void SIMIX_rdv_free(void *data);
+static void SIMIX_comm_start(smx_action_t action);
 
 void SIMIX_network_init(void)
 {
@@ -835,7 +836,7 @@ void SIMIX_waitany_remove_simcall_from_actions(smx_simcall_t simcall)
  *  \brief Starts the simulation of a communication action.
  *  \param action the communication action
  */
-XBT_INLINE void SIMIX_comm_start(smx_action_t action)
+static XBT_INLINE void SIMIX_comm_start(smx_action_t action)
 {
   /* If both the sender and the receiver are already there, start the communication */
   if (action->state == SIMIX_READY) {
index 72bcffa..fecdd3e 100644 (file)
@@ -34,7 +34,6 @@ int SIMIX_rdv_comm_count_by_host(smx_rdv_t rdv, smx_host_t host);
 smx_action_t SIMIX_rdv_get_head(smx_rdv_t rdv);
 void SIMIX_rdv_set_receiver(smx_rdv_t rdv, smx_process_t proc);
 smx_process_t SIMIX_rdv_get_receiver(smx_rdv_t rdv);
-void SIMIX_comm_start(smx_action_t action);
 smx_action_t SIMIX_comm_isend(smx_process_t src_proc, smx_rdv_t rdv,
                               double task_size, double rate,
                               void *src_buff, size_t src_buff_size,
index b511fb9..3bbad64 100644 (file)
@@ -15,10 +15,7 @@ int smpi_coll_tuned_allgather_SMP_NTS(void *sbuf, int scount,
   rextent = smpi_datatype_get_extent(rtype);
   sextent = smpi_datatype_get_extent(stype);
   int tag = COLL_TAG_ALLGATHER;
-  MPI_Request request;
-  MPI_Request rrequest_array[128];
 
-  MPI_Status status;
   int i, send_offset, recv_offset;
   int intra_rank, inter_rank;
   intra_rank = rank % NUM_CORE;
@@ -41,7 +38,7 @@ int smpi_coll_tuned_allgather_SMP_NTS(void *sbuf, int scount,
   recv_offset = rank * rextent * rcount;
   smpi_mpi_sendrecv(sbuf, scount, stype, rank, tag,
                ((char *) rbuf + recv_offset), rcount, rtype, rank, tag, comm,
-               &status);
+               MPI_STATUS_IGNORE);
 
   //gather to root of each SMP
 
@@ -57,7 +54,7 @@ int smpi_coll_tuned_allgather_SMP_NTS(void *sbuf, int scount,
 
     smpi_mpi_sendrecv(sbuf, scount, stype, dst, tag,
                  ((char *) rbuf + recv_offset), rcount, rtype, src, tag, comm,
-                 &status);
+                 MPI_STATUS_IGNORE);
 
   }
 
@@ -67,6 +64,9 @@ int smpi_coll_tuned_allgather_SMP_NTS(void *sbuf, int scount,
 
   // root of each SMP
   if (intra_rank == 0) {
+    MPI_Request *rrequest_array = xbt_new(MPI_Request, inter_comm_size - 1);
+    MPI_Request *srequest_array = xbt_new(MPI_Request, inter_comm_size - 1);
+
     src = ((inter_rank - 1 + inter_comm_size) % inter_comm_size) * NUM_CORE;
     dst = ((inter_rank + 1) % inter_comm_size) * NUM_CORE;
 
@@ -75,27 +75,28 @@ int smpi_coll_tuned_allgather_SMP_NTS(void *sbuf, int scount,
       recv_offset =
           ((inter_rank - i - 1 +
             inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
-      rrequest_array[i] = smpi_mpi_irecv((char *)rbuf+recv_offset, rcount * NUM_CORE, rtype, src, tag+i, comm);
+      rrequest_array[i] = smpi_mpi_irecv((char *)rbuf + recv_offset, rcount * NUM_CORE,
+                                         rtype, src, tag + i, comm);
     }
 
     // send first message
     send_offset =
         ((inter_rank +
           inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
-    smpi_mpi_isend((char *) rbuf + send_offset, scount * NUM_CORE, stype,
-                   dst, tag, comm);
+    srequest_array[0] = smpi_mpi_isend((char *)rbuf + send_offset, scount * NUM_CORE,
+                                       stype, dst, tag, comm);
 
     // loop : recv-inter , send-inter, send-intra (linear-bcast)
     for (i = 0; i < inter_comm_size - 2; i++) {
       recv_offset =
           ((inter_rank - i - 1 +
             inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
-      smpi_mpi_wait(&rrequest_array[i], &status);
-      smpi_mpi_isend((char *) rbuf + recv_offset, scount * NUM_CORE, stype,
-                     dst, tag + i + 1, comm);
+      smpi_mpi_wait(&rrequest_array[i], MPI_STATUS_IGNORE);
+      srequest_array[i + 1] = smpi_mpi_isend((char *)rbuf + recv_offset, scount * NUM_CORE,
+                                             stype, dst, tag + i + 1, comm);
       if (num_core_in_current_smp > 1) {
-        request = smpi_mpi_isend((char *) rbuf + recv_offset, scount * NUM_CORE, stype,
-                  (rank + 1), tag + i + 1, comm);
+        smpi_mpi_send((char *)rbuf + recv_offset, scount * NUM_CORE,
+                      stype, (rank + 1), tag + i + 1, comm);
       }
     }
 
@@ -105,11 +106,15 @@ int smpi_coll_tuned_allgather_SMP_NTS(void *sbuf, int scount,
           inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
     //recv_offset = ((inter_rank + 1) % inter_comm_size) * NUM_CORE * sextent * scount;
     //i=inter_comm_size-2;
-    smpi_mpi_wait(&rrequest_array[i], &status);
+    smpi_mpi_wait(&rrequest_array[i], MPI_STATUS_IGNORE);
     if (num_core_in_current_smp > 1) {
-      request = smpi_mpi_isend((char *) rbuf + recv_offset, scount * NUM_CORE, stype,
-                (rank + 1), tag + i + 1, comm);
+      smpi_mpi_send((char *)rbuf + recv_offset, scount * NUM_CORE,
+                                  stype, (rank + 1), tag + i + 1, comm);
     }
+
+    smpi_mpi_waitall(inter_comm_size - 1, srequest_array, MPI_STATUSES_IGNORE);
+    xbt_free(rrequest_array);
+    xbt_free(srequest_array);
   }
   // last rank of each SMP
   else if (intra_rank == (num_core_in_current_smp - 1)) {
@@ -117,9 +122,8 @@ int smpi_coll_tuned_allgather_SMP_NTS(void *sbuf, int scount,
       recv_offset =
           ((inter_rank - i - 1 +
             inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
-      request = smpi_mpi_irecv((char *) rbuf + recv_offset, (rcount * NUM_CORE), rtype,
-                rank - 1, tag + i + 1, comm);
-      smpi_mpi_wait(&request, &status);
+      smpi_mpi_recv((char *) rbuf + recv_offset, (rcount * NUM_CORE), rtype,
+                    rank - 1, tag + i + 1, comm, MPI_STATUS_IGNORE);
     }
   }
   // intermediate rank of each SMP
@@ -128,11 +132,10 @@ int smpi_coll_tuned_allgather_SMP_NTS(void *sbuf, int scount,
       recv_offset =
           ((inter_rank - i - 1 +
             inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
-      request = smpi_mpi_irecv((char *) rbuf + recv_offset, (rcount * NUM_CORE), rtype,
-                rank - 1, tag + i + 1, comm);
-      smpi_mpi_wait(&request, &status);
-      request = smpi_mpi_isend((char *) rbuf + recv_offset, (scount * NUM_CORE), stype,
-                (rank + 1), tag + i + 1, comm);
+      smpi_mpi_recv((char *) rbuf + recv_offset, (rcount * NUM_CORE), rtype,
+                    rank - 1, tag + i + 1, comm, MPI_STATUS_IGNORE);
+      smpi_mpi_send((char *) rbuf + recv_offset, (scount * NUM_CORE), stype,
+                    (rank + 1), tag + i + 1, comm);
     }
   }
 
index 8391807..8094db0 100644 (file)
         /* Short or medium size message and power-of-two no. of processes. Use
-         * recursive doubling algorithm */   
+         * recursive doubling algorithm */
 #include "colls_private.h"
-int smpi_coll_tuned_allgatherv_mpich_rdb ( 
-    void *sendbuf,
-    int sendcount,
-    MPI_Datatype sendtype,
-    void *recvbuf,
-    int *recvcounts,
-    int *displs,
-    MPI_Datatype recvtype,
-    MPI_Comm comm)
+int smpi_coll_tuned_allgatherv_mpich_rdb (
+  void *sendbuf,
+  int sendcount,
+  MPI_Datatype sendtype,
+  void *recvbuf,
+  int *recvcounts,
+  int *displs,
+  MPI_Datatype recvtype,
+  MPI_Comm comm)
 {
-    int        comm_size, rank, j, i;
-    MPI_Status status;
-    MPI_Aint  recvtype_extent, recvtype_true_extent, recvtype_true_lb;
-    int curr_cnt, dst, total_count; 
-    void *tmp_buf;
-    int mask, dst_tree_root, my_tree_root, is_homogeneous, position,  
-        send_offset, recv_offset, last_recv_cnt=0, nprocs_completed, k,
-        offset, tmp_mask, tree_root;
-
-    comm_size = smpi_comm_size(comm);
-    rank = smpi_comm_rank(comm);
-    
-    total_count = 0;
-    for (i=0; i<comm_size; i++)
-        total_count += recvcounts[i];
-
-    if (total_count == 0) return MPI_ERR_COUNT;
-    
-    recvtype_extent=smpi_datatype_get_extent( recvtype);
-
-        is_homogeneous = 1;
-        
-        if (is_homogeneous) {
-            /* need to receive contiguously into tmp_buf because
-               displs could make the recvbuf noncontiguous */
-
-            smpi_datatype_extent(recvtype, &recvtype_true_lb, &recvtype_true_extent);
-
-            tmp_buf= (void*)xbt_malloc(total_count*(max(recvtype_true_extent,recvtype_extent)));
-
-            /* adjust for potential negative lower bound in datatype */
-            tmp_buf = (void *)((char*)tmp_buf - recvtype_true_lb);
-
-            /* copy local data into right location in tmp_buf */ 
-            position = 0;
-            for (i=0; i<rank; i++) position += recvcounts[i];
-            if (sendbuf != MPI_IN_PLACE)
-           {
-                smpi_datatype_copy(sendbuf, sendcount, sendtype,
-                                           ((char *)tmp_buf + position*
-                                            recvtype_extent), 
-                                           recvcounts[rank], recvtype);
-           }
-            else
-           {
-                /* if in_place specified, local data is found in recvbuf */ 
-                smpi_datatype_copy(((char *)recvbuf +
-                                            displs[rank]*recvtype_extent), 
-                                           recvcounts[rank], recvtype,
-                                           ((char *)tmp_buf + position*
-                                            recvtype_extent), 
-                                           recvcounts[rank], recvtype);
+  int        comm_size, rank, j, i;
+  MPI_Status status;
+  MPI_Aint  recvtype_extent, recvtype_true_extent, recvtype_true_lb;
+  int curr_cnt, dst, total_count;
+  void *tmp_buf;
+  int mask, dst_tree_root, my_tree_root, position,
+    send_offset, recv_offset, last_recv_cnt=0, nprocs_completed, k,
+    offset, tmp_mask, tree_root;
+
+  comm_size = smpi_comm_size(comm);
+  rank = smpi_comm_rank(comm);
+
+  total_count = 0;
+  for (i=0; i<comm_size; i++)
+    total_count += recvcounts[i];
+
+  if (total_count == 0) return MPI_ERR_COUNT;
+
+  recvtype_extent=smpi_datatype_get_extent( recvtype);
+
+  /* need to receive contiguously into tmp_buf because
+     displs could make the recvbuf noncontiguous */
+
+  smpi_datatype_extent(recvtype, &recvtype_true_lb, &recvtype_true_extent);
+
+  tmp_buf= (void*)xbt_malloc(total_count*(max(recvtype_true_extent,recvtype_extent)));
+
+  /* adjust for potential negative lower bound in datatype */
+  tmp_buf = (void *)((char*)tmp_buf - recvtype_true_lb);
+
+  /* copy local data into right location in tmp_buf */
+  position = 0;
+  for (i=0; i<rank; i++) position += recvcounts[i];
+  if (sendbuf != MPI_IN_PLACE)
+  {
+    smpi_datatype_copy(sendbuf, sendcount, sendtype,
+                       ((char *)tmp_buf + position*
+                        recvtype_extent),
+                       recvcounts[rank], recvtype);
+  }
+  else
+  {
+    /* if in_place specified, local data is found in recvbuf */
+    smpi_datatype_copy(((char *)recvbuf +
+                        displs[rank]*recvtype_extent),
+                       recvcounts[rank], recvtype,
+                       ((char *)tmp_buf + position*
+                        recvtype_extent),
+                       recvcounts[rank], recvtype);
+  }
+  curr_cnt = recvcounts[rank];
+
+  mask = 0x1;
+  i = 0;
+  while (mask < comm_size) {
+    dst = rank ^ mask;
+
+    /* find offset into send and recv buffers. zero out
+       the least significant "i" bits of rank and dst to
+       find root of src and dst subtrees. Use ranks of
+       roots as index to send from and recv into buffer */
+
+    dst_tree_root = dst >> i;
+    dst_tree_root <<= i;
+
+    my_tree_root = rank >> i;
+    my_tree_root <<= i;
+
+    if (dst < comm_size) {
+      send_offset = 0;
+      for (j=0; j<my_tree_root; j++)
+        send_offset += recvcounts[j];
+
+      recv_offset = 0;
+      for (j=0; j<dst_tree_root; j++)
+        recv_offset += recvcounts[j];
+
+      smpi_mpi_sendrecv(((char *)tmp_buf + send_offset * recvtype_extent),
+                        curr_cnt, recvtype, dst,
+                        COLL_TAG_ALLGATHERV,
+                        ((char *)tmp_buf + recv_offset * recvtype_extent),
+                        total_count - recv_offset, recvtype, dst,
+                        COLL_TAG_ALLGATHERV,
+                        comm, &status);
+      /* for convenience, recv is posted for a bigger amount
+         than will be sent */
+      last_recv_cnt=smpi_mpi_get_count(&status, recvtype);
+      curr_cnt += last_recv_cnt;
     }
-            curr_cnt = recvcounts[rank];
-            
-            mask = 0x1;
-            i = 0;
-            while (mask < comm_size) {
-                dst = rank ^ mask;
-                
-                /* find offset into send and recv buffers. zero out 
-                   the least significant "i" bits of rank and dst to 
-                   find root of src and dst subtrees. Use ranks of 
-                   roots as index to send from and recv into buffer */ 
-                
-                dst_tree_root = dst >> i;
-                dst_tree_root <<= i;
-                
-                my_tree_root = rank >> i;
-                my_tree_root <<= i;
-                
-                if (dst < comm_size) {
-                    send_offset = 0;
-                    for (j=0; j<my_tree_root; j++)
-                        send_offset += recvcounts[j];
-                    
-                    recv_offset = 0;
-                    for (j=0; j<dst_tree_root; j++)
-                        recv_offset += recvcounts[j];
-
-                    smpi_mpi_sendrecv(((char *)tmp_buf + send_offset * recvtype_extent),
-                                                 curr_cnt, recvtype, dst,
-                                                 COLL_TAG_ALLGATHERV,
-                                                 ((char *)tmp_buf + recv_offset * recvtype_extent),
-                                                 total_count - recv_offset, recvtype, dst,
-                                                 COLL_TAG_ALLGATHERV,
-                                                 comm, &status);
-                        /* for convenience, recv is posted for a bigger amount
-                           than will be sent */
-                        last_recv_cnt=smpi_mpi_get_count(&status, recvtype);
-                    curr_cnt += last_recv_cnt;
-                }
-                
-                /* if some processes in this process's subtree in this step
-                   did not have any destination process to communicate with
-                   because of non-power-of-two, we need to send them the
-                   data that they would normally have received from those
-                   processes. That is, the haves in this subtree must send to
-                   the havenots. We use a logarithmic
-                   recursive-halfing algorithm for this. */
-                
-                /* This part of the code will not currently be
-                 executed because we are not using recursive
-                 doubling for non power of two. Mark it as experimental
-                 so that it doesn't show up as red in the coverage
-                 tests. */  
-
-               /* --BEGIN EXPERIMENTAL-- */
-                if (dst_tree_root + mask > comm_size) {
-                    nprocs_completed = comm_size - my_tree_root - mask;
-                    /* nprocs_completed is the number of processes in this
-                       subtree that have all the data. Send data to others
-                       in a tree fashion. First find root of current tree
-                       that is being divided into two. k is the number of
-                       least-significant bits in this process's rank that
-                       must be zeroed out to find the rank of the root */ 
-                    j = mask;
-                    k = 0;
-                    while (j) {
-                        j >>= 1;
-                        k++;
-                    }
-                    k--;
-                    
-                    tmp_mask = mask >> 1;
-                    
-                    while (tmp_mask) {
-                        dst = rank ^ tmp_mask;
-                        
-                        tree_root = rank >> k;
-                        tree_root <<= k;
-                        
-                        /* send only if this proc has data and destination
-                           doesn't have data. at any step, multiple processes
-                           can send if they have the data */
-                        if ((dst > rank) && 
-                            (rank < tree_root + nprocs_completed)
-                            && (dst >= tree_root + nprocs_completed)) {
-
-                            offset = 0;
-                            for (j=0; j<(my_tree_root+mask); j++)
-                                offset += recvcounts[j];
-                            offset *= recvtype_extent;
-
-                            smpi_mpi_send(((char *)tmp_buf + offset),
-                                                     last_recv_cnt,
-                                                     recvtype, dst,
-                                                     COLL_TAG_ALLGATHERV, comm);
-                            /* last_recv_cnt was set in the previous
-                               receive. that's the amount of data to be
-                               sent now. */
-                        }
-                        /* recv only if this proc. doesn't have data and sender
-                           has data */
-                        else if ((dst < rank) && 
-                                 (dst < tree_root + nprocs_completed) &&
-                                 (rank >= tree_root + nprocs_completed)) {
-
-                            offset = 0;
-                            for (j=0; j<(my_tree_root+mask); j++)
-                                offset += recvcounts[j];
-
-                            smpi_mpi_recv(((char *)tmp_buf + offset * recvtype_extent),
-                                                     total_count - offset, recvtype,
-                                                     dst, COLL_TAG_ALLGATHERV,
-                                                     comm, &status);
-                                /* for convenience, recv is posted for a
-                                   bigger amount than will be sent */
-                                last_recv_cnt=smpi_mpi_get_count(&status, recvtype);
-                            curr_cnt += last_recv_cnt;
-                        }
-                        tmp_mask >>= 1;
-                        k--;
-                    }
-                }
-               /* --END EXPERIMENTAL-- */
-                
-                mask <<= 1;
-                i++;
-            }
-
-            /* copy data from tmp_buf to recvbuf */
-            position = 0;
-            for (j=0; j<comm_size; j++) {
-                if ((sendbuf != MPI_IN_PLACE) || (j != rank)) {
-                    /* not necessary to copy if in_place and
-                       j==rank. otherwise copy. */
-                    smpi_datatype_copy(((char *)tmp_buf + position*recvtype_extent),
-                                               recvcounts[j], recvtype,
-                                               ((char *)recvbuf + displs[j]*recvtype_extent),
-                                               recvcounts[j], recvtype);
-                }
-                position += recvcounts[j];
-            }
+
+    /* if some processes in this process's subtree in this step
+       did not have any destination process to communicate with
+       because of non-power-of-two, we need to send them the
+       data that they would normally have received from those
+       processes. That is, the haves in this subtree must send to
+       the havenots. We use a logarithmic
+       recursive-halfing algorithm for this. */
+
+    /* This part of the code will not currently be
+       executed because we are not using recursive
+       doubling for non power of two. Mark it as experimental
+       so that it doesn't show up as red in the coverage
+       tests. */
+
+    /* --BEGIN EXPERIMENTAL-- */
+    if (dst_tree_root + mask > comm_size) {
+      nprocs_completed = comm_size - my_tree_root - mask;
+      /* nprocs_completed is the number of processes in this
+         subtree that have all the data. Send data to others
+         in a tree fashion. First find root of current tree
+         that is being divided into two. k is the number of
+         least-significant bits in this process's rank that
+         must be zeroed out to find the rank of the root */
+      j = mask;
+      k = 0;
+      while (j) {
+        j >>= 1;
+        k++;
+      }
+      k--;
+
+      tmp_mask = mask >> 1;
+
+      while (tmp_mask) {
+        dst = rank ^ tmp_mask;
+
+        tree_root = rank >> k;
+        tree_root <<= k;
+
+        /* send only if this proc has data and destination
+           doesn't have data. at any step, multiple processes
+           can send if they have the data */
+        if ((dst > rank) &&
+            (rank < tree_root + nprocs_completed)
+            && (dst >= tree_root + nprocs_completed)) {
+
+          offset = 0;
+          for (j=0; j<(my_tree_root+mask); j++)
+            offset += recvcounts[j];
+          offset *= recvtype_extent;
+
+          smpi_mpi_send(((char *)tmp_buf + offset),
+                        last_recv_cnt,
+                        recvtype, dst,
+                        COLL_TAG_ALLGATHERV, comm);
+          /* last_recv_cnt was set in the previous
+             receive. that's the amount of data to be
+             sent now. */
         }
+        /* recv only if this proc. doesn't have data and sender
+           has data */
+        else if ((dst < rank) &&
+                 (dst < tree_root + nprocs_completed) &&
+                 (rank >= tree_root + nprocs_completed)) {
+
+          offset = 0;
+          for (j=0; j<(my_tree_root+mask); j++)
+            offset += recvcounts[j];
+
+          smpi_mpi_recv(((char *)tmp_buf + offset * recvtype_extent),
+                        total_count - offset, recvtype,
+                        dst, COLL_TAG_ALLGATHERV,
+                        comm, &status);
+          /* for convenience, recv is posted for a
+             bigger amount than will be sent */
+          last_recv_cnt=smpi_mpi_get_count(&status, recvtype);
+          curr_cnt += last_recv_cnt;
+        }
+        tmp_mask >>= 1;
+        k--;
+      }
+    }
+    /* --END EXPERIMENTAL-- */
+
+    mask <<= 1;
+    i++;
+  }
+
+  /* copy data from tmp_buf to recvbuf */
+  position = 0;
+  for (j=0; j<comm_size; j++) {
+    if ((sendbuf != MPI_IN_PLACE) || (j != rank)) {
+      /* not necessary to copy if in_place and
+         j==rank. otherwise copy. */
+      smpi_datatype_copy(((char *)tmp_buf + position*recvtype_extent),
+                         recvcounts[j], recvtype,
+                         ((char *)recvbuf + displs[j]*recvtype_extent),
+                         recvcounts[j], recvtype);
+    }
+    position += recvcounts[j];
+  }
+
   free(tmp_buf);
   return MPI_SUCCESS;
 }
index 19c6794..af317fb 100644 (file)
@@ -216,7 +216,7 @@ int smpi_coll_tuned_reduce_scatter_gather(void *sendbuf, void *recvbuf,
   }
 
 
-  else if (count >= comm_size) {
+  else /* (count >= comm_size) */ {
     tmp_buf = (void *) xbt_malloc(count * extent);
 
     //if ((rank != root))
index c65b6f9..9d30811 100644 (file)
@@ -145,13 +145,15 @@ smpi_coll_tuned_scatter_ompi_binomial(void *sbuf, int scount,
            total_send += mycount;
        }
 
-       if (NULL != tempbuf) 
-           free(tempbuf);
+
     } else {
        /* recv from parent on leaf nodes */
        smpi_mpi_recv(ptmp, rcount, rdtype, bmtree->tree_prev,
                                COLL_TAG_SCATTER, comm, &status);
     }
+
+    if (NULL != tempbuf)
+      free(tempbuf);
     //!FIXME : store the tree, as done in ompi, instead of calculating it each time ?
     xbt_free(bmtree);
 
index a94bd31..ded62ec 100644 (file)
@@ -1,6 +1,6 @@
 #include "colls_private.h"
-#include <limits.h>
 #include "mc/mc_private.h"
+#include <float.h>
 
 //attempt to do a quick autotuning version of the collective,
 
@@ -10,7 +10,7 @@
          if (!type){\
              type=PJ_type_event_new(#cat, PJ_type_get_root());\
          }\
-         char* cont_name=malloc(25*sizeof(char*));\
+         char cont_name[25];\
          sprintf(cont_name, "rank-%d", smpi_process_index());\
          val_t value = PJ_value_get_or_new(mpi_coll_##cat##_description[i].name,"1.0 1.0 1.0", type);\
          new_pajeNewEvent (SIMIX_get_clock(), PJ_container_get(cont_name), type, value);\
 #define AUTOMATIC_COLL_BENCH(cat, ret, args, args2)\
     ret smpi_coll_tuned_ ## cat ## _ ## automatic(COLL_UNPAREN args)\
 {\
-  double time1, time2, time_min=INT_MAX;\
+  double time1, time2, time_min=DBL_MAX;\
   int min_coll=-1, global_coll=-1;\
   int i;\
-  double buf_in, buf_out, max_min=INT_MAX;\
+  double buf_in, buf_out, max_min=DBL_MAX;\
   for (i = 0; mpi_coll_##cat##_description[i].name; i++){\
       if(!strcmp(mpi_coll_##cat##_description[i].name, "automatic"))continue;\
       if(!strcmp(mpi_coll_##cat##_description[i].name, "default"))continue;\
index 4bb6e41..c968bed 100644 (file)
@@ -7,6 +7,8 @@
 #include "private.h"
 #include <ctype.h>
 #include <wchar.h>
+#include <stdarg.h>
+#include <simgrid/sg_config.h>
 
 
 #ifdef HAVE_TRACING
@@ -41,6 +43,8 @@ static const char *smpi_colors[] ={
     "scatterv",      "0.52 0 0.52",
     "scatter",       "1 0.74 0.54",
     "computing",     "0 1 1",
+    "init",       "0 1 0",
+    "finalize",     "0 1 0",
     NULL, NULL,
 };
 
@@ -113,6 +117,16 @@ static char *TRACE_smpi_get_key(int src, int dst, char *key, int n)
 
 static xbt_dict_t process_category;
 
+static void cleanup_extra_data (instr_extra_data extra){
+  if(extra!=NULL){
+    if(extra->sendcounts!=NULL)
+      xbt_free(extra->sendcounts);
+    if(extra->recvcounts!=NULL)
+      xbt_free(extra->recvcounts);
+    xbt_free(extra);
+  }
+}
+
 void TRACE_internal_smpi_set_category (const char *category)
 {
   if (!TRACE_smpi_is_enabled()) return;
@@ -177,9 +191,12 @@ void TRACE_smpi_finalize(int rank)
   PJ_container_free (container);
 }
 
-void TRACE_smpi_collective_in(int rank, int root, const char *operation, int size)
+void TRACE_smpi_collective_in(int rank, int root, const char *operation, instr_extra_data extra)
 {
-  if (!TRACE_smpi_is_enabled()) return;
+  if (!TRACE_smpi_is_enabled()) {
+      cleanup_extra_data(extra);
+      return;
+  }
 
   char str[INSTR_DEFAULT_STR_SIZE];
   smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
@@ -187,9 +204,10 @@ void TRACE_smpi_collective_in(int rank, int root, const char *operation, int siz
   type_t type = PJ_type_get ("MPI_STATE", container->type);
   const char *color = instr_find_color (operation);
   val_t value = PJ_value_get_or_new (operation, color, type);
-  new_pajePushStateWithSize (SIMIX_get_clock(), container, type, value, size);
+   new_pajePushStateWithExtra (SIMIX_get_clock(), container, type, value, (void*)extra);
 }
 
+
 void TRACE_smpi_collective_out(int rank, int root, const char *operation)
 {
   if (!TRACE_smpi_is_enabled()) return;
@@ -218,17 +236,20 @@ void TRACE_smpi_computing_init(int rank)
   new_pajePushState (SIMIX_get_clock(), container, type, value);
 }
 
-void TRACE_smpi_computing_in(int rank)
+void TRACE_smpi_computing_in(int rank, instr_extra_data extra)
 {
   //do not forget to set the color first, otherwise this will explode
-  if (!TRACE_smpi_is_enabled()|| !TRACE_smpi_is_computing()) return;
+  if (!TRACE_smpi_is_enabled()|| !TRACE_smpi_is_computing()) {
+      cleanup_extra_data(extra);
+      return;
+  }
 
   char str[INSTR_DEFAULT_STR_SIZE];
   smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
   container_t container = PJ_container_get (str);
   type_t type = PJ_type_get ("MPI_STATE", container->type);
   val_t value = PJ_value_get_or_new ("computing", NULL, type);
-  new_pajePushState (SIMIX_get_clock(), container, type, value);
+  new_pajePushStateWithExtra  (SIMIX_get_clock(), container, type, value, (void*)extra);
 }
 
 void TRACE_smpi_computing_out(int rank)
@@ -241,10 +262,12 @@ void TRACE_smpi_computing_out(int rank)
   new_pajePopState (SIMIX_get_clock(), container, type);
 }
 
-void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, int size)
+void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, instr_extra_data extra)
 {
-  if (!TRACE_smpi_is_enabled()) return;
-
+  if (!TRACE_smpi_is_enabled()) {
+      cleanup_extra_data(extra);
+      return;
+  }
 
   char str[INSTR_DEFAULT_STR_SIZE];
   smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
@@ -252,7 +275,7 @@ void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, int si
   type_t type = PJ_type_get ("MPI_STATE", container->type);
   const char *color = instr_find_color (operation);
   val_t value = PJ_value_get_or_new (operation, color, type);
-  new_pajePushStateWithSize (SIMIX_get_clock(), container, type, value, size);
+  new_pajePushStateWithExtra (SIMIX_get_clock(), container, type, value, (void*)extra);
 }
 
 void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation)
index 3d5ded9..26847a6 100644 (file)
@@ -7,6 +7,7 @@
 #ifndef SMPI_PRIVATE_H
 #define SMPI_PRIVATE_H
 
+#include "internal_config.h"
 #include "xbt.h"
 #include "xbt/xbt_os_time.h"
 #include "simgrid/simix.h"
@@ -113,6 +114,8 @@ smx_rdv_t smpi_process_remote_mailbox_small(int index);
 xbt_os_timer_t smpi_process_timer(void);
 void smpi_process_simulated_start(void);
 double smpi_process_simulated_elapsed(void);
+void smpi_process_set_sampling(int s);
+int smpi_process_get_sampling(void);
 
 void print_request(const char *message, MPI_Request request);
 
@@ -192,6 +195,8 @@ MPI_Request smpi_isend_init(void *buf, int count, MPI_Datatype datatype,
                             int dst, int tag, MPI_Comm comm);
 MPI_Request smpi_mpi_isend(void *buf, int count, MPI_Datatype datatype,
                            int dst, int tag, MPI_Comm comm);
+MPI_Request smpi_issend_init(void *buf, int count, MPI_Datatype datatype,
+                            int dst, int tag, MPI_Comm comm);
 MPI_Request smpi_mpi_issend(void *buf, int count, MPI_Datatype datatype,
                            int dst, int tag, MPI_Comm comm);
 MPI_Request smpi_irecv_init(void *buf, int count, MPI_Datatype datatype,
@@ -285,10 +290,11 @@ int smpi_coll_basic_alltoallv(void *sendbuf, int *sendcounts,
                               MPI_Comm comm);
 
 // utilities
+extern double smpi_cpu_threshold;
+extern double smpi_running_power;
 void smpi_bench_destroy(void);
 void smpi_bench_begin(void);
 void smpi_bench_end(void);
-void smpi_execute_flops(double flops);
 
 // f77 wrappers
 void mpi_init_(int*);
@@ -547,10 +553,22 @@ void mpi_comm_get_parent_ ( int*parent, int* ierr);
 /* from smpi_instr.c */
 void TRACE_internal_smpi_set_category (const char *category);
 const char *TRACE_internal_smpi_get_category (void);
-void TRACE_smpi_collective_in(int rank, int root, const char *operation, int size);
+void TRACE_smpi_collective_in(int rank, int root, const char *operation, instr_extra_data extra);
 void TRACE_smpi_collective_out(int rank, int root, const char *operation);
 void TRACE_smpi_computing_init(int rank);
 void TRACE_smpi_computing_out(int rank);
-void TRACE_smpi_computing_in(int rank);
+void TRACE_smpi_computing_in(int rank, instr_extra_data extra);
+void TRACE_smpi_alloc(void);
+void TRACE_smpi_release(void);
+void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation,  instr_extra_data extra);
+void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation);
+void TRACE_smpi_send(int rank, int src, int dst, int size);
+void TRACE_smpi_recv(int rank, int src, int dst);
+void TRACE_smpi_init(int rank);
+void TRACE_smpi_finalize(int rank);
+
+
+const char* encode_datatype(MPI_Datatype datatype);
+
 
 #endif
index 2632bac..a6a3c57 100644 (file)
@@ -86,13 +86,13 @@ static xbt_dynar_t parse_factor(const char *smpi_coef_string)
   char *value = NULL;
   unsigned int iter = 0;
   s_smpi_factor_t fact;
+  fact.nb_values=0;
   int i=0;
   xbt_dynar_t smpi_factor, radical_elements, radical_elements2 = NULL;
 
   smpi_factor = xbt_dynar_new(sizeof(s_smpi_factor_t), NULL);
   radical_elements = xbt_str_split(smpi_coef_string, ";");
   xbt_dynar_foreach(radical_elements, iter, value) {
-    fact.nb_values=0;
     radical_elements2 = xbt_str_split(value, ":");
     if (xbt_dynar_length(radical_elements2) <2 || xbt_dynar_length(radical_elements2) > 5)
       xbt_die("Malformed radical for smpi factor!");
@@ -414,6 +414,7 @@ void smpi_mpi_start(MPI_Request request)
 void smpi_mpi_startall(int count, MPI_Request * requests)
 {
   int i;
+  if(requests==NULL) return;
 
   for(i = 0; i < count; i++) {
     smpi_mpi_start(requests[i]);
index 6feda0f..b0f25dc 100644 (file)
@@ -66,6 +66,9 @@ xbt_dict_t samples = NULL;         /* Allocated on first use */
 xbt_dict_t calls = NULL;           /* Allocated on first use */
 __thread int smpi_current_rank = 0;      /* Updated after each MPI call */
 
+double smpi_cpu_threshold;
+double smpi_running_power;
+
 typedef struct {
   int fd;
   int count;
@@ -123,12 +126,23 @@ void smpi_bench_destroy(void)
   xbt_dict_free(&calls);
 }
 
+XBT_PUBLIC(void) smpi_execute_flops_(double *flops);
+void smpi_execute_flops_(double *flops)
+{
+  smpi_execute_flops(*flops);
+}
+
+XBT_PUBLIC(void) smpi_execute_(double *duration);
+void smpi_execute_(double *duration)
+{
+  smpi_execute(*duration);
+}
+
 void smpi_execute_flops(double flops) {
   smx_action_t action;
   smx_host_t host;
   host = SIMIX_host_self();
-
-  XBT_DEBUG("Handle real computation time: %f flops", flops);
+  XBT_DEBUG("Handle real computation time: %g flops", flops);
   action = simcall_host_execute("computation", host, flops, 1);
 #ifdef HAVE_TRACING
   simcall_set_category (action, TRACE_internal_smpi_get_category());
@@ -136,16 +150,27 @@ void smpi_execute_flops(double flops) {
   simcall_host_execution_wait(action);
 }
 
-static void smpi_execute(double duration)
+void smpi_execute(double duration)
 {
-  /* FIXME: a global variable would be less expensive to consult than a call to xbt_cfg_get_double() right on the critical path */
-  if (duration >= sg_cfg_get_double("smpi/cpu_threshold")) {
-    XBT_DEBUG("Sleep for %f to handle real computation time", duration);
-    smpi_execute_flops(duration *
-               sg_cfg_get_double("smpi/running_power"));
+  if (duration >= smpi_cpu_threshold) {
+    XBT_DEBUG("Sleep for %g to handle real computation time", duration);
+    double flops = duration * smpi_running_power;
+#ifdef HAVE_TRACING
+    int rank = smpi_process_index();
+    instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+    extra->type=TRACING_COMPUTING;
+    extra->comp_size=flops;
+    TRACE_smpi_computing_in(rank, extra);
+#endif
+    smpi_execute_flops(flops);
+
+#ifdef HAVE_TRACING
+    TRACE_smpi_computing_out(rank);
+#endif
+
   } else {
-    XBT_DEBUG("Real computation took %f while option smpi/cpu_threshold is set to %f => ignore it",
-        duration, sg_cfg_get_double("smpi/cpu_threshold"));
+    XBT_DEBUG("Real computation took %g while option smpi/cpu_threshold is set to %g => ignore it",
+              duration, smpi_cpu_threshold);
   }
 }
 
@@ -158,15 +183,30 @@ void smpi_bench_begin(void)
 void smpi_bench_end(void)
 {
   xbt_os_timer_t timer = smpi_process_timer();
-
   xbt_os_threadtimer_stop(timer);
+  if (smpi_process_get_sampling()) {
+    XBT_CRITICAL("Cannot do recursive benchmarks.");
+    XBT_CRITICAL("Are you trying to make a call to MPI within a SMPI_SAMPLE_ block?");
+    xbt_backtrace_display_current();
+    xbt_die("Aborting.");
+  }
   smpi_execute(xbt_os_timer_elapsed(timer));
 }
 
 unsigned int smpi_sleep(unsigned int secs)
 {
+  smx_action_t action;
+
   smpi_bench_end();
-  smpi_execute_flops((double) secs*simcall_host_get_speed(SIMIX_host_self()));
+
+  double flops = (double) secs*simcall_host_get_speed(SIMIX_host_self());
+  XBT_DEBUG("Sleep for: %f flops", flops);
+  action = simcall_host_execute("computation", SIMIX_host_self(), flops, 1);
+  #ifdef HAVE_TRACING
+    simcall_set_category (action, TRACE_internal_smpi_get_category());
+  #endif
+  simcall_host_execution_wait(action);
+
   smpi_bench_begin();
   return secs;
 }
@@ -210,13 +250,13 @@ unsigned long long smpi_rastro_timestamp (void)
 
 /* ****************************** Functions related to the SMPI_SAMPLE_ macros ************************************/
 typedef struct {
-  int iters;        /* amount of requested iterations */
-  int count;        /* amount of iterations done so far */
   double threshold; /* maximal stderr requested (if positive) */
   double relstderr; /* observed stderr so far */
   double mean;      /* mean of benched times, to be used if the block is disabled */
   double sum;       /* sum of benched times (to compute the mean and stderr) */
   double sum_pow2;  /* sum of the square of the benched times (to compute the stderr) */
+  int iters;        /* amount of requested iterations */
+  int count;        /* amount of iterations done so far */
   int benching;     /* 1: we are benchmarking; 0: we have enough data, no bench anymore */
 } local_data_t;
 
@@ -247,6 +287,8 @@ void smpi_sample_1(int global, const char *file, int line, int iters, double thr
   local_data_t *data;
 
   smpi_bench_end();     /* Take time from previous, unrelated computation into account */
+  smpi_process_set_sampling(1);
+
   if (!samples)
     samples = xbt_dict_new_homogeneous(free);
 
@@ -282,6 +324,7 @@ int smpi_sample_2(int global, const char *file, int line)
 {
   char *loc = sample_location(global, file, line);
   local_data_t *data;
+  int res;
 
   xbt_assert(samples, "Y U NO use SMPI_SAMPLE_* macros? Stop messing directly with smpi_sample_* functions!");
   data = xbt_dict_get(samples, loc);
@@ -292,18 +335,18 @@ int smpi_sample_2(int global, const char *file, int line)
     // we need to run a new bench
     XBT_DEBUG("benchmarking: count:%d iter:%d stderr:%f thres:%f; mean:%f",
         data->count, data->iters, data->relstderr, data->threshold, data->mean);
-    smpi_bench_begin();
-    return 1;
+    res = 1;
   } else {
     // Enough data, no more bench (either we got enough data from previous visits to this benched nest, or we just ran one bench and need to bail out now that our job is done).
     // Just sleep instead
     XBT_DEBUG("No benchmark (either no need, or just ran one): count >= iter (%d >= %d) or stderr<thres (%f<=%f). apply the %fs delay instead",
         data->count, data->iters, data->relstderr, data->threshold, data->mean);
     smpi_execute(data->mean);
-
-    smpi_bench_begin(); // prepare to capture future, unrelated computations
-    return 0;
+    smpi_process_set_sampling(0);
+    res = 0; // prepare to capture future, unrelated computations
   }
+  smpi_bench_begin();
+  return res;
 }
 
 
@@ -397,7 +440,7 @@ void *smpi_shared_malloc(size_t size, const char *file, int line)
           case EEXIST:
             xbt_die("Please cleanup /dev/shm/%s", loc);
           default:
-            xbt_die("An unhandled error occured while opening %s: %s", loc, strerror(errno));
+            xbt_die("An unhandled error occured while opening %s. shm_open: %s", loc, strerror(errno));
         }
       }
       data = xbt_new(shared_data_t, 1);
@@ -406,7 +449,7 @@ void *smpi_shared_malloc(size_t size, const char *file, int line)
       data->loc = loc;
       mem = shm_map(fd, size, data);
       if (shm_unlink(loc) < 0) {
-        XBT_WARN("Could not early unlink %s: %s", loc, strerror(errno));
+        XBT_WARN("Could not early unlink %s. shm_unlink: %s", loc, strerror(errno));
       }
       xbt_dict_set(allocs, loc, data, NULL);
       XBT_DEBUG("Mapping %s at %p through %d", loc, mem, fd);
@@ -465,28 +508,28 @@ void smpi_shared_free(void *ptr)
 }
 #endif
 
-int smpi_shared_known_call(const char* func, const char* input) {
-   char* loc = bprintf("%s:%s", func, input);
-   xbt_ex_t ex;
-   int known;
+int smpi_shared_known_call(const char* func, const char* input)
+{
+  char* loc = bprintf("%s:%s", func, input);
+  xbt_ex_t ex;
+  int known = 0;
 
-   if(!calls) {
-      calls = xbt_dict_new_homogeneous(NULL);
-   }
-   TRY {
-      xbt_dict_get(calls, loc); /* Succeed or throw */
-      known = 1;
-   }
-   CATCH(ex) {
-      if(ex.category == not_found_error) {
-         known = 0;
-         xbt_ex_free(ex);
-      } else {
-         RETHROW;
-      }
-   }
-   free(loc);
-   return known;
+  if (!calls) {
+    calls = xbt_dict_new_homogeneous(NULL);
+  }
+  TRY {
+    xbt_dict_get(calls, loc); /* Succeed or throw */
+    known = 1;
+  }
+  TRY_CLEANUP {
+    xbt_free(loc);
+  }
+  CATCH(ex) {
+    if (ex.category != not_found_error)
+      RETHROW;
+    xbt_ex_free(ex);
+  }
+  return known;
 }
 
 void* smpi_shared_get_call(const char* func, const char* input) {
index e6db148..70fdb14 100644 (file)
@@ -143,7 +143,9 @@ int find_coll_description(s_mpi_coll_description_t * table,
         return i;
     }
   }
-  name_list = strdup(table[0].name);
+  if (!table[0].name)
+    xbt_die("No collective is valid! This is a bug.");
+  name_list = xbt_strdup(table[0].name);
   for (i = 1; table[i].name; i++) {
     name_list =
         xbt_realloc(name_list,
@@ -151,7 +153,7 @@ int find_coll_description(s_mpi_coll_description_t * table,
     strcat(name_list, ", ");
     strcat(name_list, table[i].name);
   }
-  xbt_die("Model '%s' is invalid! Valid models are: %s.", name, name_list);
+  xbt_die("Collective '%s' is invalid! Valid collectives are: %s.", name, name_list);
   return -1;
 }
 
diff --git a/src/smpi/smpi_dvfs.c b/src/smpi/smpi_dvfs.c
new file mode 100644 (file)
index 0000000..4a71979
--- /dev/null
@@ -0,0 +1,97 @@
+/* Copyright (c) 2013. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+  * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "xbt/log.h"
+#include "simgrid/simix.h"
+#include "smpi/smpi.h"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_dvfs, smpi,
+                                "Logging specific to SMPI (experimental DVFS support)");
+
+/**
+ * \brief Return the speed of the processor (in flop/s) at a given pstate
+ *
+ * \param pstate_index pstate to test
+ * \return Returns the processor speed associated with pstate_index
+ */
+double smpi_get_host_power_peak_at(int pstate_index)
+{
+  return simcall_host_get_power_peak_at(SIMIX_host_self(), pstate_index);
+}
+
+/**
+ * \brief Return the current speed of the processor (in flop/s)
+ *
+ * \return Returns the current processor speed
+ */
+double smpi_get_host_current_power_peak(void)
+{
+  return simcall_host_get_current_power_peak(SIMIX_host_self());
+}
+
+/**
+ * \brief Return the number of pstates defined for host
+ */
+int smpi_get_host_nb_pstates(void)
+{
+  return simcall_host_get_nb_pstates(SIMIX_host_self());
+}
+
+/**
+ * \brief Sets the speed of the processor (in flop/s) at a given pstate
+ *
+ * \param pstate_index pstate to switch to
+ */
+void smpi_set_host_power_peak_at(int pstate_index)
+{
+  simcall_host_set_power_peak_at(SIMIX_host_self(), pstate_index);
+}
+
+/**
+ * \brief Return the total energy consumed by a host (in Joules)
+ *
+ * \return Returns the consumed energy
+ */
+double smpi_get_host_consumed_energy(void)
+{
+  return simcall_host_get_consumed_energy(SIMIX_host_self());
+}
+
+#include "smpi/smpif.h"
+
+#ifdef SMPI_F2C
+
+XBT_PUBLIC(doublereal) smpi_get_host_power_peak_at_(integer *pstate_index);
+doublereal smpi_get_host_power_peak_at_(integer *pstate_index)
+{
+  return (doublereal)smpi_get_host_power_peak_at((int)*pstate_index);
+}
+
+XBT_PUBLIC(doublereal) smpi_get_host_current_power_peak_(void);
+doublereal smpi_get_host_current_power_peak_(void)
+{
+  return smpi_get_host_current_power_peak();
+}
+
+XBT_PUBLIC(integer) smpi_get_host_nb_pstates_(void);
+integer smpi_get_host_nb_pstates_(void)
+{
+  return (integer)smpi_get_host_nb_pstates();
+}
+
+XBT_PUBLIC(void) smpi_set_host_power_peak_at_(integer *pstate_index);
+void smpi_set_host_power_peak_at_(integer *pstate_index)
+{
+  smpi_set_host_power_peak_at((int)*pstate_index);
+}
+
+XBT_PUBLIC(doublereal) smpi_get_host_consumed_energy_(void);
+doublereal smpi_get_host_consumed_energy_(void)
+{
+  return (doublereal)smpi_get_host_consumed_energy();
+}
+
+#endif
index d32614f..0f49e2e 100644 (file)
@@ -213,13 +213,10 @@ void mpi_finalize_(int* ierr) {
    running_processes--;
    if(running_processes==0){
      xbt_dict_free(&op_lookup);
-     op_lookup = NULL;
      xbt_dict_free(&datatype_lookup);
-     datatype_lookup = NULL;
      xbt_dict_free(&request_lookup);
-     request_lookup = NULL;
+     xbt_dict_free(&group_lookup);
      xbt_dict_free(&comm_lookup);
-     comm_lookup = NULL;
    }
 }
 
index 4ebd97a..b5b05af 100644 (file)
@@ -4,10 +4,6 @@
 /* This program is free software; you can redistribute it and/or modify it
   * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-
 #include "private.h"
 #include "smpi_mpi_dt_private.h"
 #include "mc/mc.h"
 #include "simix/smx_private.h"
 #include "simgrid/sg_config.h"
 
+#include <float.h>              /* DBL_MAX */
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_kernel, smpi,
                                 "Logging specific to SMPI (kernel)");
 
 typedef struct s_smpi_process_data {
-  int index;
-  intargc;
-  char*** argv;
+  double simulated;
+  int *argc;
+  char ***argv;
   smx_rdv_t mailbox;
   smx_rdv_t mailbox_small;
   xbt_os_timer_t timer;
-  double simulated;
   MPI_Comm comm_self;
-  void *data; /* user data */
+  void *data;                   /* user data */
+  int index;
   int initialized;
+  int sampling;                 /* inside an SMPI_SAMPLE_ block? */
 } s_smpi_process_data_t;
 
 static smpi_process_data_t *process_data = NULL;
@@ -38,19 +39,23 @@ static int process_count = 0;
 MPI_Comm MPI_COMM_WORLD = MPI_COMM_NULL;
 int MPI_UNIVERSE_SIZE;
 
-MPI_ErrhandlerMPI_ERRORS_RETURN = NULL;
-MPI_ErrhandlerMPI_ERRORS_ARE_FATAL = NULL;
-MPI_ErrhandlerMPI_ERRHANDLER_NULL = NULL;
+MPI_Errhandler *MPI_ERRORS_RETURN = NULL;
+MPI_Errhandler *MPI_ERRORS_ARE_FATAL = NULL;
+MPI_Errhandler *MPI_ERRHANDLER_NULL = NULL;
 
 #define MAILBOX_NAME_MAXLEN (5 + sizeof(int) * 2 + 1)
 
-static char* get_mailbox_name(char* str, int index) {
-  snprintf(str, MAILBOX_NAME_MAXLEN, "SMPI-%0*x", (int)(sizeof(int) * 2), index);
+static char *get_mailbox_name(char *str, int index)
+{
+  snprintf(str, MAILBOX_NAME_MAXLEN, "SMPI-%0*x", (int) (sizeof(int) * 2),
+           index);
   return str;
 }
 
-static char* get_mailbox_name_small(char* str, int index) {
-  snprintf(str, MAILBOX_NAME_MAXLEN, "small%0*x", (int)(sizeof(int) * 2), index);
+static char *get_mailbox_name_small(char *str, int index)
+{
+  snprintf(str, MAILBOX_NAME_MAXLEN, "small%0*x", (int) (sizeof(int) * 2),
+           index);
   return str;
 }
 
@@ -60,7 +65,7 @@ void smpi_process_init(int *argc, char ***argv)
   smpi_process_data_t data;
   smx_process_t proc;
 
-  if(argc && argv) {
+  if (argc && argv) {
     proc = SIMIX_process_self();
     index = atoi((*argv)[1]);
     data = smpi_process_remote_data(index);
@@ -73,7 +78,8 @@ void smpi_process_init(int *argc, char ***argv)
     (*argc)--;
     data->argc = argc;
     data->argv = argv;
-    simcall_rdv_set_receiver(data->mailbox_small, proc);// set the process attached to the mailbox
+    // set the process attached to the mailbox
+    simcall_rdv_set_receiver(data->mailbox_small, proc);
     XBT_DEBUG("<%d> New process in the game: %p", index, proc);
   }
 }
@@ -81,7 +87,7 @@ void smpi_process_init(int *argc, char ***argv)
 void smpi_process_destroy(void)
 {
   int index = smpi_process_index();
-  process_data[index]->index=-100;
+  process_data[index]->index = -100;
   XBT_DEBUG("<%d> Process left the game", index);
 }
 
@@ -101,7 +107,7 @@ void smpi_process_finalize(void)
  */
 int smpi_process_finalized()
 {
-   return (smpi_process_index()==-100);
+  return (smpi_process_index() == -100);
   // If finalized, this value has been set to -100;
 }
 
@@ -111,7 +117,8 @@ int smpi_process_finalized()
 int smpi_process_initialized(void)
 {
   int index = smpi_process_index();
-  return((index != -100) && (index!=MPI_UNDEFINED) && (process_data[index]->initialized));
+  return ((index != -100) && (index != MPI_UNDEFINED)
+          && (process_data[index]->initialized));
 }
 
 /**
@@ -120,44 +127,47 @@ int smpi_process_initialized(void)
 void smpi_process_mark_as_initialized(void)
 {
   int index = smpi_process_index();
-  if((index != -100)&& (index!=MPI_UNDEFINED))process_data[index]->initialized=1;
+  if ((index != -100) && (index != MPI_UNDEFINED))
+    process_data[index]->initialized = 1;
 }
 
 
 #ifdef SMPI_F2C
-int smpi_process_argc(void) {
+int smpi_process_argc(void)
+{
   smpi_process_data_t data = smpi_process_data();
-
   return data->argc ? *(data->argc) - 1 : 0;
 }
 
-int smpi_process_getarg(integer* index, char* dst, ftnlen len) {
+int smpi_process_getarg(integer * index, char *dst, ftnlen len)
+{
   smpi_process_data_t data = smpi_process_data();
-  chararg;
+  char *arg;
   ftnlen i;
 
-  if(!data->argc || !data->argv
-     || *index < 1 || *index >= *(data->argc)) {
+  if (!data->argc || !data->argv || *index < 1 || *index >= *(data->argc)) {
     return -1;
   }
   arg = (*data->argv)[*index];
-  for(i = 0; i < len && arg[i] != '\0'; i++) {
+  for (i = 0; i < len && arg[i] != '\0'; i++) {
     dst[i] = arg[i];
   }
-  for(; i < len; i++) {
+  for (; i < len; i++) {
     dst[i] = ' ';
   }
   return 0;
 }
 
-int smpi_global_size(void) {
-   char* value = getenv("SMPI_GLOBAL_SIZE");
+int smpi_global_size(void)
+{
+  char *value = getenv("SMPI_GLOBAL_SIZE");
 
-   if(!value) {
-     fprintf(stderr, "Please set env var SMPI_GLOBAL_SIZE to expected number of processes.\n");
-     xbt_abort();
-   }
-   return atoi(value);
+  if (!value) {
+    fprintf(stderr,
+            "Please set env var SMPI_GLOBAL_SIZE to expected number of processes.\n");
+    xbt_abort();
+  }
+  return atoi(value);
 }
 #endif
 
@@ -177,7 +187,8 @@ void smpi_process_set_user_data(void *data)
   process_data->data = data;
 }
 
-void* smpi_process_get_user_data(){
+void *smpi_process_get_user_data()
+{
   smpi_process_data_t process_data = smpi_process_data();
   return process_data->data;
 }
@@ -191,70 +202,86 @@ int smpi_process_index(void)
 {
   smpi_process_data_t data = smpi_process_data();
   //return -1 if not initialized
-  return data? data->index : MPI_UNDEFINED;
+  return data ? data->index : MPI_UNDEFINED;
 }
 
-smx_rdv_t smpi_process_mailbox(void) {
+smx_rdv_t smpi_process_mailbox(void)
+{
   smpi_process_data_t data = smpi_process_data();
-
   return data->mailbox;
 }
 
-smx_rdv_t smpi_process_mailbox_small(void) {
+smx_rdv_t smpi_process_mailbox_small(void)
+{
   smpi_process_data_t data = smpi_process_data();
-
   return data->mailbox_small;
 }
 
-smx_rdv_t smpi_process_remote_mailbox(int index) {
+smx_rdv_t smpi_process_remote_mailbox(int index)
+{
   smpi_process_data_t data = smpi_process_remote_data(index);
-
   return data->mailbox;
 }
 
 
-smx_rdv_t smpi_process_remote_mailbox_small(int index) {
+smx_rdv_t smpi_process_remote_mailbox_small(int index)
+{
   smpi_process_data_t data = smpi_process_remote_data(index);
-
   return data->mailbox_small;
 }
 
 xbt_os_timer_t smpi_process_timer(void)
 {
   smpi_process_data_t data = smpi_process_data();
-
   return data->timer;
 }
 
-void smpi_process_simulated_start(void) {
+void smpi_process_simulated_start(void)
+{
   smpi_process_data_t data = smpi_process_data();
-
   data->simulated = SIMIX_get_clock();
 }
 
-double smpi_process_simulated_elapsed(void) {
+double smpi_process_simulated_elapsed(void)
+{
   smpi_process_data_t data = smpi_process_data();
-
   return SIMIX_get_clock() - data->simulated;
 }
 
-MPI_Comm smpi_process_comm_self(void) {
+MPI_Comm smpi_process_comm_self(void)
+{
   smpi_process_data_t data = smpi_process_data();
-
   return data->comm_self;
 }
 
-void print_request(const char *message, MPI_Request request) {
-  XBT_DEBUG("%s  request %p  [buf = %p, size = %zu, src = %d, dst = %d, tag = %d, flags = %x]",
-         message, request, request->buf, request->size,
-         request->src, request->dst, request->tag, request->flags);
+void smpi_process_set_sampling(int s)
+{
+  smpi_process_data_t data = smpi_process_data();
+  data->sampling = s;
+}
+
+int smpi_process_get_sampling(void)
+{
+  smpi_process_data_t data = smpi_process_data();
+  return data->sampling;
+}
+
+void print_request(const char *message, MPI_Request request)
+{
+  XBT_DEBUG
+      ("%s  request %p  [buf = %p, size = %zu, src = %d, dst = %d, tag = %d, flags = %x]",
+       message, request, request->buf, request->size, request->src,
+       request->dst, request->tag, request->flags);
 }
 
-static void SMPI_comm_copy_buffer_callback(smx_action_t comm, void* buff, size_t buff_size)
+static void smpi_comm_copy_buffer_callback(smx_action_t comm,
+                                           void *buff, size_t buff_size)
 {
   XBT_DEBUG("Copy the data over");
   memcpy(comm->comm.dst_buff, buff, buff_size);
-  if (comm->comm.detached) { // if this is a detached send, the source buffer was duplicated by SMPI sender to make the original buffer available to the application ASAP
+  if (comm->comm.detached) {
+    // if this is a detached send, the source buffer was duplicated by SMPI
+    // sender to make the original buffer available to the application ASAP
     xbt_free(buff);
     //It seems that the request is used after the call there this should
     //be free somewhereelse  but where???
@@ -270,7 +297,7 @@ void smpi_global_init(void)
   MPI_Group group;
   char name[MAILBOX_NAME_MAXLEN];
 
-  SIMIX_comm_set_copy_data_callback(&SMPI_comm_copy_buffer_callback);
+  SIMIX_comm_set_copy_data_callback(&smpi_comm_copy_buffer_callback);
   process_count = SIMIX_process_count();
   process_data = xbt_new(smpi_process_data_t, process_count);
   for (i = 0; i < process_count; i++) {
@@ -279,13 +306,15 @@ void smpi_global_init(void)
     process_data[i]->argc = NULL;
     process_data[i]->argv = NULL;
     process_data[i]->mailbox = simcall_rdv_create(get_mailbox_name(name, i));
-    process_data[i]->mailbox_small = simcall_rdv_create(get_mailbox_name_small(name, i));
+    process_data[i]->mailbox_small =
+        simcall_rdv_create(get_mailbox_name_small(name, i));
     process_data[i]->timer = xbt_os_timer_new();
-    if(MC_is_active())
+    if (MC_is_active())
       MC_ignore_heap(process_data[i]->timer, xbt_os_timer_size());
     group = smpi_group_new(1);
     process_data[i]->comm_self = smpi_comm_new(group);
-    process_data[i]->initialized =0;
+    process_data[i]->initialized = 0;
+    process_data[i]->sampling = 0;
 
     smpi_group_set_mapping(group, i, 0);
   }
@@ -298,7 +327,8 @@ void smpi_global_init(void)
 
   //check correctness of MPI parameters
 
-  xbt_assert(sg_cfg_get_int("smpi/async_small_thres")<=sg_cfg_get_int("smpi/send_is_detached_thres"));
+  xbt_assert(sg_cfg_get_int("smpi/async_small_thres") <=
+             sg_cfg_get_int("smpi/send_is_detached_thres"));
 }
 
 void smpi_global_destroy(void)
@@ -307,7 +337,7 @@ void smpi_global_destroy(void)
   int i;
 
   smpi_bench_destroy();
-  while(smpi_group_unuse(smpi_comm_group(MPI_COMM_WORLD))>0);
+  while (smpi_group_unuse(smpi_comm_group(MPI_COMM_WORLD)) > 0);
   xbt_free(MPI_COMM_WORLD);
   MPI_COMM_WORLD = MPI_COMM_NULL;
   for (i = 0; i < count; i++) {
@@ -327,58 +357,65 @@ void smpi_global_destroy(void)
 /* Fortran specific stuff */
 /* With smpicc, the following weak symbols are used */
 /* With smpiff, the following weak symbols are replaced by those in libf2c */
-int __attribute__((weak)) xargc;
-char** __attribute__((weak)) xargv;
+int __attribute__ ((weak)) xargc;
+char ** __attribute__ ((weak)) xargv;
 
 #ifndef WIN32
-void __attribute__((weak)) user_main_(){
+void __attribute__ ((weak)) user_main_()
+{
   xbt_die("Should not be in this smpi_simulated_main");
   return;
 }
-int __attribute__((weak)) smpi_simulated_main_(int argc, char** argv) {
+
+int __attribute__ ((weak)) smpi_simulated_main_(int argc, char **argv)
+{
   smpi_process_init(&argc, &argv);
   user_main_();
   //xbt_die("Should not be in this smpi_simulated_main");
   return 0;
 }
 
-int __attribute__((weak)) main(int argc, char** argv) {
-   return smpi_main(smpi_simulated_main_,argc,argv);
+int __attribute__ ((weak)) main(int argc, char **argv)
+{
+  return smpi_main(smpi_simulated_main_, argc, argv);
 }
 
-int __attribute__((weak)) MAIN__(){
-  return smpi_main(smpi_simulated_main_,xargc, xargv);
+int __attribute__ ((weak)) MAIN__()
+{
+  return smpi_main(smpi_simulated_main_, xargc, xargv);
 };
 #endif
 
-int smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[])
+int smpi_main(int (*realmain) (int argc, char *argv[]), int argc, char *argv[])
 {
   srand(SMPI_RAND_SEED);
-  
-  if(getenv("SMPI_PRETEND_CC") != NULL) {
-  /* Hack to ensure that smpicc can pretend to be a simple compiler. Particularly handy to pass it to the configuration tools */
+
+  if (getenv("SMPI_PRETEND_CC") != NULL) {
+    /* Hack to ensure that smpicc can pretend to be a simple
+     * compiler. Particularly handy to pass it to the configuration tools */
     return 0;
   }
 
   /* Connect log categories.  See xbt/log.c */
-  XBT_LOG_CONNECT(smpi);  /* Keep this line as soon as possible in this
-                             function: xbt_log_appender_file.c depends on it
-                             DO NOT connect this in XBT or so, or it will be
-                             useless to xbt_log_appender_file.c */
+  XBT_LOG_CONNECT(smpi);        /* Keep this line as soon as possible in this
+                                   function: xbt_log_appender_file.c depends on it
+                                   DO NOT connect this in XBT or so, or it will be
+                                   useless to xbt_log_appender_file.c */
 #ifdef HAVE_TRACING
   XBT_LOG_CONNECT(instr_smpi);
 #endif
   XBT_LOG_CONNECT(smpi_base);
   XBT_LOG_CONNECT(smpi_bench);
   XBT_LOG_CONNECT(smpi_coll);
+  XBT_LOG_CONNECT(smpi_colls);
   XBT_LOG_CONNECT(smpi_comm);
+  XBT_LOG_CONNECT(smpi_dvfs);
   XBT_LOG_CONNECT(smpi_group);
   XBT_LOG_CONNECT(smpi_kernel);
   XBT_LOG_CONNECT(smpi_mpi);
   XBT_LOG_CONNECT(smpi_mpi_dt);
   XBT_LOG_CONNECT(smpi_pmpi);
   XBT_LOG_CONNECT(smpi_replay);
-  XBT_LOG_CONNECT(smpi_colls);
 
 #ifdef HAVE_TRACING
   TRACE_global_init(&argc, argv);
@@ -400,70 +437,81 @@ int smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[])
   SIMIX_launch_application(argv[2]);
 
   int gather_id = find_coll_description(mpi_coll_gather_description,
-                                           sg_cfg_get_string("smpi/gather"));
+                                        sg_cfg_get_string("smpi/gather"));
   mpi_coll_gather_fun = (int (*)(void *, int, MPI_Datatype,
-                                   void*, int, MPI_Datatype, int, MPI_Comm))
-                          mpi_coll_gather_description[gather_id].coll;
+                                 void *, int, MPI_Datatype, int, MPI_Comm))
+      mpi_coll_gather_description[gather_id].coll;
 
   int allgather_id = find_coll_description(mpi_coll_allgather_description,
                                            sg_cfg_get_string("smpi/allgather"));
   mpi_coll_allgather_fun = (int (*)(void *, int, MPI_Datatype,
-                                   void*, int, MPI_Datatype, MPI_Comm))
-                          mpi_coll_allgather_description[allgather_id].coll;
+                                    void *, int, MPI_Datatype, MPI_Comm))
+      mpi_coll_allgather_description[allgather_id].coll;
 
   int allgatherv_id = find_coll_description(mpi_coll_allgatherv_description,
-                                           sg_cfg_get_string("smpi/allgatherv"));
-  mpi_coll_allgatherv_fun = (int (*)(void *, int, MPI_Datatype,
-                                   void*, int*, int*, MPI_Datatype, MPI_Comm))
-                          mpi_coll_allgatherv_description[allgatherv_id].coll;
+                                            sg_cfg_get_string("smpi/allgatherv"));
+  mpi_coll_allgatherv_fun = (int (*)(void *, int, MPI_Datatype, void *, int *,
+                                     int *, MPI_Datatype, MPI_Comm))
+      mpi_coll_allgatherv_description[allgatherv_id].coll;
 
   int allreduce_id = find_coll_description(mpi_coll_allreduce_description,
                                            sg_cfg_get_string("smpi/allreduce"));
-  mpi_coll_allreduce_fun = (int (*)(void *sbuf, void *rbuf, int rcount, \
-                                    MPI_Datatype dtype, MPI_Op op, MPI_Comm comm))
-                          mpi_coll_allreduce_description[allreduce_id].coll;
+  mpi_coll_allreduce_fun = (int (*)(void *sbuf, void *rbuf, int rcount,
+                                    MPI_Datatype dtype, MPI_Op op,
+                                    MPI_Comm comm))
+      mpi_coll_allreduce_description[allreduce_id].coll;
 
   int alltoall_id = find_coll_description(mpi_coll_alltoall_description,
                                           sg_cfg_get_string("smpi/alltoall"));
   mpi_coll_alltoall_fun = (int (*)(void *, int, MPI_Datatype,
-                                  void*, int, MPI_Datatype, MPI_Comm))
-                         mpi_coll_alltoall_description[alltoall_id].coll;
+                                   void *, int, MPI_Datatype, MPI_Comm))
+      mpi_coll_alltoall_description[alltoall_id].coll;
 
   int alltoallv_id = find_coll_description(mpi_coll_alltoallv_description,
-                                          sg_cfg_get_string("smpi/alltoallv"));
-  mpi_coll_alltoallv_fun = (int (*)(void *, int*, int*, MPI_Datatype,
-                                   void*, int*, int*, MPI_Datatype, MPI_Comm))
-                         mpi_coll_alltoallv_description[alltoallv_id].coll;
+                                           sg_cfg_get_string("smpi/alltoallv"));
+  mpi_coll_alltoallv_fun = (int (*)(void *, int *, int *, MPI_Datatype,
+                                    void *, int *, int *, MPI_Datatype,
+                                    MPI_Comm))
+      mpi_coll_alltoallv_description[alltoallv_id].coll;
 
   int bcast_id = find_coll_description(mpi_coll_bcast_description,
-                                          sg_cfg_get_string("smpi/bcast"));
-  mpi_coll_bcast_fun = (int (*)(void *buf, int count, MPI_Datatype datatype, \
-                               int root, MPI_Comm com))
-                      mpi_coll_bcast_description[bcast_id].coll;
+                                       sg_cfg_get_string("smpi/bcast"));
+  mpi_coll_bcast_fun = (int (*)(void *buf, int count, MPI_Datatype datatype,
+                                int root, MPI_Comm com))
+      mpi_coll_bcast_description[bcast_id].coll;
 
   int reduce_id = find_coll_description(mpi_coll_reduce_description,
-                                          sg_cfg_get_string("smpi/reduce"));
-  mpi_coll_reduce_fun = (int (*)(void *buf, void *rbuf, int count, MPI_Datatype datatype, \
-                                 MPI_Op op, int root, MPI_Comm comm))
-                       mpi_coll_reduce_description[reduce_id].coll;
-
-  int reduce_scatter_id = find_coll_description(mpi_coll_reduce_scatter_description,
-                                           sg_cfg_get_string("smpi/reduce_scatter"));
-  mpi_coll_reduce_scatter_fun = (int (*)(void *sbuf, void *rbuf, int *rcounts,\
-                    MPI_Datatype dtype,MPI_Op  op,MPI_Comm  comm))
-                          mpi_coll_reduce_scatter_description[reduce_scatter_id].coll;
+                                        sg_cfg_get_string("smpi/reduce"));
+  mpi_coll_reduce_fun = (int (*)(void *buf, void *rbuf, int count,
+                                 MPI_Datatype datatype, MPI_Op op,
+                                 int root, MPI_Comm comm))
+      mpi_coll_reduce_description[reduce_id].coll;
+
+  int reduce_scatter_id =
+      find_coll_description(mpi_coll_reduce_scatter_description,
+                            sg_cfg_get_string("smpi/reduce_scatter"));
+  mpi_coll_reduce_scatter_fun = (int (*)(void *sbuf, void *rbuf, int *rcounts,
+                                         MPI_Datatype dtype, MPI_Op op,
+                                         MPI_Comm comm))
+      mpi_coll_reduce_scatter_description[reduce_scatter_id].coll;
 
   int scatter_id = find_coll_description(mpi_coll_scatter_description,
-                                           sg_cfg_get_string("smpi/scatter"));
-  mpi_coll_scatter_fun = (int (*)(void *sendbuf, int sendcount, MPI_Datatype sendtype,\
-                void *recvbuf, int recvcount, MPI_Datatype recvtype,\
-                int root, MPI_Comm comm))
-                          mpi_coll_scatter_description[scatter_id].coll;
+                                         sg_cfg_get_string("smpi/scatter"));
+  mpi_coll_scatter_fun = (int (*)(void *sendbuf, int sendcount,
+                                  MPI_Datatype sendtype, void *recvbuf,
+                                  int recvcount, MPI_Datatype recvtype,
+                                  int root, MPI_Comm comm))
+      mpi_coll_scatter_description[scatter_id].coll;
 
   int barrier_id = find_coll_description(mpi_coll_barrier_description,
-                                           sg_cfg_get_string("smpi/barrier"));
+                                         sg_cfg_get_string("smpi/barrier"));
   mpi_coll_barrier_fun = (int (*)(MPI_Comm comm))
-                          mpi_coll_barrier_description[barrier_id].coll;
+      mpi_coll_barrier_description[barrier_id].coll;
+
+  smpi_cpu_threshold = sg_cfg_get_double("smpi/cpu_threshold");
+  smpi_running_power = sg_cfg_get_double("smpi/running_power");
+  if (smpi_cpu_threshold < 0)
+    smpi_cpu_threshold = DBL_MAX;
 
   smpi_global_init();
 
index 0892c28..9206f28 100644 (file)
@@ -31,8 +31,11 @@ int PMPI_Init(int *argc, char ***argv)
 #ifdef HAVE_TRACING
   int rank = smpi_process_index();
   TRACE_smpi_init(rank);
-
   TRACE_smpi_computing_init(rank);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_INIT;
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+  TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
 #endif
   smpi_bench_begin();
   return MPI_SUCCESS;
@@ -40,11 +43,16 @@ int PMPI_Init(int *argc, char ***argv)
 
 int PMPI_Finalize(void)
 {
-  smpi_process_finalize();
   smpi_bench_end();
 #ifdef HAVE_TRACING
   int rank = smpi_process_index();
-  TRACE_smpi_computing_out(rank);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_FINALIZE;
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+#endif
+  smpi_process_finalize();
+#ifdef HAVE_TRACING
+  TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
   TRACE_smpi_finalize(smpi_process_index());
 #endif
   smpi_process_destroy();
@@ -115,10 +123,6 @@ int PMPI_Abort(MPI_Comm comm, int errorcode)
 {
   smpi_bench_end();
   smpi_process_destroy();
-#ifdef HAVE_TRACING
-  int rank = smpi_process_index();
-  TRACE_smpi_computing_out(rank);
-#endif
   // FIXME: should kill all processes in comm instead
   simcall_process_kill(SIMIX_process_self());
   return MPI_SUCCESS;
@@ -127,7 +131,13 @@ int PMPI_Abort(MPI_Comm comm, int errorcode)
 double PMPI_Wtime(void)
 {
   double time;
-  time = SIMIX_get_clock();
+  if (smpi_process_initialized() && !smpi_process_finalized() && !smpi_process_get_sampling()) {
+    smpi_bench_end();
+    time = SIMIX_get_clock();
+    smpi_bench_begin();
+  } else {
+    time = SIMIX_get_clock();
+  }
   return time;
 }
 
@@ -554,7 +564,7 @@ int PMPI_Group_excl(MPI_Group group, int n, int *ranks, MPI_Group * newgroup)
       newsize = oldsize - n;
       *newgroup = smpi_group_new(newsize);
 
-      int* to_exclude=xbt_new(int, smpi_group_size(group));
+      int* to_exclude=xbt_new0(int, smpi_group_size(group));
       for(i=0; i<oldsize; i++)
         to_exclude[i]=0;
       for(i=0; i<n; i++)
@@ -1047,7 +1057,14 @@ int PMPI_Irecv(void *buf, int count, MPI_Datatype datatype, int src,
 #ifdef HAVE_TRACING
     int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
     int src_traced = smpi_group_index(smpi_comm_group(comm), src);
-    TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, count*smpi_datatype_size(datatype));
+
+    instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+    extra->type = TRACING_IRECV;
+    extra->send_size = count;
+    extra->src = src_traced;
+    extra->dst = rank;
+    extra->datatype1 = encode_datatype(datatype);
+    TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
 #endif
 
     *request = smpi_mpi_irecv(buf, count, datatype, src, tag, comm);
@@ -1093,9 +1110,15 @@ int PMPI_Isend(void *buf, int count, MPI_Datatype datatype, int dst,
 
 #ifdef HAVE_TRACING
     int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-    TRACE_smpi_computing_out(rank);
     int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
-    TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+
+    instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+    extra->type = TRACING_ISEND;
+    extra->send_size = count;
+    extra->src = rank;
+    extra->dst = dst_traced;
+    extra->datatype1 = encode_datatype(datatype);
+    TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
     TRACE_smpi_send(rank, rank, dst_traced, count*smpi_datatype_size(datatype));
 #endif
 
@@ -1105,7 +1128,6 @@ int PMPI_Isend(void *buf, int count, MPI_Datatype datatype, int dst,
 #ifdef HAVE_TRACING
     TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
     (*request)->send = 1;
-    TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1142,9 +1164,14 @@ int PMPI_Issend(void* buf, int count, MPI_Datatype datatype,
 
 #ifdef HAVE_TRACING
     int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-    TRACE_smpi_computing_out(rank);
     int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
-    TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+    instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+    extra->type = TRACING_ISSEND;
+    extra->send_size = count;
+    extra->src = rank;
+    extra->dst = dst_traced;
+    extra->datatype1 = encode_datatype(datatype);
+    TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
     TRACE_smpi_send(rank, rank, dst_traced, count*smpi_datatype_size(datatype));
 #endif
 
@@ -1154,7 +1181,6 @@ int PMPI_Issend(void* buf, int count, MPI_Datatype datatype,
 #ifdef HAVE_TRACING
     TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
     (*request)->send = 1;
-    TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1190,8 +1216,13 @@ int PMPI_Recv(void *buf, int count, MPI_Datatype datatype, int src, int tag,
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
   int src_traced = smpi_group_index(smpi_comm_group(comm), src);
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, count*smpi_datatype_size(datatype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_RECV;
+  extra->send_size = count;
+  extra->src = src_traced;
+  extra->dst = rank;
+  extra->datatype1 = encode_datatype(datatype);
+  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
 #endif
 
     smpi_mpi_recv(buf, count, datatype, src, tag, comm, status);
@@ -1202,7 +1233,6 @@ int PMPI_Recv(void *buf, int count, MPI_Datatype datatype, int src, int tag,
   if(status!=MPI_STATUS_IGNORE)src_traced = smpi_group_index(smpi_comm_group(comm), status->MPI_SOURCE);
   TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
   TRACE_smpi_recv(rank, src_traced, rank);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1235,9 +1265,14 @@ int PMPI_Send(void *buf, int count, MPI_Datatype datatype, int dst, int tag,
 
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
-  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_SEND;
+  extra->send_size = count;
+  extra->src = rank;
+  extra->dst = dst_traced;
+  extra->datatype1 = encode_datatype(datatype);
+  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
   TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
 #endif
 
@@ -1246,7 +1281,6 @@ int PMPI_Send(void *buf, int count, MPI_Datatype datatype, int dst, int tag,
 
 #ifdef HAVE_TRACING
   TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1279,10 +1313,14 @@ int PMPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, MP
 
  #ifdef HAVE_TRACING
    int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-   TRACE_smpi_computing_out(rank);
    int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
-   TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
-   TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
+   instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+   extra->type = TRACING_SSEND;
+   extra->send_size = count;
+   extra->src = rank;
+   extra->dst = dst_traced;
+   extra->datatype1 = encode_datatype(datatype);
+   TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);   TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
  #endif
 
      smpi_mpi_ssend(buf, count, datatype, dst, tag, comm);
@@ -1290,7 +1328,6 @@ int PMPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, MP
 
  #ifdef HAVE_TRACING
    TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
-   TRACE_smpi_computing_in(rank);
  #endif
    }
 
@@ -1329,10 +1366,18 @@ int PMPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
 
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
   int src_traced = smpi_group_index(smpi_comm_group(comm), src);
-  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, sendcount*smpi_datatype_size(sendtype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_SENDRECV;
+  extra->send_size = sendcount;
+  extra->recv_size = recvcount;
+  extra->src = src_traced;
+  extra->dst = dst_traced;
+  extra->datatype1 = encode_datatype(sendtype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
   TRACE_smpi_send(rank, rank, dst_traced,sendcount*smpi_datatype_size(sendtype));
 #endif
 
@@ -1344,7 +1389,6 @@ int PMPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
 #ifdef HAVE_TRACING
   TRACE_smpi_ptp_out(rank, src_traced, dst_traced, __FUNCTION__);
   TRACE_smpi_recv(rank, src_traced, rank);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   }
@@ -1366,7 +1410,7 @@ int PMPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype,
       retval = MPI_ERR_COUNT;
   } else {
     int size = smpi_datatype_get_extent(datatype) * count;
-    recvbuf = xbt_new(char, size);
+    recvbuf = xbt_new0(char, size);
     retval =
         MPI_Sendrecv(buf, count, datatype, dst, sendtag, recvbuf, count,
                      datatype, src, recvtag, comm, status);
@@ -1491,13 +1535,14 @@ int PMPI_Wait(MPI_Request * request, MPI_Status * status)
     int rank = request && (*request)->comm != MPI_COMM_NULL
       ? smpi_process_index()
       : -1;
-    TRACE_smpi_computing_out(rank);
 
     int src_traced = (*request)->src;
     int dst_traced = (*request)->dst;
     MPI_Comm comm = (*request)->comm;
     int is_wait_for_receive = (*request)->recv;
-    TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__,-1);
+    instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+    extra->type = TRACING_WAIT;
+    TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
 #endif
 
     smpi_mpi_wait(request, status);
@@ -1513,7 +1558,6 @@ int PMPI_Wait(MPI_Request * request, MPI_Status * status)
           src_traced;
       TRACE_smpi_recv(rank, src_traced, dst_traced);
     }
-    TRACE_smpi_computing_in(rank);
 #endif
 
   }
@@ -1524,16 +1568,17 @@ int PMPI_Wait(MPI_Request * request, MPI_Status * status)
 
 int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * status)
 {
-  int retval = 0;
+  if (index == NULL)
+    return MPI_ERR_ARG;
 
   smpi_bench_end();
 #ifdef HAVE_TRACING
   //save requests information for tracing
   int i;
-  int *srcs = xbt_new(int, count);
-  int *dsts = xbt_new(int, count);
-  int *recvs = xbt_new(int, count);
-  MPI_Comm *comms = xbt_new(MPI_Comm, count);
+  int *srcs = xbt_new0(int, count);
+  int *dsts = xbt_new0(int, count);
+  int *recvs = xbt_new0(int, count);
+  MPI_Comm *comms = xbt_new0(MPI_Comm, count);
 
   for (i = 0; i < count; i++) {
     MPI_Request req = requests[i];      //already received requests are no longer valid
@@ -1545,17 +1590,13 @@ int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * sta
     }
   }
   int rank_traced = smpi_process_index();
-  TRACE_smpi_computing_out(rank_traced);
-
-  TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,count);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_WAITANY;
+  extra->send_size=count;
+  TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
 
 #endif
-  if (index == NULL) {
-    retval = MPI_ERR_ARG;
-  } else {
-    *index = smpi_mpi_waitany(count, requests, status);
-    retval = MPI_SUCCESS;
-  }
+  *index = smpi_mpi_waitany(count, requests, status);
 #ifdef HAVE_TRACING
   if(*index!=MPI_UNDEFINED){
     int src_traced = srcs[*index];
@@ -1576,10 +1617,9 @@ int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * sta
     xbt_free(comms);
 
   }
-  TRACE_smpi_computing_in(rank_traced);
 #endif
   smpi_bench_begin();
-  return retval;
+  return MPI_SUCCESS;
 }
 
 int PMPI_Waitall(int count, MPI_Request requests[], MPI_Status status[])
@@ -1589,11 +1629,11 @@ int PMPI_Waitall(int count, MPI_Request requests[], MPI_Status status[])
 #ifdef HAVE_TRACING
   //save information from requests
   int i;
-  int *srcs = xbt_new(int, count);
-  int *dsts = xbt_new(int, count);
-  int *recvs = xbt_new(int, count);
-  int *valid = xbt_new(int, count);
-  MPI_Comm *comms = xbt_new(MPI_Comm, count);
+  int *srcs = xbt_new0(int, count);
+  int *dsts = xbt_new0(int, count);
+  int *recvs = xbt_new0(int, count);
+  int *valid = xbt_new0(int, count);
+  MPI_Comm *comms = xbt_new0(MPI_Comm, count);
 
   //int valid_count = 0;
   for (i = 0; i < count; i++) {
@@ -1609,9 +1649,10 @@ int PMPI_Waitall(int count, MPI_Request requests[], MPI_Status status[])
     }
   }
   int rank_traced = smpi_process_index();
-  TRACE_smpi_computing_out(rank_traced);
-
-  TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,count);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_WAITALL;
+  extra->send_size=count;
+  TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
 #endif
   int retval = smpi_mpi_waitall(count, requests, status);
 #ifdef HAVE_TRACING
@@ -1638,7 +1679,6 @@ int PMPI_Waitall(int count, MPI_Request requests[], MPI_Status status[])
   xbt_free(valid);
   xbt_free(comms);
 
-  TRACE_smpi_computing_in(rank_traced);
 #endif
   smpi_bench_begin();
   return retval;
@@ -1688,15 +1728,20 @@ int PMPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm c
   } else {
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_BCAST;
+  extra->send_size = count;
+  extra->root = root_traced;
+  extra->datatype1 = encode_datatype(datatype);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
+
 #endif
     mpi_coll_bcast_fun(buf, count, datatype, root, comm);
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1715,14 +1760,14 @@ int PMPI_Barrier(MPI_Comm comm)
   } else {
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, smpi_comm_size(comm));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_BARRIER;
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
 #endif
     mpi_coll_barrier_fun(comm);
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1757,9 +1802,16 @@ int PMPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
     }
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(sendtmptype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_GATHER;
+  extra->send_size = sendtmpcount;
+  extra->recv_size = recvcount;
+  extra->root = root_traced;
+  extra->datatype1 = encode_datatype(sendtmptype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
 #endif
     mpi_coll_gather_fun(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcount,
                     recvtype, root, comm);
@@ -1768,7 +1820,6 @@ int PMPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1804,16 +1855,27 @@ int PMPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
 
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(sendtmptype));
+  int i=0;
+  int size = smpi_comm_size(comm);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_GATHERV;
+  extra->send_size = sendtmpcount;
+  extra->recvcounts= xbt_malloc(size*sizeof(int));
+  for(i=0; i< size; i++)//copy data to avoid bad free
+    extra->recvcounts[i] = recvcounts[i];
+  extra->num_processes = size;
+  extra->root = root_traced;
+  extra->datatype1 = encode_datatype(sendtmptype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
 #endif
     smpi_mpi_gatherv(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcounts,
                      displs, recvtype, root, comm);
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1845,8 +1907,14 @@ int PMPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype,
     }
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLGATHER;
+  extra->send_size = sendcount;
+  extra->recv_size = recvcount;
+  extra->datatype1 = encode_datatype(sendtype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
 #endif
     mpi_coll_allgather_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount,
                            recvtype, comm);
@@ -1886,15 +1954,25 @@ int PMPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
     }
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
+  int i=0;
+  int size = smpi_comm_size(comm);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLGATHERV;
+  extra->send_size = sendcount;
+  extra->recvcounts= xbt_malloc(size*sizeof(int));
+  for(i=0; i< size; i++)//copy data to avoid bad free
+    extra->recvcounts[i] = recvcounts[i];
+  extra->num_processes = size;
+  extra->datatype1 = encode_datatype(sendtype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
     mpi_coll_allgatherv_fun(sendbuf, sendcount, sendtype, recvbuf, recvcounts,
                         displs, recvtype, comm);
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1923,17 +2001,22 @@ int PMPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype,
     }
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(recvtype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_SCATTER;
+  extra->send_size = sendcount;
+  extra->recv_size= recvcount;
+  extra->root = root_traced;
+  extra->datatype1 = encode_datatype(sendtype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
 #endif
     mpi_coll_scatter_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount,
                      recvtype, root, comm);
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1963,18 +2046,28 @@ int PMPI_Scatterv(void *sendbuf, int *sendcounts, int *displs,
     }
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  int count=0, i;
-  for(i=0; i<smpi_comm_size(comm);i++)count+=sendcounts[i];
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(sendtype));
+  int i=0;
+  int size = smpi_comm_size(comm);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_SCATTERV;
+  extra->recv_size = recvcount;
+  extra->sendcounts= xbt_malloc(size*sizeof(int));
+  for(i=0; i< size; i++)//copy data to avoid bad free
+    extra->sendcounts[i] = sendcounts[i];
+  extra->num_processes = size;
+  extra->root = root_traced;
+  extra->datatype1 = encode_datatype(sendtype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
+
 #endif
     smpi_mpi_scatterv(sendbuf, sendcounts, displs, sendtype, recvbuf,
                       recvcount, recvtype, root, comm);
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -1996,16 +2089,20 @@ int PMPI_Reduce(void *sendbuf, void *recvbuf, int count,
   } else {
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
   int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_REDUCE;
+  extra->send_size = count;
+  extra->datatype1 = encode_datatype(datatype);
+  extra->root = root_traced;
+
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
 #endif
     mpi_coll_reduce_fun(sendbuf, recvbuf, count, datatype, op, root, comm);
 
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -2050,8 +2147,12 @@ int PMPI_Allreduce(void *sendbuf, void *recvbuf, int count,
     }
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLREDUCE;
+  extra->send_size = count;
+  extra->datatype1 = encode_datatype(datatype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
     mpi_coll_allreduce_fun(sendtmpbuf, recvbuf, count, datatype, op, comm);
 
@@ -2062,7 +2163,6 @@ int PMPI_Allreduce(void *sendbuf, void *recvbuf, int count,
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -2086,14 +2186,17 @@ int PMPI_Scan(void *sendbuf, void *recvbuf, int count,
   } else {
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_SCAN;
+  extra->send_size = count;
+  extra->datatype1 = encode_datatype(datatype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
     smpi_mpi_scan(sendbuf, recvbuf, count, datatype, op, comm);
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -2116,14 +2219,17 @@ int PMPI_Exscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
   } else {
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_EXSCAN;
+  extra->send_size = count;
+  extra->datatype1 = encode_datatype(datatype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
     smpi_mpi_exscan(sendbuf, recvbuf, count, datatype, op, comm);
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -2148,10 +2254,18 @@ int PMPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts,
   } else {
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  int count=0, i;
-  for(i=0; i<smpi_comm_size(comm);i++)count+=recvcounts[i];
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
+  int i=0;
+  int size = smpi_comm_size(comm);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_REDUCE_SCATTER;
+  extra->send_size = 0;
+  extra->recvcounts= xbt_malloc(size*sizeof(int));
+  for(i=0; i< size; i++)//copy data to avoid bad free
+    extra->recvcounts[i] = recvcounts[i];
+  extra->num_processes = size;
+  extra->datatype1 = encode_datatype(datatype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
     void* sendtmpbuf=sendbuf;
     if(sendbuf==MPI_IN_PLACE){
@@ -2163,7 +2277,6 @@ int PMPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts,
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -2186,12 +2299,21 @@ int PMPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount,
   } else if (recvcount < 0) {
     retval = MPI_ERR_ARG;
   } else {
+    int count=smpi_comm_size(comm);
+
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, recvcount*smpi_comm_size(comm)*smpi_datatype_size(datatype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_REDUCE_SCATTER;
+  extra->send_size = 0;
+  extra->recvcounts= xbt_malloc(count*sizeof(int));
+  for(i=0; i< count; i++)//copy data to avoid bad free
+    extra->recvcounts[i] = recvcount;
+  extra->num_processes = count;
+  extra->datatype1 = encode_datatype(datatype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
-    int count=smpi_comm_size(comm);
     int* recvcounts=(int*)xbt_malloc(count);
     for (i=0; i<count;i++)recvcounts[i]=recvcount;
     mpi_coll_reduce_scatter_fun(sendbuf, recvbuf, recvcounts,
@@ -2200,7 +2322,6 @@ int PMPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount,
     retval = MPI_SUCCESS;
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -2224,13 +2345,18 @@ int PMPI_Alltoall(void *sendbuf, int sendcount, MPI_Datatype sendtype,
   } else {
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, sendcount*smpi_datatype_size(sendtype));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLTOALL;
+  extra->send_size = sendcount;
+  extra->recv_size = recvcount;
+  extra->datatype1 = encode_datatype(sendtype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
     retval = mpi_coll_alltoall_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
@@ -2257,10 +2383,28 @@ int PMPI_Alltoallv(void *sendbuf, int *sendcounts, int *senddisps,
   } else {
 #ifdef HAVE_TRACING
   int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  int i, size=0;
-  for(i=0; i< smpi_comm_size(comm);i++)size+=sendcounts[i];
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, size*smpi_datatype_size(sendtype));
+  int i=0;
+  int size = smpi_comm_size(comm);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLTOALLV;
+  extra->send_size = 0;
+  extra->recv_size = 0;
+  extra->recvcounts= xbt_malloc(size*sizeof(int));
+  extra->sendcounts= xbt_malloc(size*sizeof(int));
+
+  for(i=0; i< size; i++){//copy data to avoid bad free
+    extra->send_size += sendcounts[i];
+    extra->recv_size += recvcounts[i];
+
+    extra->sendcounts[i] = sendcounts[i];
+    extra->recvcounts[i] = recvcounts[i];
+  }
+  extra->num_processes = size;
+
+  extra->datatype1 = encode_datatype(sendtype);
+  extra->datatype2 = encode_datatype(recvtype);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
     retval =
         mpi_coll_alltoallv_fun(sendbuf, sendcounts, senddisps, sendtype,
@@ -2268,7 +2412,6 @@ int PMPI_Alltoallv(void *sendbuf, int *sendcounts, int *senddisps,
                                   comm);
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
   }
 
index fbfb107..507957f 100644 (file)
@@ -27,11 +27,6 @@ static void log_timed_action (const char *const *action, double clock){
   }
 }
 
-typedef struct {
-  xbt_dynar_t irecvs; /* of MPI_Request */
-} s_smpi_replay_globals_t, *smpi_replay_globals_t;
-
-
 /* Helper function */
 static double parse_double(const char *string)
 {
@@ -77,18 +72,41 @@ static MPI_Datatype decode_datatype(const char *const action)
    return MPI_CURRENT_TYPE;
 }
 
+
+const char* encode_datatype(MPI_Datatype datatype)
+{
+
+  //default type for output is set to MPI_BYTE
+  // MPI_DEFAULT_TYPE is not set for output, use directly MPI_BYTE
+  if (datatype==MPI_BYTE){
+      return "";
+  }
+  if(datatype==MPI_DOUBLE)
+      return "0";
+  if(datatype==MPI_INT)
+      return "1";
+  if(datatype==MPI_CHAR)
+      return "2";
+  if(datatype==MPI_SHORT)
+      return "3";
+  if(datatype==MPI_LONG)
+    return "4";
+  if(datatype==MPI_FLOAT)
+      return "5";
+
+  // default - not implemented.
+  // do not warn here as we pass in this function even for other trace formats
+  return "-1";
+}
+
 static void action_init(const char *const *action)
 {
   int i;
   XBT_DEBUG("Initialize the counters");
-  smpi_replay_globals_t globals =  xbt_new(s_smpi_replay_globals_t, 1);
-  globals->irecvs = xbt_dynar_new(sizeof(MPI_Request),NULL);
 
   if(action[2]) MPI_DEFAULT_TYPE= MPI_DOUBLE; // default MPE dataype 
   else MPI_DEFAULT_TYPE= MPI_BYTE; // default TAU datatype
 
-  smpi_process_set_user_data((void*) globals);
-
   /* start a simulated timer */
   smpi_process_simulated_start();
   /*initialize the number of active processes */
@@ -98,21 +116,13 @@ static void action_init(const char *const *action)
     reqq=xbt_new0(xbt_dynar_t,active_processes);
 
     for(i=0;i<active_processes;i++){
-      reqq[i]=xbt_dynar_new(sizeof(MPI_Request),NULL);
+      reqq[i]=xbt_dynar_new(sizeof(MPI_Request),&xbt_free_ref);
     }
   }
 }
 
 static void action_finalize(const char *const *action)
 {
-  smpi_replay_globals_t globals =
-      (smpi_replay_globals_t) smpi_process_get_user_data();
-  if (globals){
-    XBT_DEBUG("There are %lu irecvs in the dynar",
-         xbt_dynar_length(globals->irecvs));
-    xbt_dynar_free_container(&(globals->irecvs));
-  }
-  free(globals);
 }
 
 static void action_comm_size(const char *const *action)
@@ -140,7 +150,18 @@ static void action_comm_dup(const char *const *action)
 static void action_compute(const char *const *action)
 {
   double clock = smpi_process_simulated_elapsed();
-  smpi_execute_flops(parse_double(action[2]));
+  double flops= parse_double(action[2]);
+#ifdef HAVE_TRACING
+  int rank = smpi_comm_rank(MPI_COMM_WORLD);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type=TRACING_COMPUTING;
+  extra->comp_size=flops;
+  TRACE_smpi_computing_in(rank, extra);
+#endif
+  smpi_execute_flops(flops);
+#ifdef HAVE_TRACING
+  TRACE_smpi_computing_out(rank);
+#endif
 
   log_timed_action (action, clock);
 }
@@ -159,9 +180,15 @@ static void action_send(const char *const *action)
 
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
-  TRACE_smpi_computing_out(rank);
+
   int dst_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), to);
-  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_SEND;
+  extra->send_size = size;
+  extra->src = rank;
+  extra->dst = dst_traced;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
   TRACE_smpi_send(rank, rank, dst_traced, size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
@@ -171,7 +198,6 @@ static void action_send(const char *const *action)
 
   #ifdef HAVE_TRACING
   TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
 }
@@ -188,9 +214,14 @@ static void action_Isend(const char *const *action)
 
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
-  TRACE_smpi_computing_out(rank);
   int dst_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), to);
-  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ISEND;
+  extra->send_size = size;
+  extra->src = rank;
+  extra->dst = dst_traced;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
   TRACE_smpi_send(rank, rank, dst_traced, size*smpi_datatype_size(MPI_CURRENT_TYPE));
 #endif
 
@@ -199,7 +230,6 @@ static void action_Isend(const char *const *action)
 #ifdef HAVE_TRACING
   TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
   request->send = 1;
-  TRACE_smpi_computing_in(rank);
 #endif
 
   xbt_dynar_push(reqq[smpi_comm_rank(MPI_COMM_WORLD)],&request);
@@ -219,9 +249,14 @@ static void action_recv(const char *const *action) {
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   int src_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), from);
-  TRACE_smpi_computing_out(rank);
 
-  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_RECV;
+  extra->send_size = size;
+  extra->src = src_traced;
+  extra->dst = rank;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
 #endif
 
   smpi_mpi_recv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD, &status);
@@ -229,7 +264,6 @@ static void action_recv(const char *const *action) {
 #ifdef HAVE_TRACING
   TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
   TRACE_smpi_recv(rank, src_traced, rank);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -242,16 +276,19 @@ static void action_Irecv(const char *const *action)
   double clock = smpi_process_simulated_elapsed();
   MPI_Request request;
 
-  smpi_replay_globals_t globals =
-     (smpi_replay_globals_t) smpi_process_get_user_data();
-
   if(action[4]) MPI_CURRENT_TYPE=decode_datatype(action[4]);
   else MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE;
 
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
   int src_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), from);
-  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_IRECV;
+  extra->send_size = size;
+  extra->src = src_traced;
+  extra->dst = rank;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
 #endif
 
   request = smpi_mpi_irecv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD);
@@ -260,7 +297,6 @@ static void action_Irecv(const char *const *action)
   TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
   request->recv = 1;
 #endif
-  xbt_dynar_push(globals->irecvs,&request);
   xbt_dynar_push(reqq[smpi_comm_rank(MPI_COMM_WORLD)],&request);
 
   log_timed_action (action, clock);
@@ -270,24 +306,24 @@ static void action_wait(const char *const *action){
   double clock = smpi_process_simulated_elapsed();
   MPI_Request request;
   MPI_Status status;
-  smpi_replay_globals_t globals =
-      (smpi_replay_globals_t) smpi_process_get_user_data();
 
-  xbt_assert(xbt_dynar_length(globals->irecvs),
-      "action wait not preceded by any irecv: %s",
+  xbt_assert(xbt_dynar_length(reqq[smpi_comm_rank(MPI_COMM_WORLD)]),
+      "action wait not preceded by any irecv or isend: %s",
       xbt_str_join_array(action," "));
-  request = xbt_dynar_pop_as(globals->irecvs,MPI_Request);
+  request = xbt_dynar_pop_as(reqq[smpi_comm_rank(MPI_COMM_WORLD)],MPI_Request);
+  xbt_assert(request != NULL, "found null request in reqq");
 #ifdef HAVE_TRACING
-  int rank = request && request->comm != MPI_COMM_NULL
+  int rank = request->comm != MPI_COMM_NULL
       ? smpi_comm_rank(request->comm)
       : -1;
-  TRACE_smpi_computing_out(rank);
 
   MPI_Group group = smpi_comm_group(request->comm);
   int src_traced = smpi_group_rank(group, request->src);
   int dst_traced = smpi_group_rank(group, request->dst);
   int is_wait_for_receive = request->recv;
-  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, -1);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_WAIT;
+  TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
 #endif
   smpi_mpi_wait(&request, &status);
 #ifdef HAVE_TRACING
@@ -295,7 +331,6 @@ static void action_wait(const char *const *action){
   if (is_wait_for_receive) {
     TRACE_smpi_recv(rank, src_traced, dst_traced);
   }
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -345,10 +380,11 @@ static void action_waitall(const char *const *action){
     }
    }
    int rank_traced = smpi_process_index();
-   TRACE_smpi_computing_out(rank_traced);
-
-   TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__, count_requests);
-  #endif
+   instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+   extra->type = TRACING_WAITALL;
+   extra->send_size=count_requests;
+   TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
+ #endif
 
     smpi_mpi_waitall(count_requests, requests, status);
 
@@ -367,10 +403,9 @@ static void action_waitall(const char *const *action){
    xbt_dynar_free(&srcs);
    xbt_dynar_free(&dsts);
    xbt_dynar_free(&recvs);
-   TRACE_smpi_computing_in(rank_traced);
   #endif
 
-   xbt_dynar_reset(reqq[smpi_comm_rank(MPI_COMM_WORLD)]);
+   xbt_dynar_free_container(&(reqq[smpi_comm_rank(MPI_COMM_WORLD)]));
   }
   log_timed_action (action, clock);
 }
@@ -379,13 +414,13 @@ static void action_barrier(const char *const *action){
   double clock = smpi_process_simulated_elapsed();
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, smpi_comm_size(MPI_COMM_WORLD));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_BARRIER;
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
 #endif
   smpi_mpi_barrier(MPI_COMM_WORLD);
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -412,15 +447,20 @@ static void action_bcast(const char *const *action)
 
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
-  TRACE_smpi_computing_out(rank);
-  int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), 0);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  int root_traced = smpi_group_index(smpi_comm_group(MPI_COMM_WORLD), root);
+
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_BCAST;
+  extra->send_size = size;
+  extra->root = root_traced;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
+
 #endif
 
-  smpi_mpi_bcast(NULL, size, MPI_CURRENT_TYPE, root, MPI_COMM_WORLD);
+  mpi_coll_bcast_fun(NULL, size, MPI_CURRENT_TYPE, root, MPI_COMM_WORLD);
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -443,15 +483,20 @@ static void action_reduce(const char *const *action)
 
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
-  TRACE_smpi_computing_out(rank);
-  int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), 0);
-  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,comm_size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), root);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_REDUCE;
+  extra->send_size = comm_size;
+  extra->comp_size = comp_size;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  extra->root = root_traced;
+
+  TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
 #endif
    mpi_coll_reduce_fun(NULL, NULL, comm_size, MPI_CURRENT_TYPE, MPI_OP_NULL, root, MPI_COMM_WORLD);
    smpi_execute_flops(comp_size);
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -467,15 +512,19 @@ static void action_allReduce(const char *const *action) {
   double clock = smpi_process_simulated_elapsed();
 #ifdef HAVE_TRACING
   int rank = smpi_comm_rank(MPI_COMM_WORLD);
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,comp_size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLREDUCE;
+  extra->send_size = comm_size;
+  extra->comp_size = comp_size;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
   mpi_coll_reduce_fun(NULL, NULL, comm_size, MPI_CURRENT_TYPE, MPI_OP_NULL, 0, MPI_COMM_WORLD);
   smpi_execute_flops(comp_size);
   mpi_coll_bcast_fun(NULL, comm_size, MPI_CURRENT_TYPE, 0, MPI_COMM_WORLD);
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -501,15 +550,20 @@ static void action_allToAll(const char *const *action) {
 
 #ifdef HAVE_TRACING
   int rank = smpi_process_index();
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,send_size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLTOALL;
+  extra->send_size = send_size;
+  extra->recv_size = recv_size;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
 
   mpi_coll_alltoall_fun(send, send_size, MPI_CURRENT_TYPE, recv, recv_size, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
 
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -544,7 +598,7 @@ static void action_gather(const char *const *action) {
     MPI_CURRENT_TYPE2=MPI_DEFAULT_TYPE;
   }
   void *send = calloc(send_size, smpi_datatype_size(MPI_CURRENT_TYPE));
-  void *recv = calloc(recv_size, smpi_datatype_size(MPI_CURRENT_TYPE2));
+  void *recv = NULL;
 
   int root=atoi(action[4]);
   int rank = smpi_process_index();
@@ -553,8 +607,15 @@ static void action_gather(const char *const *action) {
     recv = calloc(recv_size*comm_size, smpi_datatype_size(MPI_CURRENT_TYPE2));
 
 #ifdef HAVE_TRACING
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,send_size*smpi_datatype_size(MPI_CURRENT_TYPE));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_GATHER;
+  extra->send_size = send_size;
+  extra->recv_size = recv_size;
+  extra->root = root;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+
+  TRACE_smpi_collective_in(rank, root, __FUNCTION__, extra);
 #endif
 smpi_mpi_gather(send, send_size, MPI_CURRENT_TYPE,
                 recv, recv_size, MPI_CURRENT_TYPE2,
@@ -562,7 +623,6 @@ smpi_mpi_gather(send, send_size, MPI_CURRENT_TYPE,
 
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -571,6 +631,79 @@ smpi_mpi_gather(send, send_size, MPI_CURRENT_TYPE,
 }
 
 
+
+static void action_gatherv(const char *const *action) {
+  /*
+ The structure of the gatherv action for the rank 0 (total 4 processes)
+ is the following:
+ 0 gather 68 68 10 10 10 0 0 0
+
+  where:
+  1) 68 is the sendcount
+  2) 68 10 10 10 is the recvcounts
+  3) 0 is the root node
+  4) 0 is the send datatype id, see decode_datatype()
+  5) 0 is the recv datatype id, see decode_datatype()
+  */
+  double clock = smpi_process_simulated_elapsed();
+  int comm_size = smpi_comm_size(MPI_COMM_WORLD);
+  int send_size = parse_double(action[2]);
+  int *disps = xbt_new0(int, comm_size);
+  int *recvcounts = xbt_new0(int, comm_size);
+  int i=0,recv_sum=0;
+
+  MPI_Datatype MPI_CURRENT_TYPE2;
+  if(action[4+comm_size]) {
+    MPI_CURRENT_TYPE=decode_datatype(action[4+comm_size]);
+    MPI_CURRENT_TYPE2=decode_datatype(action[5+comm_size]);
+  } else {
+    MPI_CURRENT_TYPE=MPI_DEFAULT_TYPE;
+    MPI_CURRENT_TYPE2=MPI_DEFAULT_TYPE;
+  }
+  void *send = calloc(send_size, smpi_datatype_size(MPI_CURRENT_TYPE));
+  void *recv = NULL;
+  for(i=0;i<comm_size;i++) {
+    recvcounts[i] = atoi(action[i+3]);
+    recv_sum=recv_sum+recvcounts[i];
+    disps[i] = 0;
+  }
+
+  int root=atoi(action[3+comm_size]);
+  int rank = smpi_process_index();
+
+  if(rank==root)
+    recv = calloc(recv_sum, smpi_datatype_size(MPI_CURRENT_TYPE2));
+
+#ifdef HAVE_TRACING
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_GATHERV;
+  extra->send_size = send_size;
+  extra->recvcounts= xbt_malloc(comm_size*sizeof(int));
+  for(i=0; i< comm_size; i++)//copy data to avoid bad free
+    extra->recvcounts[i] = recvcounts[i];
+  extra->root = root;
+  extra->num_processes = comm_size;
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+
+  TRACE_smpi_collective_in(rank, root, __FUNCTION__, extra);
+#endif
+smpi_mpi_gatherv(send, send_size, MPI_CURRENT_TYPE,
+                recv, recvcounts, disps, MPI_CURRENT_TYPE2,
+                root, MPI_COMM_WORLD);
+
+#ifdef HAVE_TRACING
+  TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+#endif
+
+  log_timed_action (action, clock);
+  xbt_free(recvcounts);
+  xbt_free(send);
+  xbt_free(recv);
+  xbt_free(disps);
+
+}
+
 static void action_reducescatter(const char *const *action) {
 
     /*
@@ -608,8 +741,18 @@ static void action_reducescatter(const char *const *action) {
   }
 
 #ifdef HAVE_TRACING
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, recv_sum*smpi_datatype_size(MPI_CURRENT_TYPE));
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_REDUCE_SCATTER;
+  extra->send_size = 0;
+  extra->recvcounts= xbt_malloc(comm_size*sizeof(int));
+  for(i=0; i< comm_size; i++)//copy data to avoid bad free
+    extra->recvcounts[i] = recvcounts[i];
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  extra->comp_size = comp_size;
+  extra->num_processes = comm_size;
+
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
    mpi_coll_reduce_fun(NULL, NULL, recv_sum, MPI_CURRENT_TYPE, MPI_OP_NULL,
        root, MPI_COMM_WORLD);
@@ -620,9 +763,9 @@ static void action_reducescatter(const char *const *action) {
 
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
-
+  xbt_free(recvcounts);
+  xbt_free(disps);
   log_timed_action (action, clock);
 }
 
@@ -668,16 +811,24 @@ static void action_allgatherv(const char *const *action) {
   void *recvbuf = calloc(recv_sum, smpi_datatype_size(MPI_CURRENT_TYPE2));  
 
 #ifdef HAVE_TRACING
-  int rank = MPI_COMM_WORLD != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(MPI_CURRENT_TYPE));
+  int rank = smpi_process_index();
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLGATHERV;
+  extra->send_size = sendcount;
+  extra->recvcounts= xbt_malloc(comm_size*sizeof(int));
+  for(i=0; i< comm_size; i++)//copy data to avoid bad free
+    extra->recvcounts[i] = recvcounts[i];
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+  extra->num_processes = comm_size;
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
 
 mpi_coll_allgatherv_fun(sendbuf, sendcount, MPI_CURRENT_TYPE, recvbuf, recvcounts, disps, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
 
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -735,18 +886,29 @@ static void action_allToAllv(const char *const *action) {
 
 
 #ifdef HAVE_TRACING
-  int rank = MPI_COMM_WORLD != MPI_COMM_NULL ? smpi_process_index() : -1;
-  TRACE_smpi_computing_out(rank);
-  int count=0;
-  for(i=0;i<comm_size;i++) count+=sendcounts[i];
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,count*smpi_datatype_size(MPI_CURRENT_TYPE));
+  int rank = smpi_process_index();
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_ALLTOALLV;
+  extra->recvcounts= xbt_malloc(comm_size*sizeof(int));
+  extra->sendcounts= xbt_malloc(comm_size*sizeof(int));
+  extra->num_processes = comm_size;
+
+  for(i=0; i< comm_size; i++){//copy data to avoid bad free
+    extra->send_size += sendcounts[i];
+    extra->sendcounts[i] = sendcounts[i];
+    extra->recv_size += recvcounts[i];
+    extra->recvcounts[i] = recvcounts[i];
+  }
+  extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+  extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
 #endif
     mpi_coll_alltoallv_fun(sendbuf, sendcounts, senddisps, MPI_CURRENT_TYPE,
                                recvbuf, recvcounts, recvdisps, MPI_CURRENT_TYPE,
                                MPI_COMM_WORLD);
 #ifdef HAVE_TRACING
   TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  TRACE_smpi_computing_in(rank);
 #endif
 
   log_timed_action (action, clock);
@@ -759,7 +921,18 @@ static void action_allToAllv(const char *const *action) {
 }
 
 void smpi_replay_init(int *argc, char***argv){
-  PMPI_Init(argc, argv);
+  smpi_process_init(argc, argv);
+  smpi_process_mark_as_initialized();
+#ifdef HAVE_TRACING
+  int rank = smpi_process_index();
+  TRACE_smpi_init(rank);
+  TRACE_smpi_computing_init(rank);
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_INIT;
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+  TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+#endif
+
   if (!smpi_process_index()){
     _xbt_replay_action_init();
     xbt_replay_action_register("init",       action_init);
@@ -780,6 +953,7 @@ void smpi_replay_init(int *argc, char***argv){
     xbt_replay_action_register("allToAll",   action_allToAll);
     xbt_replay_action_register("allToAllV",  action_allToAllv);
     xbt_replay_action_register("gather",  action_gather);
+    xbt_replay_action_register("gatherV",  action_gatherv);
     xbt_replay_action_register("allGatherV",  action_allgatherv);
     xbt_replay_action_register("reduceScatter",  action_reducescatter);
     xbt_replay_action_register("compute",    action_compute);
@@ -791,10 +965,23 @@ void smpi_replay_init(int *argc, char***argv){
 int smpi_replay_finalize(){
   double sim_time= 1.;
   /* One active process will stop. Decrease the counter*/
-  active_processes--;
   XBT_DEBUG("There are %lu elements in reqq[*]",
             xbt_dynar_length(reqq[smpi_comm_rank(MPI_COMM_WORLD)]));
-  xbt_dynar_free(&reqq[smpi_comm_rank(MPI_COMM_WORLD)]);
+  if (!xbt_dynar_is_empty(reqq[smpi_comm_rank(MPI_COMM_WORLD)])){
+    int count_requests=xbt_dynar_length(reqq[smpi_comm_rank(MPI_COMM_WORLD)]);
+    MPI_Request requests[count_requests];
+    MPI_Status status[count_requests];
+    unsigned int i;
+
+    xbt_dynar_foreach(reqq[smpi_comm_rank(MPI_COMM_WORLD)],i,requests[i]);
+    smpi_mpi_waitall(count_requests, requests, status);
+    active_processes--;
+  } else {
+    active_processes--;
+  }
+
+  xbt_dynar_free_container(&(reqq[smpi_comm_rank(MPI_COMM_WORLD)]));
+
   if(!active_processes){
     /* Last process alive speaking */
     /* end the simulated timer */
@@ -805,5 +992,17 @@ int smpi_replay_finalize(){
     reqq = NULL;
   }
   smpi_mpi_barrier(MPI_COMM_WORLD);
-  return PMPI_Finalize();
+#ifdef HAVE_TRACING
+  int rank = smpi_process_index();
+  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+  extra->type = TRACING_FINALIZE;
+  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+#endif
+  smpi_process_finalize();
+#ifdef HAVE_TRACING
+  TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+  TRACE_smpi_finalize(smpi_process_index());
+#endif
+  smpi_process_destroy();
+  return MPI_SUCCESS;
 }
index 36ddd2b..3b501a7 100755 (executable)
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
 
 CC=@CMAKE_C_COMPILER@
 
index 99bd888..bba2ffa 100644 (file)
@@ -1,6 +1,6 @@
-#! /bin/bash
+#! /usr/bin/env bash
 
-CC=gfortran
+F90=@GFORTRAN_EXE@
 
 INCLUDEARGS="@includeflag@"
 CMAKE_LINKARGS="-L@libdir@"
@@ -12,6 +12,23 @@ main_name=main
 declare -a TMPFILES
 trap 'rm -f "${TMPFILES[@]}"' EXIT
 
+# $1: prefix, $2: suffix
+mymktemp () {
+    tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
+    if [ -z "$tmp" ]; then
+        # mktemp failed (unsupported --suffix ?), try unsafe mode
+        tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
+        if [ -z "$tmp" ]; then
+            # mktemp failed again (doesn't exist ?), try very unsafe mode
+            tmp="$1_$$x$RANDOM"
+        fi
+        tmp="${tmp}$2"
+        # create temp file, and exit if it existed before
+        sh -C -c "true > \"${tmp}\"" || exit 1
+    fi
+    echo "${tmp}"
+}
+
 CMDLINE=""
 while [ -n "$1" ]; do
   ARG="$1"
@@ -23,8 +40,8 @@ while [ -n "$1" ]; do
       CMDLINE="${CMDLINE} -c "
       ;;
    *.f90|*.F90)
-      TMPFILE=$(mktemp "${ARG}_XXXXXX.f90")
-      TMPFILES+=( "${TMPFILE}" )
+      TMPFILE=$(mymktemp "${ARG}" ".f90")
+      TMPFILES+="${TMPFILE}"
       #replace "program main_name by subroutine user\_main (and the end clause as well)"
       sed 's/[[:space:]]*program[[:space:]]*\([a-zA-Z0-9\-\_]*\)/subroutine user\_main /gI;s/[[:space:]]*use[[:space:]]*mpi/\include \"mpif\.h\" /gI'  ${ARG} > ${TMPFILE}
       SRCFILE="${TMPFILE}"
@@ -36,7 +53,7 @@ while [ -n "$1" ]; do
   esac
 done
 
-CMDLINE="${CC} ${FFLAGS} ${CMDLINE} ${INCLUDEARGS} ${CMAKE_LINKARGS} ${LINKARGS}"
+CMDLINE="${F90} ${FFLAGS} ${CMDLINE} ${INCLUDEARGS} ${CMAKE_LINKARGS} ${LINKARGS}"
 
 #echo "${CMDLINE}"
 ${CMDLINE}
index 301802c..33093fc 100644 (file)
@@ -1,9 +1,26 @@
-#! /bin/bash
+#! /usr/bin/env bash
 prefix="@exec_prefix@"
 
 ARGS="-DMAIN__=user_main -Diargc_=smpi_process_argc -Dgetarg_=smpi_process_getarg"
-LINKARGS="-lf2c"
-SRCFILES=""
+LINKARGS="-L@F2C_LIBRARY_PATH@ -lf2c -lm"
+declare -a SRCFILES
+
+# $1: prefix, $2: suffix
+mymktemp () {
+    tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
+    if [ -z "$tmp" ]; then
+        # mktemp failed (unsupported --suffix ?), try unsafe mode
+        tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
+        if [ -z "$tmp" ]; then
+            # mktemp failed again (doesn't exist ?), try very unsafe mode
+            tmp="$1_$$x$RANDOM"
+        fi
+        tmp="${tmp}$2"
+        # create temp file, and exit if it existed before
+        sh -C -c "true > \"${tmp}\"" || exit 1
+    fi
+    echo "${tmp}"
+}
 
 while [ -n "$1" ]; do
   ARG="$1"
@@ -11,10 +28,10 @@ while [ -n "$1" ]; do
   case "${ARG}" in
     *.f)
       SRCFILE="$(readlink -f ${ARG} 2>/dev/null)"
-       if [ -z $SRCFILE ] ; then
+       if [ -z "$SRCFILE" ] ; then
          SRCFILE="$ARG"
        fi
-       SRCFILES="${SRCFILES} ${SRCFILE}"
+       SRCFILES+="${SRCFILE}"
        ;;
     *)
       if [ "${ARG}" = "-c" ]; then
@@ -28,13 +45,18 @@ ARGS="${ARGS} ${LINKARGS}"
 
 if [ -n "${SRCFILES}" ]
 then
-   for SRCFILE in "${SRCFILES}"
+   for SRCFILE in "${SRCFILES[@]}"
    do
-      TMPFILE=${SRCFILE}\_$RANDOM.f
+      TMPFILE=$(mymktemp "${SRCFILE}" ".f")
       cp ${SRCFILE} ${TMPFILE}
       CFILE="${TMPFILE%.f}.c"
       #echo "$prefix/bin/smpif2c ${TMPFILE} && $prefix/bin/smpicc ${ARGS} ${CFILE} && rm ${CFILE} && rm ${TMPFILE}"
-      $prefix/bin/smpif2c ${TMPFILE} && $prefix/bin/smpicc ${ARGS} ${CFILE} && rm ${CFILE} && rm ${TMPFILE}
+      $prefix/bin/smpif2c ${TMPFILE} && $prefix/bin/smpicc ${ARGS} ${CFILE} && rm ${CFILE} && rm ${TMPFILE} || exit $?
+      # When the file is compiled with "-c" and no output file is specified with
+      # "-o", rename the output.  FIXME: do it properly.
+      if [ -f ${CFILE%.c}.o ]; then
+          mv ${CFILE%.c}.o ${SRCFILE%.f}.o
+      fi
    done
 else
    #echo "$prefix/bin/smpicc ${ARGS}"
index 26f9b88..2aaea16 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#! /usr/bin/env bash
 
 @CMAKE_SMPI_COMMAND@
 
@@ -27,7 +27,8 @@ Options:
   -map                       # display the machine on which each process rank is mapped
   -np <numprocs>             # use that amount of processes from the hostfile.
                              # By default, all processes of the hostfile are used.
-  -trace                     # activate tracing
+  -trace-ti                  # activate time independant tracing (for replay, default in smpi_simgrid.txt)
+  -trace                     # activate tracing (Paje, default in smpi_simgrid.trace)
   -trace-comment <comment>   # put a comment on the top of the trace file
   -trace-comment-file <file> # put file contents on the top of the trace file as comment
   -trace-grouped             # group MPI processes by location
@@ -98,6 +99,12 @@ while true; do
       shift 1
    ;;
 
+   "-trace-ti")
+      TRACE_ACTIVE="true"
+      TRACE_TI_ACTIVE="true"
+      shift 1
+   ;;
+
    "-trace-comment")
       TRACE_COMMENT="$2"
       shift 2
@@ -341,10 +348,17 @@ APPLICATIONFOOT
 ##---------------------- SMPI TRACING OPTIONS ---------------------------------
 if [ -n "${TRACE_ACTIVE}" ]; then
   #define trace filename
-  if [ -z "${TRACE_FILENAME}" ]; then
-    TRACE_FILENAME="smpi_simgrid.trace"
+  if [ -n "${TRACE_TI_ACTIVE}" ]; then
+    if [ -z "${TRACE_FILENAME}" ]; then
+      TRACE_FILENAME="smpi_simgrid.txt"
+    fi
+    TRACEOPTIONS="--cfg=tracing:yes --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:yes --cfg=tracing/smpi/format:TI --cfg=tracing/smpi/computing:yes"
+  else
+    if [ -z "${TRACE_FILENAME}" ]; then
+      TRACE_FILENAME="smpi_simgrid.trace"
+    fi
+    TRACEOPTIONS="--cfg=tracing:yes --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:yes"
   fi
-  TRACEOPTIONS="--cfg=tracing:1 --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:1"
 
   if [ -n "${TRACE_COMMENT}" ]; then
     TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/comment:${TRACE_COMMENT}"
@@ -355,11 +369,11 @@ if [ -n "${TRACE_ACTIVE}" ]; then
   fi
 
   if [ -n "${TRACE_GROUPED}" ]; then
-    TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/smpi/group:1"
+    TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/smpi/group:yes"
   fi
 
   if [ -n "${TRACE_RESOURCE}" ]; then
-    TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1"
+    TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes"
   fi
 
   if [ -n "${TRACE_VIVA}" ]; then
index feef80b..420695c 100644 (file)
@@ -93,7 +93,7 @@ void lmm_system_free(lmm_system_t sys)
   free(sys);
 }
 
-XBT_INLINE void lmm_variable_disable(lmm_system_t sys, lmm_variable_t var)
+static XBT_INLINE void lmm_variable_disable(lmm_system_t sys, lmm_variable_t var)
 {
   int i;
   int n;
index de54e43..807bfaf 100644 (file)
@@ -233,7 +233,9 @@ int find_model_description(s_surf_model_description_t * table,
     if (!strcmp(name, table[i].name)) {
       return i;
     }
-  name_list = strdup(table[0].name);
+  if (!table[0].name)
+    xbt_die("No model is valid! This is a bug.");
+  name_list = xbt_strdup(table[0].name);
   for (i = 1; table[i].name; i++) {
     name_list =
         xbt_realloc(name_list,
index be839e3..3984e43 100644 (file)
@@ -171,8 +171,9 @@ XBT_INLINE void xbt_dict_set_ext(xbt_dict_t dict,
   xbt_dictelm_t current, previous = NULL;
   xbt_assert(dict);
 
-  XBT_DEBUG("ADD %.*s hash = %u, size = %d, & = %u", key_len, key, hash_code,
-         dict->table_size, hash_code & dict->table_size);
+  XBT_CDEBUG(xbt_dict,
+             "ADD %.*s hash = %u, size = %d, & = %u", key_len, key, hash_code,
+             dict->table_size, hash_code & dict->table_size);
   current = dict->table[hash_code & dict->table_size];
   while (current != NULL &&
          (hash_code != current->hash_code || key_len != current->key_len
@@ -194,9 +195,9 @@ XBT_INLINE void xbt_dict_set_ext(xbt_dict_t dict,
       previous->next = current;
     }
   } else {
-    XBT_DEBUG("Replace %.*s by %.*s under key %.*s",
-           key_len, (char *) current->content,
-           key_len, (char *) data, key_len, (char *) key);
+    XBT_CDEBUG(xbt_dict, "Replace %.*s by %.*s under key %.*s",
+               key_len, (char *) current->content,
+               key_len, (char *) data, key_len, (char *) key);
     /* there is already an element with the same key: overwrite it */
     xbt_dictelm_set_data(dict, current, data, free_ctn);
   }
index 790536c..c39e65d 100644 (file)
@@ -81,9 +81,9 @@ XBT_INLINE void xbt_dict_cursor_rewind(xbt_dict_cursor_t cursor)
 XBT_INLINE void xbt_dict_cursor_first(const xbt_dict_t dict,
                                       xbt_dict_cursor_t * cursor)
 {
-  XBT_DEBUG("xbt_dict_cursor_first");
+  XBT_CDEBUG(xbt_dict_cursor, "xbt_dict_cursor_first");
   if (!*cursor) {
-    XBT_DEBUG("Create the cursor on first use");
+    XBT_CDEBUG(xbt_dict_cursor, "Create the cursor on first use");
     *cursor = xbt_dict_cursor_new(dict);
   } else {
     xbt_dict_cursor_rewind(*cursor);
@@ -102,7 +102,7 @@ XBT_INLINE void xbt_dict_cursor_step(xbt_dict_cursor_t cursor)
   xbt_dictelm_t current;
   int line;
 
-  XBT_DEBUG("xbt_dict_cursor_step");
+  XBT_CDEBUG(xbt_dict_cursor, "xbt_dict_cursor_step");
   xbt_assert(cursor);
 
   current = cursor->current;
@@ -111,17 +111,17 @@ XBT_INLINE void xbt_dict_cursor_step(xbt_dict_cursor_t cursor)
   if (cursor->dict != NULL) {
 
     if (current != NULL) {
-      XBT_DEBUG("current is not null, take the next element");
+      XBT_CDEBUG(xbt_dict_cursor, "current is not null, take the next element");
       current = current->next;
-      XBT_DEBUG("next element: %p", current);
+      XBT_CDEBUG(xbt_dict_cursor, "next element: %p", current);
     }
 
     while (current == NULL && ++line <= cursor->dict->table_size) {
-      XBT_DEBUG("current is NULL, take the next line");
+      XBT_CDEBUG(xbt_dict_cursor, "current is NULL, take the next line");
       current = cursor->dict->table[line];
-      XBT_DEBUG("element in the next line: %p", current);
+      XBT_CDEBUG(xbt_dict_cursor, "element in the next line: %p", current);
     }
-    XBT_DEBUG("search finished, current = %p, line = %d", current, line);
+    XBT_CDEBUG(xbt_dict_cursor, "search finished, current = %p, line = %d", current, line);
 
     cursor->current = current;
     cursor->line = line;
@@ -139,7 +139,7 @@ XBT_INLINE int xbt_dict_cursor_get_or_free(xbt_dict_cursor_t * cursor,
 
   xbt_dictelm_t current;
 
-  XBT_DEBUG("xbt_dict_get_or_free");
+  XBT_CDEBUG(xbt_dict_cursor, "xbt_dict_get_or_free");
 
 
   if (!cursor || !(*cursor))
index 7517190..d9e20b9 100644 (file)
@@ -149,7 +149,7 @@ XBT_INLINE void xbt_dynar_reset(xbt_dynar_t const dynar)
 {
   _sanity_check_dynar(dynar);
 
-  XBT_DEBUG("Reset the dynar %p", (void *) dynar);
+  XBT_CDEBUG(xbt_dyn, "Reset the dynar %p", (void *) dynar);
   if (dynar->free_f) {
     xbt_dynar_map(dynar, dynar->free_f);
   }
@@ -557,7 +557,7 @@ XBT_INLINE void xbt_dynar_push(xbt_dynar_t const dynar,
 XBT_INLINE void *xbt_dynar_pop_ptr(xbt_dynar_t const dynar)
 {
   _check_populated_dynar(dynar);
-  XBT_DEBUG("Pop %p", (void *) dynar);
+  XBT_CDEBUG(xbt_dyn, "Pop %p", (void *) dynar);
   dynar->used--;
   return _xbt_dynar_elm(dynar, dynar->used);
 }
@@ -567,7 +567,7 @@ XBT_INLINE void xbt_dynar_pop(xbt_dynar_t const dynar, void *const dst)
 {
 
   /* sanity checks done by remove_at */
-  XBT_DEBUG("Pop %p", (void *) dynar);
+  XBT_CDEBUG(xbt_dyn, "Pop %p", (void *) dynar);
   xbt_dynar_remove_at(dynar, dynar->used - 1, dst);
 }
 
@@ -707,7 +707,7 @@ XBT_INLINE void * xbt_dynar_to_array (xbt_dynar_t dynar)
 /*
  * Return 0 if d1 and d2 are equal and 1 if not equal
  */
-XBT_INLINE int xbt_dynar_compare(xbt_dynar_t d1, xbt_dynar_t d2,
+int xbt_dynar_compare(xbt_dynar_t d1, xbt_dynar_t d2,
           int(*compar)(const void *, const void *))
 {
   int i ;
index e28cc7e..adaa88d 100644 (file)
@@ -429,7 +429,7 @@ XBT_INLINE xbt_fifo_item_t xbt_fifo_new_item(void)
  */
 XBT_INLINE xbt_fifo_item_t xbt_fifo_newitem(void)
 {
-  XBT_WARN("This function is deprecated. Use xbt_fifo_new_item.");
+  XBT_CWARN(xbt_fifo, "This function is deprecated. Use xbt_fifo_new_item.");
   return xbt_fifo_new_item();
 }
 
@@ -469,7 +469,7 @@ XBT_INLINE void xbt_fifo_free_item(xbt_fifo_item_t b)
  */
 XBT_INLINE void xbt_fifo_freeitem(xbt_fifo_item_t b)
 {
-  XBT_WARN("This function is deprecated. Use xbt_fifo_free_item.");
+  XBT_CWARN(xbt_fifo, "This function is deprecated. Use xbt_fifo_free_item.");
   xbt_fifo_free_item(b);
   return;
 }
@@ -509,7 +509,7 @@ XBT_INLINE xbt_fifo_item_t xbt_fifo_get_last_item(xbt_fifo_t l)
  */
 XBT_INLINE xbt_fifo_item_t xbt_fifo_getFirstItem(xbt_fifo_t l)
 {
-  XBT_WARN("This function is deprecated. Use xbt_fifo_get_first_item.");
+  XBT_CWARN(xbt_fifo, "This function is deprecated. Use xbt_fifo_get_first_item.");
   return xbt_fifo_get_first_item(l);
 }
 
@@ -530,7 +530,7 @@ XBT_INLINE xbt_fifo_item_t xbt_fifo_get_next_item(xbt_fifo_item_t i)
  */
 xbt_fifo_item_t xbt_fifo_getNextItem(xbt_fifo_item_t i)
 {
-  XBT_WARN("This function is deprecated. Use xbt_fifo_get_next_item.");
+  XBT_CWARN(xbt_fifo, "This function is deprecated. Use xbt_fifo_get_next_item.");
   return xbt_fifo_get_next_item(i);
 }
 
index 9d2aee7..dbea34a 100644 (file)
@@ -607,6 +607,8 @@ static void xbt_log_connect_categories(void)
   XBT_LOG_CONNECT(instr_routing);
   XBT_LOG_CONNECT(instr_sd);
   XBT_LOG_CONNECT(instr_surf);
+  XBT_LOG_CONNECT(instr_trace);
+  XBT_LOG_CONNECT(instr_TI_trace);
 #endif
 
   /* jedule */
index 49c5968..52792d6 100644 (file)
@@ -754,7 +754,7 @@ static int compare_heap_area_without_type(void *real_area1, void *real_area2, vo
  
 }
 
-
+// area_size is either a byte_size or an elements_count?&
 static int compare_heap_area_with_type(void *real_area1, void *real_area2, void *area1, void *area2, 
                                        xbt_dynar_t previous, xbt_dict_t all_types, xbt_dict_t other_types, char *type_id, 
                                        int area_size, int check_ignore, int pointer_level){
@@ -777,41 +777,41 @@ static int compare_heap_area_with_type(void *real_area1, void *real_area2, void
   char *type_desc;
 
   switch(type->type){
-  case e_dw_base_type:
+  case DW_TAG_base_type:
     if(strcmp(type->name, "char") == 0){ /* String, hence random (arbitrary ?) size */
       if(real_area1 == real_area2)
         return -1;
       else
         return (memcmp(area1, area2, area_size) != 0);
     }else{
-      if(area_size != -1 && type->size != area_size)
+      if(area_size != -1 && type->byte_size != area_size)
         return -1;
       else{
-        return  (memcmp(area1, area2, type->size) != 0);
+        return  (memcmp(area1, area2, type->byte_size) != 0);
       }
     }
     break;
-  case e_dw_enumeration_type:
-    if(area_size != -1 && type->size != area_size)
+  case DW_TAG_enumeration_type:
+    if(area_size != -1 && type->byte_size != area_size)
       return -1;
     else
-      return (memcmp(area1, area2, type->size) != 0);
+      return (memcmp(area1, area2, type->byte_size) != 0);
     break;
-  case e_dw_typedef:
+  case DW_TAG_typedef:
     return compare_heap_area_with_type(real_area1, real_area2, area1, area2, previous, all_types, other_types, type->dw_type_id, area_size, check_ignore, pointer_level);
     break;
-  case e_dw_const_type:
+  case DW_TAG_const_type:
     return 0;
     break;
-  case e_dw_array_type:
+  case DW_TAG_array_type:
     subtype = xbt_dict_get_or_null(all_types, type->dw_type_id);
     switch(subtype->type){
-    case e_dw_base_type:
-    case e_dw_enumeration_type:
-    case e_dw_pointer_type:
-    case e_dw_structure_type:
-    case e_dw_union_type:
-      if(subtype->size == 0){ /*declaration of the type, need the complete description */
+    case DW_TAG_base_type:
+    case DW_TAG_enumeration_type:
+    case DW_TAG_pointer_type:
+    case DW_TAG_structure_type:
+    case DW_TAG_union_type:
+      if(subtype->byte_size == 0){ /*declaration of the type, need the complete description */
         type_desc = get_type_description(all_types, subtype->name);
         if(type_desc){
           subtype = xbt_dict_get_or_null(all_types, type_desc);
@@ -820,12 +820,13 @@ static int compare_heap_area_with_type(void *real_area1, void *real_area2, void
           switch_types = 1;
         }
       }
-      elm_size = subtype->size;
+      elm_size = subtype->byte_size;
       break;
-    case e_dw_typedef:
-    case e_dw_volatile_type:
+    // TODO, just remove the type indirection?
+    case DW_TAG_typedef:
+    case DW_TAG_volatile_type:
       subsubtype = xbt_dict_get_or_null(all_types, subtype->dw_type_id);
-      if(subsubtype->size == 0){ /*declaration of the type, need the complete description */
+      if(subsubtype->byte_size == 0){ /*declaration of the type, need the complete description */
         type_desc = get_type_description(all_types, subsubtype->name);
         if(type_desc){
           subsubtype = xbt_dict_get_or_null(all_types, type_desc);
@@ -834,23 +835,24 @@ static int compare_heap_area_with_type(void *real_area1, void *real_area2, void
           switch_types = 1;
         }
       }
-      elm_size = subsubtype->size;
+      elm_size = subsubtype->byte_size;
       break;
     default : 
       return 0;
       break;
     }
-    for(i=0; i<type->size; i++){ 
+    for(i=0; i<type->element_count; i++){
+      // TODO, add support for variable stride (DW_AT_byte_stride)
       if(switch_types)
-        res = compare_heap_area_with_type((char *)real_area1 + (i*elm_size), (char *)real_area2 + (i*elm_size), (char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), previous, other_types, all_types, type->dw_type_id, type->size, check_ignore, pointer_level);
+        res = compare_heap_area_with_type((char *)real_area1 + (i*elm_size), (char *)real_area2 + (i*elm_size), (char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), previous, other_types, all_types, type->dw_type_id, subtype->byte_size, check_ignore, pointer_level);
       else
-        res = compare_heap_area_with_type((char *)real_area1 + (i*elm_size), (char *)real_area2 + (i*elm_size), (char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), previous, all_types, other_types, type->dw_type_id, type->size, check_ignore, pointer_level);
+        res = compare_heap_area_with_type((char *)real_area1 + (i*elm_size), (char *)real_area2 + (i*elm_size), (char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), previous, all_types, other_types, type->dw_type_id, subtype->byte_size, check_ignore, pointer_level);
       if(res == 1)
         return res;
     }
     break;
-  case e_dw_pointer_type:
-    if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(all_types, type->dw_type_id))->type == e_dw_subroutine_type){
+  case DW_TAG_pointer_type:
+    if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(all_types, type->dw_type_id))->type == DW_TAG_subroutine_type){
       addr_pointed1 = *((void **)(area1)); 
       addr_pointed2 = *((void **)(area2));
       return (addr_pointed1 != addr_pointed2);;
@@ -877,8 +879,8 @@ static int compare_heap_area_with_type(void *real_area1, void *real_area2, void
       }
     }
     break;
-  case e_dw_structure_type:
-    if(type->size == 0){ /*declaration of the structure, need the complete description */
+  case DW_TAG_structure_type:
+    if(type->byte_size == 0){ /*declaration of the structure, need the complete description */
       type_desc = get_type_description(all_types, type->name);
       if(type_desc){
         type = xbt_dict_get_or_null(all_types, type_desc);
@@ -887,13 +889,13 @@ static int compare_heap_area_with_type(void *real_area1, void *real_area2, void
         switch_types = 1;
       }
     }
-    if(area_size != -1 && type->size != area_size){
-      if(area_size>type->size && area_size%type->size == 0){
-        for(i=0; i<(area_size/type->size); i++){ 
+    if(area_size != -1 && type->byte_size != area_size){
+      if(area_size>type->byte_size && area_size%type->byte_size == 0){
+        for(i=0; i<(area_size/type->byte_size); i++){
           if(switch_types)
-            res = compare_heap_area_with_type((char *)real_area1 + (i*type->size), (char *)real_area2 + (i*type->size), (char *)area1 + (i*type->size), (char *)area2 + (i*type->size), previous, other_types, all_types, type_id, -1, check_ignore, 0); 
+            res = compare_heap_area_with_type((char *)real_area1 + (i*type->byte_size), (char *)real_area2 + (i*type->byte_size), (char *)area1 + (i*type->byte_size), (char *)area2 + (i*type->byte_size), previous, other_types, all_types, type_id, -1, check_ignore, 0);
           else
-            res = compare_heap_area_with_type((char *)real_area1 + (i*type->size), (char *)real_area2 + (i*type->size), (char *)area1 + (i*type->size), (char *)area2 + (i*type->size), previous, all_types, other_types, type_id, -1, check_ignore, 0); 
+            res = compare_heap_area_with_type((char *)real_area1 + (i*type->byte_size), (char *)real_area2 + (i*type->byte_size), (char *)area1 + (i*type->byte_size), (char *)area2 + (i*type->byte_size), previous, all_types, other_types, type_id, -1, check_ignore, 0);
           if(res == 1)
             return res;
         }
@@ -913,10 +915,10 @@ static int compare_heap_area_with_type(void *real_area1, void *real_area2, void
       }
     }
     break;
-  case e_dw_union_type:
-    return compare_heap_area_without_type(real_area1, real_area2, area1, area2, previous, all_types, other_types, type->size, check_ignore);
+  case DW_TAG_union_type:
+    return compare_heap_area_without_type(real_area1, real_area2, area1, area2, previous, all_types, other_types, type->byte_size, check_ignore);
     break;
-  case e_dw_volatile_type:
+  case DW_TAG_volatile_type:
     return compare_heap_area_with_type(real_area1, real_area2, area1, area2, previous, all_types, other_types, type->dw_type_id, area_size, check_ignore, pointer_level);
     break;
   default:
@@ -935,8 +937,8 @@ static char* get_offset_type(char* type_id, int offset, xbt_dict_t all_types, xb
   }
   char* type_desc;
   switch(type->type){
-  case e_dw_structure_type :
-    if(type->size == 0){ /*declaration of the structure, need the complete description */
+  case DW_TAG_structure_type :
+    if(type->byte_size == 0){ /*declaration of the structure, need the complete description */
       if(*switch_type == 0){
         type_desc = get_type_description(all_types, type->name);
         if(type_desc){
@@ -956,8 +958,8 @@ static char* get_offset_type(char* type_id, int offset, xbt_dict_t all_types, xb
       }
     
     }
-    if(area_size != -1 && type->size != area_size){
-      if(area_size>type->size && area_size%type->size == 0)
+    if(area_size != -1 && type->byte_size != area_size){
+      if(area_size>type->byte_size && area_size%type->byte_size == 0)
         return type_id;
       else
         return NULL;
@@ -1029,7 +1031,7 @@ int compare_heap_area(void *area1, void* area2, xbt_dynar_t previous, xbt_dict_t
 
   if(type_id){
     type = xbt_dict_get_or_null(all_types, type_id);
-    if(type->size == 0){
+    if(type->byte_size == 0){
       if(type->dw_type_id == NULL){
         type_desc = get_type_description(all_types, type->name);
         if(type_desc)
@@ -1040,10 +1042,10 @@ int compare_heap_area(void *area1, void* area2, xbt_dynar_t previous, xbt_dict_t
         type = xbt_dict_get_or_null(all_types, type->dw_type_id);
       }
     }
-    if((type->type == e_dw_pointer_type) || ((type->type == e_dw_base_type) && (!strcmp(type->name, "char"))))
+    if((type->byte_size == DW_TAG_pointer_type) || ((type->type == DW_TAG_base_type) && (!strcmp(type->name, "char"))))
       type_size = -1;
     else
-      type_size = type->size;
+      type_size = type->byte_size;
   }
   
   if((heapinfo1[block1].type == -1) && (heapinfo2[block2].type == -1)){  /* Free block */
@@ -1209,22 +1211,22 @@ int compare_heap_area(void *area1, void* area2, xbt_dynar_t previous, xbt_dict_t
       if(new_type_id1 !=  NULL && new_type_id2 !=  NULL && !strcmp(new_type_id1, new_type_id2)){
         if(switch_type){
           type = xbt_dict_get_or_null(other_types, new_type_id1);
-          while(type->size == 0 && type->dw_type_id != NULL)
+          while(type->byte_size == 0 && type->dw_type_id != NULL)
             type = xbt_dict_get_or_null(other_types, type->dw_type_id);
-          new_size1 = type->size;
+          new_size1 = type->byte_size;
           type = xbt_dict_get_or_null(other_types, new_type_id2);
-          while(type->size == 0 && type->dw_type_id != NULL)
+          while(type->byte_size == 0 && type->dw_type_id != NULL)
             type = xbt_dict_get_or_null(other_types, type->dw_type_id);
-          new_size2 = type->size;
+          new_size2 = type->byte_size;
         }else{
           type = xbt_dict_get_or_null(all_types, new_type_id1);
-          while(type->size == 0 && type->dw_type_id != NULL)
+          while(type->byte_size == 0 && type->dw_type_id != NULL)
             type = xbt_dict_get_or_null(all_types, type->dw_type_id);
-          new_size1 = type->size;
+          new_size1 = type->byte_size;
           type = xbt_dict_get_or_null(all_types, new_type_id2);
-          while(type->size == 0 && type->dw_type_id != NULL)
+          while(type->byte_size == 0 && type->dw_type_id != NULL)
             type = xbt_dict_get_or_null(all_types, type->dw_type_id);
-          new_size2 = type->size;
+          new_size2 = type->byte_size;
         }
       }else{
         if(match_pairs){
@@ -1342,7 +1344,7 @@ char *get_type_description(xbt_dict_t types, char *type_name){
   dw_type_t type;
 
   xbt_dict_foreach(types, dict_cursor, type_origin, type){
-    if(type->name && (strcmp(type->name, type_name) == 0) && type->size > 0){
+    if(type->name && (strcmp(type->name, type_name) == 0) && type->byte_size > 0){
       xbt_dict_cursor_free(&dict_cursor);
       return type_origin;
     }
index b202c9b..2a1a586 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2012. The SimGrid Team.
+/* Copyright (c) 2010-2013. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -55,7 +55,7 @@ static void mm_gnuld_legacy_init(void) { /* This function is called from mmalloc
  * To that extend, we have a little area here living in .BSS that we return if asked for memory before the malloc is resolved.
  */
 int allocated_junk=0; /* keep track of whether our little area was already given to someone */
-char junkarea[512];
+char junkarea[4096];
 
 /* This version use mmalloc if there is a current heap, or the legacy implem if not */
 void *malloc(size_t n) {
@@ -83,10 +83,10 @@ void *malloc(size_t n) {
             "Panic: real malloc symbol not resolved yet, and I already gave my little private memory chunk away. "
             "Damn LD, we must extend our code to have several such areas.\n");
         exit(1);
-      } else if (n>512) {
+      } else if (n > sizeof junkarea) {
         fprintf(stderr,
-            "Panic: real malloc symbol not resolved yet, and I need %zu bytes while my little private memory chunk is only 512 bytes wide. "
-            "Damn LD, we must fix our code to extend this area.\n",n);
+            "Panic: real malloc symbol not resolved yet, and I need %zu bytes while my little private memory chunk is only %zu bytes wide. "
+            "Damn LD, we must fix our code to extend this area.\n", n, sizeof junkarea);
         exit(1);
       } else {
         allocated_junk = 1;
index 93fee90..c6b858e 100644 (file)
@@ -23,6 +23,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_sync_os, xbt,
 /* ********************************* PTHREAD IMPLEMENTATION ************************************ */
 #ifdef HAVE_PTHREAD_H
 
+#include <limits.h>
 #include <semaphore.h>
 
 #ifdef HAVE_MUTEX_TIMEDLOCK
@@ -194,18 +195,35 @@ xbt_os_thread_t xbt_os_thread_create(const char *name,
 
 void xbt_os_thread_setstacksize(int stack_size)
 {
-  size_t def=0;
-  if(stack_size<0)xbt_die("stack size is negative, maybe it exceeds MAX_INT?\n");
-  pthread_attr_init(&attr);
-  pthread_attr_getstacksize (&attr, &def);
-  int res = pthread_attr_setstacksize (&attr, stack_size);
-  if ( res!=0 ) {
-    if(res==EINVAL)XBT_WARN("Thread stack size is either < PTHREAD_STACK_MIN, > the max limit of the system, or perhaps not a multiple of PTHREAD_STACK_MIN - The parameter was ignored");
-    else XBT_WARN("unknown error in pthread stacksize setting");
+  size_t sz;
+  int res;
+
+  if (stack_size < 0)
+    xbt_die("stack size %d is negative, maybe it exceeds MAX_INT?", stack_size);
 
-    pthread_attr_setstacksize (&attr, def);
+  sz = stack_size;
+  pthread_attr_init(&attr);
+  res = pthread_attr_setstacksize(&attr, sz);
+
+#ifdef PTHREAD_STACK_MIN
+  if (res == EINVAL) {
+    /* Invalid size, try again with a multiple of PTHREAD_STACK_MIN. */
+    size_t rem = sz % PTHREAD_STACK_MIN;
+    if (rem != 0 || sz == 0) {
+      size_t sz2 = sz - rem + PTHREAD_STACK_MIN;
+      XBT_DEBUG("pthread_attr_setstacksize failed for %#zx, try again with %#zx",
+                sz, sz2);
+      sz = sz2;
+      res = pthread_attr_setstacksize(&attr, sz);
+    }
   }
-  thread_attr_inited=1;
+#endif
+
+  if (res == EINVAL)
+    XBT_WARN("invalid stack size (maybe too big): %#zx", sz);
+  else if (res != 0)
+    XBT_WARN("unknown error %d in pthread stacksize setting: %#zx", res, sz);
+  thread_attr_inited = 1;
 }
 
 const char *xbt_os_thread_name(xbt_os_thread_t t)
index f378ca1..6b06a6b 100644 (file)
@@ -19,7 +19,7 @@
 
 //Freebsd doesn't provide this clock_gettime flag yet, because it was added too recently (after 1993)
 #ifdef __FreeBSD__
-#define CLOCK_PROCESS_CPUTTIME_ID CLOCK_PROF
+#define CLOCK_PROCESS_CPUTIME_ID CLOCK_PROF
 #endif
 
 double xbt_os_time(void)
index f539ed1..c2c5bd2 100644 (file)
@@ -10,6 +10,8 @@
 #include "xbt/log.h"
 #include "xbt/str.h"
 #include "xbt/replay.h"
+#include <ctype.h>
+#include <wchar.h>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(replay,xbt,"Replay trace reader");
 
@@ -31,6 +33,16 @@ static size_t action_len = 0;
 
 static char **action_get_action(char *name);
 
+static char *str_tolower (const char *str)
+{
+  char *ret = xbt_strdup (str);
+  int i, n = strlen (ret);
+  for (i = 0; i < n; i++)
+    ret[i] = tolower (str[i]);
+  return ret;
+}
+
+
 xbt_replay_reader_t xbt_replay_reader_new(const char *filename)
 {
   xbt_replay_reader_t res = xbt_new0(s_xbt_replay_reader_t,1);
@@ -96,7 +108,9 @@ void xbt_replay_reader_free(xbt_replay_reader_t *reader)
  */
 void xbt_replay_action_register(const char *action_name, action_fun function)
 {
-  xbt_dict_set(action_funs, action_name, function, NULL);
+  char* lowername = str_tolower (action_name);
+  xbt_dict_set(action_funs, lowername, function, NULL);
+  xbt_free(lowername);
 }
 
 /** \ingroup XBT_replay
@@ -106,7 +120,9 @@ void xbt_replay_action_register(const char *action_name, action_fun function)
  */
 void xbt_replay_action_unregister(const char *action_name)
 {
-  xbt_dict_remove(action_funs, action_name);
+  char* lowername = str_tolower (action_name);
+  xbt_dict_remove(action_funs, lowername);
+  xbt_free(lowername);
 }
 
 void _xbt_replay_action_init(void)
@@ -135,8 +151,10 @@ int xbt_replay_action_runner(int argc, char *argv[])
   if (action_fp) {              // A unique trace file
     char **evt;
     while ((evt = action_get_action(argv[0]))) {
+      char* lowername = str_tolower (evt[1]);
       action_fun function =
-        (action_fun)xbt_dict_get(action_funs, evt[1]);
+        (action_fun)xbt_dict_get(action_funs, lowername);
+      xbt_free(lowername);
       function((const char **)evt);
       for (i=0;evt[i]!= NULL;i++)
         free(evt[i]);
@@ -152,7 +170,9 @@ int xbt_replay_action_runner(int argc, char *argv[])
     xbt_replay_reader_t reader = xbt_replay_reader_new(argv[1]);
     while ((evt=xbt_replay_reader_get(reader))) {
       if (!strcmp(argv[0],evt[0])) {
-        action_fun function = (action_fun)xbt_dict_get(action_funs, evt[1]);
+        char* lowername = str_tolower (evt[1]);
+        action_fun function = (action_fun)xbt_dict_get(action_funs, lowername);
+        xbt_free(lowername);
         function(evt);
       } else {
         XBT_WARN("%s: Ignore trace element not for me",
@@ -193,7 +213,7 @@ static char **action_get_action(char *name)
 
       // if it's for me, I'm done
       evtname = xbt_dynar_get_as(evt, 0, char *);
-      if (!strcmp(name, evtname)) {
+      if (!strcasecmp(name, evtname)) {
         return xbt_dynar_to_array(evt);
       } else {
         // Else, I have to store it for the relevant colleague
index a43a67d..e24465c 100644 (file)
@@ -101,6 +101,7 @@ set(tesh_files
   ${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_coll.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/struct.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/vector.tesh
+  ${CMAKE_CURRENT_SOURCE_DIR}/TI_output.tesh
   PARENT_SCOPE
   )
 set(xml_files
diff --git a/teshsuite/smpi/TI_output.tesh b/teshsuite/smpi/TI_output.tesh
new file mode 100644 (file)
index 0000000..d8cc911
--- /dev/null
@@ -0,0 +1,180 @@
+$ rm -rf ./out_ti.txt_files
+$ rm -rf ./out_in_ti.txt_files
+
+p Test output of time independent tracing
+p generate a trace with pingpong, and replay itself, then check that output trace of the second run is the same as in the first (once sorted) 
+! setenv LD_LIBRARY_PATH=../../lib
+! output sort
+$ ../../smpi_script/bin/smpirun -trace-ti --cfg=tracing/filename:out_in_ti.txt --cfg=smpi/cpu_threshold:-1 -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ./pingpong -q
+>     *** Ping-pong test (MPI_Send/MPI_Recv) ***
+> == pivot=0 : pingpong [0] <--> [1]
+> == pivot=1 : pingpong [1] <--> [2]
+> == pivot=2 : pingpong [2] <--> [3]
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_simgrid.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format' to 'TI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'out_in_ti.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0] About to send 1st message '99' to process [1] 
+> [0] Received reply message '100' from process [1] 
+> [1] About to send 1st message '100' to process [2] 
+> [1] About to send back message '100' to process [0] 
+> [1] Received 1st message '99' from process [0] 
+> [1] Received reply message '101' from process [2] 
+> [1] increment message's value to  '100'
+> [2] About to send 1st message '101' to process [3] 
+> [2] About to send back message '101' to process [1] 
+> [2] Received 1st message '100' from process [1] 
+> [2] Received reply message '102' from process [3] 
+> [2] increment message's value to  '101'
+> [3] About to send back message '102' to process [2] 
+> [3] Received 1st message '101' from process [2] 
+> [3] increment message's value to  '102'
+> [rank 0] -> Tremblay
+> [rank 1] -> Jupiter
+> [rank 2] -> Fafard
+> [rank 3] -> Ginette
+
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.:critical -trace-ti --cfg=tracing/filename:out_ti.txt --cfg=smpi/cpu_threshold:-1  -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ../../examples/smpi/smpi_replay ./out_in_ti.txt
+> [rank 0] -> Tremblay
+> [rank 1] -> Jupiter
+> [rank 2] -> Fafard
+> [rank 3] -> Ginette
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_simgrid.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format' to 'TI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'out_ti.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [Jupiter:1:(0) 0.016798] [smpi_replay/INFO] Simulation time 0.0167975
+
+! output sort
+$ find ./out_ti.txt_files -type f -exec cat {} \;
+> 0 init
+> 0 send 1 1 1
+> 0 recv 1 1 1
+> 0 finalize
+> 1 init
+> 1 recv 0 1 1
+> 1 send 0 1 1
+> 1 send 2 1 1
+> 1 recv 2 1 1
+> 1 finalize
+> 2 init
+> 2 recv 1 1 1
+> 2 send 1 1 1
+> 2 send 3 1 1
+> 2 recv 3 1 1
+> 2 finalize
+> 3 init
+> 3 recv 2 1 1
+> 3 send 2 1 1
+> 3 finalize
+
+! output sort
+$ find ./out_in_ti.txt_files -type f -exec cat {} \;
+> 0 init
+> 0 send 1 1 1
+> 0 recv 1 1 1
+> 0 finalize
+> 1 init
+> 1 recv 0 1 1
+> 1 send 0 1 1
+> 1 send 2 1 1
+> 1 recv 2 1 1
+> 1 finalize
+> 2 init
+> 2 recv 1 1 1
+> 2 send 1 1 1
+> 2 send 3 1 1
+> 2 recv 3 1 1
+> 2 finalize
+> 3 init
+> 3 recv 2 1 1
+> 3 send 2 1 1
+> 3 finalize
+
+$ rm -rf ./out_ti.txt_files
+$ rm -rf ./out_in_ti.txt_files
+$ rm out_ti.txt
+$ rm out_in_ti.txt
+
+
+
+p Same test, but only using one output file for all processes
+p generate a trace with pingpong, and replay itself, then check that output trace of the second run is the same as in the first (once sorted) 
+! output sort
+$ ../../smpi_script/bin/smpirun -trace-ti --cfg=tracing/filename:out_in_ti.txt --cfg=tracing/smpi/format/ti_one_file:yes -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ./pingpong -q
+>     *** Ping-pong test (MPI_Send/MPI_Recv) ***
+> == pivot=0 : pingpong [0] <--> [1]
+> == pivot=1 : pingpong [1] <--> [2]
+> == pivot=2 : pingpong [2] <--> [3]
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_simgrid.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format' to 'TI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'out_in_ti.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format/ti_one_file' to 'yes'
+> [0] About to send 1st message '99' to process [1] 
+> [0] Received reply message '100' from process [1] 
+> [1] About to send 1st message '100' to process [2] 
+> [1] About to send back message '100' to process [0] 
+> [1] Received 1st message '99' from process [0] 
+> [1] Received reply message '101' from process [2] 
+> [1] increment message's value to  '100'
+> [2] About to send 1st message '101' to process [3] 
+> [2] About to send back message '101' to process [1] 
+> [2] Received 1st message '100' from process [1] 
+> [2] Received reply message '102' from process [3] 
+> [2] increment message's value to  '101'
+> [3] About to send back message '102' to process [2] 
+> [3] Received 1st message '101' from process [2] 
+> [3] increment message's value to  '102'
+> [rank 0] -> Tremblay
+> [rank 1] -> Jupiter
+> [rank 2] -> Fafard
+> [rank 3] -> Ginette
+
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.:critical -trace-ti --cfg=tracing/filename:out_ti.txt --cfg=tracing/smpi/format/ti_one_file:yes   -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ../../examples/smpi/smpi_replay ./out_in_ti.txt
+> [rank 0] -> Tremblay
+> [rank 1] -> Jupiter
+> [rank 2] -> Fafard
+> [rank 3] -> Ginette
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_simgrid.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format' to 'TI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'out_ti.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format/ti_one_file' to 'yes'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [Jupiter:1:(0) 0.016798] [smpi_replay/INFO] Simulation time 0.0167976
+
+
+
+$ rm -rf ./out_ti.txt_files
+$ rm -rf ./out_in_ti.txt_files
+$ rm out_ti.txt
+$ rm out_in_ti.txt
+
+
+
index 90cc4aa..c3af311 100644 (file)
@@ -32,6 +32,7 @@ int main(int argc, char *argv[])
     perror("can't allocate send buffer");
     fflush(stderr);
     MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE);
+    exit(EXIT_FAILURE);
   }
   rb = (int *) malloc(size * sizeof(int));
   if (!rb) {
@@ -39,6 +40,7 @@ int main(int argc, char *argv[])
     fflush(stderr);
     free(sb);
     MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE);
+    exit(EXIT_FAILURE);
   }
   for (i = 0; i < size; ++i) {
     sb[i] = rank + 1;
index 39e3611..907e4a5 100644 (file)
@@ -63,6 +63,7 @@ void abort_msg( const char *str, int code )
 {
     fprintf( stderr, "%s, err = %d\n", str, code );
     MPI_Abort( MPI_COMM_WORLD, code );
+    exit(code);
 }
 
 int test_communicators( void )
index df42e48..9384dd4 100644 (file)
@@ -63,6 +63,7 @@ void abort_msg( const char *str, int code )
 {
     fprintf( stderr, "%s, err = %d\n", str, code );
     MPI_Abort( MPI_COMM_WORLD, code );
+    exit(code);
 }
 
 int test_communicators( void )
index d3d9a39..19a27cb 100644 (file)
@@ -65,6 +65,7 @@ void abort_msg( const char *str, int code )
 {
     fprintf( stderr, "%s, err = %d\n", str, code );
     MPI_Abort( MPI_COMM_WORLD, code );
+    exit(code);
 }
 
 int test_attrs( void )
index c71e96c..9b3b04c 100644 (file)
@@ -57,6 +57,7 @@ int delete_fn( MPI_Comm comm, int keyval, void *attribute_val,
     if ((MPI_Aint)attribute_val != (MPI_Aint)world_rank) {
        printf( "incorrect attribute value %d\n", *(int*)attribute_val );
        MPI_Abort(MPI_COMM_WORLD, 1005 );
+        exit(1005);
     }
     return MPI_SUCCESS;
 }
@@ -120,6 +121,7 @@ int test_communicators( void )
            printf( "dup_comm key_1 not found on %d\n", world_rank );
            fflush( stdout );
            MPI_Abort(MPI_COMM_WORLD, 3004 );
+            exit(3004);
        }
        
        if (value != world_rank) {
@@ -127,6 +129,7 @@ int test_communicators( void )
            printf( "dup_comm key_1 value incorrect: %ld\n", (long)value );
            fflush( stdout );
            MPI_Abort(MPI_COMM_WORLD, 3005 );
+            exit(3005);
        }
 
        MPI_Attr_get(dup_comm, key_3, (void **)&vvalue, &flag );
@@ -136,6 +139,7 @@ int test_communicators( void )
            printf( "dup_comm key_3 found!\n" );
            fflush( stdout );
            MPI_Abort(MPI_COMM_WORLD, 3008 );
+            exit(3008);
        }
         MTestPrintfMsg(1, "Keyval_free key=%#x\n", key_1);
        MPI_Keyval_free(&key_1 );
index 4a94201..c52491d 100644 (file)
@@ -55,6 +55,7 @@ int delete_fn( MPI_Comm comm, int keyval, void *attribute_val,
     if ((MPI_Aint)attribute_val != (MPI_Aint)world_rank) {
        printf( "incorrect attribute value %d\n", *(int*)attribute_val );
        MPI_Abort(MPI_COMM_WORLD, 1005 );
+        exit(1005);
     }
     return MPI_SUCCESS;
 }
@@ -99,6 +100,7 @@ int test_communicators( void )
        errs++;
        printf( "incorrect rank in world comm: %d\n", rank );
        MPI_Abort(MPI_COMM_WORLD, 3001 );
+        exit(3001);
     }
 
     n = world_size / 2;
@@ -130,6 +132,7 @@ int test_communicators( void )
            errs++;
            printf( "incorrect lo group rank: %d\n", rank ); fflush(stdout);
            MPI_Abort(MPI_COMM_WORLD, 3002 );
+            exit(3002);
        }
        else {
            /* printf( "lo in\n" );FFLUSH; */
@@ -142,6 +145,7 @@ int test_communicators( void )
            errs++;
            printf( "rank : %d incorrect lo comm:\n", rank ); fflush(stdout);
            MPI_Abort(MPI_COMM_WORLD, 3003 );
+            exit(3003);
        }
     }
 
@@ -192,6 +196,7 @@ int test_communicators( void )
            printf( "dup_comm key_1 not found on %d\n", world_rank );
            fflush( stdout );
            MPI_Abort(MPI_COMM_WORLD, 3004 );
+            exit(3004);
        }
        
        if (value != world_rank) {
@@ -200,6 +205,7 @@ int test_communicators( void )
                    (long)value, world_rank );
            fflush( stdout );
            MPI_Abort(MPI_COMM_WORLD, 3005 );
+            exit(3005);
        }
 
        MPI_Attr_get(dup_comm, key_3, (void **)&vvalue, &flag );
@@ -209,6 +215,7 @@ int test_communicators( void )
            printf( "dup_comm key_3 found!\n" );
            fflush( stdout );
            MPI_Abort(MPI_COMM_WORLD, 3008 );
+            exit(3008);
        }
        MPI_Keyval_free(&key_1 );
        MPI_Keyval_free(&key_3 );
@@ -233,6 +240,7 @@ int test_communicators( void )
        errs++;
        printf( "incorrect split rank: %d\n", rank ); fflush(stdout);
        MPI_Abort(MPI_COMM_WORLD, 3009 );
+        exit(3009);
     }
     
     MPI_Barrier(split_comm );
@@ -251,6 +259,7 @@ int test_communicators( void )
        errs++;
        printf( "incorrect ident result: %d\n", result );
        MPI_Abort(MPI_COMM_WORLD, 3010 );
+        exit(3010);
     }
     
     if (lo_comm != MPI_COMM_NULL) {
@@ -259,6 +268,7 @@ int test_communicators( void )
            errs++;
             printf( "incorrect congruent result: %d\n", result );
             MPI_Abort(MPI_COMM_WORLD, 3011 );
+            exit(3011);
        }
     }
     
@@ -274,6 +284,7 @@ int test_communicators( void )
        errs++;
        printf( "incorrect similar result: %d\n", result );
        MPI_Abort(MPI_COMM_WORLD, 3012 );
+        exit(3012);
     }
     
     if (lo_comm != MPI_COMM_NULL) {
@@ -282,6 +293,7 @@ int test_communicators( void )
            errs++;
            printf( "incorrect unequal result: %d\n", result );
            MPI_Abort(MPI_COMM_WORLD, 3013 );
+            exit(3013);
        }
     }
     /*
index 963fd36..29e4d47 100644 (file)
@@ -22,7 +22,7 @@
 #define LARGE_BUF (256 * 1024)
 
 /* FIXME: MAX_BUF is too large */
-#define MAX_BUF   (128 * 1024 * 1024)
+#define MAX_BUF   (32 * 1024 * 1024)
 #define LOOPS 10
 
 __thread char * sbuf, * rbuf;
@@ -71,6 +71,7 @@ int main(int argc, char ** argv)
        if (!displs) fprintf(stderr,"\tdispls of %zd bytes\n", comm_size * sizeof(int) );
         fflush(stderr);
         MPI_Abort(MPI_COMM_WORLD, -1);
+        exit(-1);
     }
 
     if (!comm_rank) {
@@ -200,6 +201,7 @@ double run_test(long long msg_size, MPI_Comm comm, test_t test_type,
            if (tmp != (int)tmp) {
                fprintf( stderr, "Integer overflow in variable tmp\n" );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
             recvcounts[i] = (int) tmp;
 
index d33f876..e9becde 100644 (file)
@@ -368,6 +368,7 @@ int main( int argc, char **argv )
     if (size < 2) {
        fprintf( stderr, "At least 2 processes required\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     /* Set errors return so that we can provide better information 
@@ -383,6 +384,7 @@ int main( int argc, char **argv )
        if  (count <= 0) {
            fprintf( stderr, "Invalid count argument %s\n", argv[1] );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
     }
 
index aaf8a23..cf16324 100644 (file)
@@ -182,10 +182,12 @@ int main( int argc, char *argv[] )
        buf = (int *)malloc( max_offset * sizeof(int) );
        if (!buf) {
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
        bufout = (int *)malloc( max_offset * sizeof(int) );
        if (!bufout) {
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
 
        initMat( comm, buf );
index 32e0c00..1638657 100644 (file)
@@ -198,11 +198,13 @@ int main( int argc, char *argv[] )
            buf = (int *)malloc( count * 9 * sizeof(int) );
            if (!buf) {
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
 
            bufout = (int *)malloc( count * 9 * sizeof(int) );
            if (!bufout) {
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
 
            for (i=0; i < count; i++) {
index a442550..7bba665 100644 (file)
@@ -38,6 +38,7 @@ int main( int argc, char *argv[] )
            fprintf( stderr, "Unable to allocated space for buffers (%d)\n",
                     count );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
        for (i=0; i<count; i++) {
            bufin[i] = i;
index cd6d3d8..3e2a069 100644 (file)
@@ -53,6 +53,7 @@ int main( int argc, char *argv[] )
                errs++;
                fprintf( stderr, "Failed to allocate sendbuf and/or recvbuf\n" );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            for (i=0; i<count*size; i++) 
                recvbuf[i] = -1;
index bcae133..484ebf7 100644 (file)
@@ -45,6 +45,7 @@ int main( int argc, char **argv )
       if (!sbuf || !rbuf) {
        fprintf( stderr, "Could not allocated buffers!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
       
       /* Load up the buffers */
@@ -61,6 +62,7 @@ int main( int argc, char **argv )
       if (!sendcounts || !recvcounts || !rdispls || !sdispls) {
        fprintf( stderr, "Could not allocate arg items!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
       for (i=0; i<size; i++) {
        sendcounts[i] = i;
@@ -94,6 +96,7 @@ int main( int argc, char **argv )
       if (!rbuf) {
         fprintf( stderr, "Could not reallocate rbuf!\n" );
         MPI_Abort( comm, 1 );
+        exit(1);
       }
 
       /* Load up the buffers */
index e1c8785..5890043 100644 (file)
@@ -49,6 +49,7 @@ int main( int argc, char **argv )
       if (!sendcounts || !recvcounts || !rdispls || !sdispls) {
        fprintf( stderr, "Could not allocate arg items!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
 
       /* Get the neighbors */
@@ -70,6 +71,7 @@ int main( int argc, char **argv )
          if (!sbuf || !rbuf) {
              fprintf( stderr, "Could not allocate buffers!\n" );
              MPI_Abort( comm, 1 );
+              exit(1);
          }
          
          /* Load up the buffers */
index 7d40236..b3a000f 100644 (file)
@@ -47,6 +47,7 @@ int main( int argc, char **argv )
       if (!sbuf || !rbuf) {
        fprintf( stderr, "Could not allocated buffers!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
       
       /* Load up the buffers */
@@ -65,6 +66,7 @@ int main( int argc, char **argv )
       if (!sendcounts || !recvcounts || !rdispls || !sdispls || !sendtypes || !recvtypes) {
        fprintf( stderr, "Could not allocate arg items!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
       /* Note that process 0 sends no data (sendcounts[0] = 0) */
       for (i=0; i<size; i++) {
@@ -101,6 +103,7 @@ int main( int argc, char **argv )
       if (!rbuf) {
         fprintf( stderr, "Could not reallocate rbuf!\n" );
         MPI_Abort( comm, 1 );
+        exit(1);
       }
 
       /* Load up the buffers */
index 65a6055..ece1e25 100644 (file)
@@ -10,7 +10,7 @@ int main(int argc, char *argv[])
 {
     int i, type_size;
     MPI_Datatype type = MPI_DATATYPE_NULL;
-    char *buf = NULL;
+    int *buf = NULL;
     int wrank, wsize;
 
     MPI_Init(&argc, &argv);
index 7e5b3c7..6c07269 100644 (file)
@@ -45,6 +45,7 @@ int main( int argc, char *argv[] )
            fprintf(stderr,"Unrecognized argument %s\n",
                    argv[i]);
            MPI_Abort(MPI_COMM_WORLD,EXIT_FAILURE);
+            exit(EXIT_FAILURE);
        }
     }
 
@@ -52,12 +53,14 @@ int main( int argc, char *argv[] )
     if ( !sb ) {
        perror( "can't allocate send buffer" );
        MPI_Abort(MPI_COMM_WORLD,EXIT_FAILURE);
+        exit(EXIT_FAILURE);
     }
     rb = (int *)malloc(size*chunk*sizeof(int));
     if ( !rb ) {
        perror( "can't allocate recv buffer");
        free(sb);
        MPI_Abort(MPI_COMM_WORLD,EXIT_FAILURE);
+        exit(EXIT_FAILURE);
     }
     for ( i=0 ; i < size*chunk ; ++i ) {
        sb[i] = rank + 1;
index ae08c96..008aa71 100644 (file)
@@ -28,6 +28,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Number of processors must divide %d\n",
                MAX_PROCESSES );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
        }
     if ( (rank < participants) ) {
 
index 84260d1..8fa5cdf 100644 (file)
@@ -30,6 +30,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Number of processors must divide %d\n",
                MAX_PROCESSES );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
        }
     if ( (rank < participants) ) {
 
index 6e8ea36..0ab19de 100644 (file)
@@ -30,6 +30,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Number of processors must divide %d\n",
                MAX_PROCESSES );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
        }
     MPI_Comm_split(MPI_COMM_WORLD, rank<participants, rank, &test_comm);
 
index 3d352ef..7cadace 100644 (file)
@@ -27,6 +27,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Number of processors must divide %d\n",
                MAX_PROCESSES );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
        }
     /* while (MAX_PROCESSES % participants) participants--; */
     if ( (rank < participants) ) {
index 41123c3..2233923 100644 (file)
@@ -46,6 +46,7 @@ int main( int argc, char **argv )
       if (!sbuf || !rbuf) {
        fprintf( stderr, "Could not allocated buffers!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
 
       /* Load up the buffers */
@@ -62,6 +63,7 @@ int main( int argc, char **argv )
       if (!sendcounts || !recvcounts || !rdispls || !sdispls) {
        fprintf( stderr, "Could not allocate arg items!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
       for (i=0; i<size; i++) {
        sendcounts[i] = i;
index 2b8252e..745bbb1 100644 (file)
@@ -49,6 +49,7 @@ int main( int argc, char **argv )
       if (!sbuf || !rbuf) {
        fprintf( stderr, "Could not allocated buffers!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
       
       /* Load up the buffers */
@@ -67,6 +68,7 @@ int main( int argc, char **argv )
       if (!sendcounts || !recvcounts || !rdispls || !sdispls || !sendtypes || !recvtypes) {
        fprintf( stderr, "Could not allocate arg items!\n" );
        MPI_Abort( comm, 1 );
+        exit(1);
       }
       /* Note that process 0 sends no data (sendcounts[0] = 0) */
       for (i=0; i<size; i++) {
index 8f49a99..97cfa58 100644 (file)
@@ -27,6 +27,7 @@
         if (!(cond_)) {                                                   \
             fprintf(stderr, "assertion (%s) failed, aborting\n", #cond_); \
             MPI_Abort(MPI_COMM_WORLD, 1);                                 \
+            exit(1);                                                      \
         }                                                                 \
     } while (0)
 
index bc8a2c2..e607fad 100644 (file)
@@ -25,6 +25,7 @@
         if (!(cond_)) {                                                   \
             fprintf(stderr, "assertion (%s) failed, aborting\n", #cond_); \
             MPI_Abort(MPI_COMM_WORLD, 1);                                 \
+            exit(1);                                                      \
         }                                                                 \
     } while (0)
 
index 2c0ab32..2afbc57 100644 (file)
@@ -405,6 +405,7 @@ static void start_random_nonblocking(MPI_Comm comm, unsigned int rndnum, MPI_Req
         default:
             fprintf(stderr, "unexpected value for l->case_num=%d)\n", (l->case_num));
             MPI_Abort(comm, 1);
+            exit(1);
             break;
     }
 }
index 32358d9..a13561c 100644 (file)
@@ -160,9 +160,15 @@ int main( int argc, char *argv[] )
        MPI_Type_commit( &mattype );
        
        buf = (int *)malloc( count * size * size * sizeof(int) );
-       if (!buf) MPI_Abort( MPI_COMM_WORLD, 1 );
+       if (!buf) {
+          MPI_Abort( MPI_COMM_WORLD, 1 );
+          exit(1);
+        }
        bufout = (int *)malloc( count * size * size * sizeof(int) );
-       if (!bufout) MPI_Abort( MPI_COMM_WORLD, 1 );
+       if (!bufout) {
+          MPI_Abort( MPI_COMM_WORLD, 1 );
+          exit(1);
+        }
 
        for (root = 0; root < size; root ++) {
            initMat( comm, buf );
index a3e9183..abef5a8 100644 (file)
@@ -220,9 +220,15 @@ int main( int argc, char *argv[] )
        MPI_Type_commit( &mattype );
        
        buf = (int *)malloc( count * size * size * sizeof(int) );
-       if (!buf) MPI_Abort( MPI_COMM_WORLD, 1 );
+       if (!buf) {
+          MPI_Abort( MPI_COMM_WORLD, 1 );
+          exit(1);
+        }
        bufout = (int *)malloc( count * size * size * sizeof(int) );
-       if (!bufout) MPI_Abort( MPI_COMM_WORLD, 1 );
+       if (!bufout) {
+          MPI_Abort( MPI_COMM_WORLD, 1 );
+          exit(1);
+        }
 
        for (root = 0; root < size; root ++) {
            initMat( comm, buf );
index 7891cb6..71886e4 100644 (file)
@@ -42,6 +42,7 @@ int main(int argc, char **argv)
         err++;
         fprintf(stderr, "unable to allocate send/recv buffers, aborting");
         MPI_Abort(MPI_COMM_WORLD, 1);
+        exit(1);
     }
     for (i=0; i<size; i++)
         sendbuf[i] = rank + i;
index d2ed7ec..9d3b7ad 100644 (file)
@@ -39,6 +39,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Could not allocate %d ints for recvcounts\n", 
                 size );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     mycount = (1024 * 1024) / size;
     for (i=0; i<size; i++) 
@@ -48,6 +49,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Could not allocate %d ints for sendbuf\n", 
                 mycount * size );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     idx = 0;
     for (i=0; i<size; i++) {
@@ -60,6 +62,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Could not allocate %d ints for recvbuf\n", 
                 mycount );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     for (i=0; i<mycount; i++) {
        recvbuf[i] = -1;
index bf5f65f..5810b5b 100644 (file)
@@ -58,6 +58,7 @@ int main( int argc, char **argv )
            fprintf( stderr, "Could not allocate %d ints for sendbuf\n", 
                     sendcount );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
 
        for (i=0; i<sendcount; i++) {
@@ -68,6 +69,7 @@ int main( int argc, char **argv )
            fprintf( stderr, "Could not allocate %d ints for recvbuf\n", 
                     recvcount );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
        for (i=0; i<recvcount; i++) {
            recvbuf[i] = (long long)(-i);
index 5fb81e5..8341082 100644 (file)
@@ -38,6 +38,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Could not allocate %d ints for sendbuf\n", 
                 mycount * size );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     idx = 0;
     for (i=0; i<size; i++) {
@@ -50,6 +51,7 @@ int main( int argc, char **argv )
        fprintf( stderr, "Could not allocate %d ints for recvbuf\n", 
                 mycount );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     MPI_Reduce_scatter_block( sendbuf, recvbuf, mycount, MPI_INT, MPI_SUM, 
index bebfd8a..f54da3c 100644 (file)
@@ -59,6 +59,7 @@ int main( int argc, char **argv )
            fprintf( stderr, "Could not allocate %d int for recvcounts\n", 
                     size );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
        for (i=0; i<size; i++) 
            recvcounts[i] = recvcount;
@@ -68,6 +69,7 @@ int main( int argc, char **argv )
            fprintf( stderr, "Could not allocate %d ints for sendbuf\n", 
                     sendcount );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
 
        for (i=0; i<sendcount; i++) {
@@ -78,6 +80,7 @@ int main( int argc, char **argv )
            fprintf( stderr, "Could not allocate %d ints for recvbuf\n", 
                     recvcount );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
        for (i=0; i<recvcount; i++) {
            recvbuf[i] = (long long)(-i);
index 6d8aa94..ea80da0 100644 (file)
@@ -119,12 +119,14 @@ int main( int argc, char **argv )
     recvbuf = (double *)malloc( nx * ny * sizeof(double) );
     if (!recvbuf) {
         MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     sendbuf = 0;
     if (myrow == 0 && mycol == 0) {
         sendbuf = (double *)malloc( nx * ny * size * sizeof(double) );
         if (!sendbuf) {
             MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
         }
     }
     sendcounts = (int *) malloc( size * sizeof(int) );
index 39f857d..3d6ca7e 100644 (file)
@@ -65,6 +65,7 @@ int main( int argc, char *argv[] )
            fprintf( stderr, "Unable to allocated %d words for data\n", 
                     3 * count );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
        for (i=0; i<count*3; i++) {
            outVal[i] = -1;
index df37772..99e99c1 100644 (file)
@@ -44,6 +44,7 @@ int main( int argc, char *argv[] )
     if (size < 2) {
        fprintf( stderr, "This test requires at least two processes." );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     source  = 0;
index c5f103e..cd14521 100644 (file)
@@ -29,6 +29,7 @@ int main( int argc, char *argv[] )
     if (size < 4) {
        fprintf( stderr, "This test requires at least four processes." );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     color = MPI_UNDEFINED;
index edce6bb..8dc1df3 100644 (file)
@@ -25,6 +25,7 @@ int main(int argc, char *argv[])
     if (size % 2) {
         fprintf(stderr, "this program requires a multiple of 2 number of processes\n");
         MPI_Abort(MPI_COMM_WORLD, 1);
+        exit(1);
     }
 
     excl = malloc((size / 2) * sizeof(int));
index 0823943..1a56bd6 100644 (file)
@@ -45,6 +45,7 @@ int main(int argc, char **argv)
     if (size < 2) {
         printf("this test requires at least 2 processes\n");
         MPI_Abort(MPI_COMM_WORLD, 1);
+        exit(1);
     }
 
 #ifdef TEST_IDUP
index edb60fd..e93f914 100644 (file)
@@ -25,6 +25,7 @@ void abortMsg( const char *str, int code )
     fprintf( stderr, "%s: errcode = %d, class = %d, msg = %s\n", 
             str, code, class, msg );
     MPI_Abort( MPI_COMM_WORLD, code );
+    exit(code);
 }
 
 int main( int argc, char *argv[] )
index 7ab4e6e..9bb4a43 100644 (file)
@@ -24,6 +24,7 @@ int main( int argc, char *argv[] )
     if (size < 2) {
        printf( "Size must be at least 2\n" );
        MPI_Abort( MPI_COMM_WORLD, 0 );
+        exit(0);
     }
 
     MPI_Comm_rank( MPI_COMM_WORLD, &rank );
index 8385648..adf5449 100644 (file)
@@ -34,7 +34,7 @@ int main(int argc, char **argv)
     if (size < 33) {
         printf("ERROR: this test requires at least 33 processes\n");
         MPI_Abort(MPI_COMM_WORLD, 1);
-        return 1;
+        exit(1);
     }
 
     /* group of c0
index 4b3cedd..ef3d363 100644 (file)
@@ -29,6 +29,7 @@ int main( int argc, char *argv[] )
     if (size < 4) {
        printf( "This test requires at least 4 processes\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     MPI_Comm_rank( MPI_COMM_WORLD, &wrank );
 
index 9ad2d51..ab5aeec 100644 (file)
@@ -28,6 +28,7 @@ int main( int argc, char *argv[] )
     if (size < 4) {
        printf( "This test requires at least 4 processes\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     while (MTestGetIntercomm( &intercomm, &isLeft, 2 )) {
index edd56e2..03c9e10 100644 (file)
@@ -32,6 +32,7 @@ int main( int argc, char *argv[] )
     if (size < 2) {
        fprintf( stderr, "This test requires at least two processes." );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     while (MTestGetIntercomm( &intercomm, &isLeft, 2 )) {
index 90eea4a..9de2c59 100644 (file)
@@ -28,6 +28,7 @@ int main( int argc, char *argv[] )
     /* Test 1: Simple, 1-D cyclic decomposition */
     if (AllocateGrid( 1, 3*wsize, &srcArray, &destArray ) ) {
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     /* Simple cyclic with 1-dim global array */
@@ -44,6 +45,7 @@ int main( int argc, char *argv[] )
     if (PackUnpack( darraytype, srcArray, destArray, 3 )) {
        fprintf( stderr, "Error in pack/unpack check\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     /* Now, check for correct data */
     for (i=0; i<3; i++) {
@@ -61,6 +63,7 @@ int main( int argc, char *argv[] )
     /* Test 2: Simple, 1-D cyclic decomposition, with block size=2 */
     if (AllocateGrid( 1, 4*wsize, &srcArray, &destArray ) ) {
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     /* Simple cyclic with 1-dim global array */
@@ -77,6 +80,7 @@ int main( int argc, char *argv[] )
     if (PackUnpack( darraytype, srcArray, destArray, 4 )) {
        fprintf( stderr, "Error in pack/unpack check\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     loc = 0;
     /* for each cyclic element */
@@ -105,11 +109,13 @@ int main( int argc, char *argv[] )
     if (px * py != wsize) {
        fprintf( stderr, "An even number of processes is required\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     /* Cyclic/Cyclic */
     if (AllocateGrid( 5*px, 7*py, &srcArray, &destArray )) {
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     /* Simple cyclic/cyclic. Note in C order, the [1] index varies most 
@@ -131,6 +137,7 @@ int main( int argc, char *argv[] )
     if (PackUnpack( darraytype, srcArray, destArray, 5*7 )) {
        fprintf( stderr, "Error in pack/unpack check\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     loc = 0;
@@ -153,6 +160,7 @@ int main( int argc, char *argv[] )
     /* Cyclic(2)/Cyclic(3) */
     if (AllocateGrid( 6*px, 4*py, &srcArray, &destArray )) {
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     /* Block cyclic/cyclic. Note in C order, the [1] index varies most 
@@ -174,6 +182,7 @@ int main( int argc, char *argv[] )
     if (PackUnpack( darraytype, srcArray, destArray, 4*6 )) {
        fprintf( stderr, "Error in pack/unpack check\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     loc = 0;
@@ -239,6 +248,7 @@ int PackUnpack( MPI_Datatype darraytype, const int srcArray[], int destArray[],
        fprintf( stderr, "Unable to allocate pack array of size %d\n", 
                 packsize );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     position = 0;
     MPI_Pack( (int*)srcArray, 1, darraytype, packArray, packsize, &position, 
index 49ba725..9fe778f 100644 (file)
@@ -33,6 +33,7 @@ int main( int argc, char *argv[] )
        errs++;
        printf( "This test requires at least 2 processes\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     
     src  = 0;
index 31f6a2d..c27a31d 100644 (file)
@@ -13,6 +13,8 @@
 #include <stdlib.h>
 #include <mpi.h>
 
+#define equals(a, b) ((long long)(a) == (long long)(b))
+
 /* assert-like macro that bumps the err count and emits a message */
 #define check(x_)                                                                 \
     do {                                                                          \
@@ -95,89 +97,89 @@ int main(int argc, char *argv[])
 
     /* MPI_Type_size */
     MPI_Type_size(imax_contig, &size);
-    check(size == INT_MAX);
+    check(equals(size, INT_MAX));
     MPI_Type_size(four_ints, &size);
-    check(size == 4*sizeof(int));
+    check(equals(size, 4*sizeof(int)));
     MPI_Type_size(imx4i, &size);
-    check(size == MPI_UNDEFINED); /* should overflow an int */
+    check(equals(size, MPI_UNDEFINED)); /* should overflow an int */
     MPI_Type_size(imx4i_rsz, &size);
-    check(size == MPI_UNDEFINED); /* should overflow an int */
+    check(equals(size, MPI_UNDEFINED)); /* should overflow an int */
 
     /* MPI_Type_size_x */
     MPI_Type_size_x(imax_contig, &size_x);
-    check(size_x == INT_MAX);
+    check(equals(size_x, INT_MAX));
     MPI_Type_size_x(four_ints, &size_x);
-    check(size_x == 4*sizeof(int));
+    check(equals(size_x, 4*sizeof(int)));
     MPI_Type_size_x(imx4i, &size_x);
-    check(size_x == 4LL*sizeof(int)*(INT_MAX/2)); /* should overflow an int */
+    check(equals(size_x, 4LL*sizeof(int)*(INT_MAX/2))); /* should overflow an int */
     MPI_Type_size_x(imx4i_rsz, &size_x);
-    check(size_x == 4LL*sizeof(int)*(INT_MAX/2)); /* should overflow an int */
+    check(equals(size_x, 4LL*sizeof(int)*(INT_MAX/2))); /* should overflow an int */
 
     /* MPI_Type_get_extent */
     MPI_Type_get_extent(imax_contig, &lb, &extent);
-    check(lb == 0);
-    check(extent == INT_MAX);
+    check(equals(lb, 0));
+    check(equals(extent, INT_MAX));
     MPI_Type_get_extent(four_ints, &lb, &extent);
-    check(lb == 0);
-    check(extent == 4*sizeof(int));
+    check(equals(lb, 0));
+    check(equals(extent, 4*sizeof(int)));
     MPI_Type_get_extent(imx4i, &lb, &extent);
-    check(lb == 0);
+    check(equals(lb, 0));
     if (sizeof(MPI_Aint) == sizeof(int))
-        check(extent == MPI_UNDEFINED);
+        check(equals(extent, MPI_UNDEFINED));
     else
-        check(extent == imx4i_true_extent);
+        check(equals(extent, imx4i_true_extent));
 
     MPI_Type_get_extent(imx4i_rsz, &lb, &extent);
-    check(lb == INT_MAX);
-    check(extent == -1024);
+    check(equals(lb, INT_MAX));
+    check(equals(extent, -1024));
 
     /* MPI_Type_get_extent_x */
     MPI_Type_get_extent_x(imax_contig, &lb_x, &extent_x);
-    check(lb_x == 0);
-    check(extent_x == INT_MAX);
+    check(equals(lb_x, 0));
+    check(equals(extent_x, INT_MAX));
     MPI_Type_get_extent_x(four_ints, &lb_x, &extent_x);
-    check(lb_x == 0);
-    check(extent_x == 4*sizeof(int));
+    check(equals(lb_x, 0));
+    check(equals(extent_x, 4*sizeof(int)));
     MPI_Type_get_extent_x(imx4i, &lb_x, &extent_x);
-    check(lb_x == 0);
-    check(extent_x == imx4i_true_extent);
+    check(equals(lb_x, 0));
+    check(equals(extent_x, imx4i_true_extent));
     MPI_Type_get_extent_x(imx4i_rsz, &lb_x, &extent_x);
-    check(lb_x == INT_MAX);
-    check(extent_x == -1024);
+    check(equals(lb_x, INT_MAX));
+    check(equals(extent_x, -1024));
 
     /* MPI_Type_get_true_extent */
     MPI_Type_get_true_extent(imax_contig, &lb, &extent);
-    check(lb == 0);
-    check(extent == INT_MAX);
+    check(equals(lb, 0));
+    check(equals(extent, INT_MAX));
     MPI_Type_get_true_extent(four_ints, &lb, &extent);
-    check(lb == 0);
-    check(extent == 4*sizeof(int));
+    check(equals(lb, 0));
+    check(equals(extent, 4*sizeof(int)));
     MPI_Type_get_true_extent(imx4i, &lb, &extent);
-    check(lb == 0);
+    check(equals(lb, 0));
     if (sizeof(MPI_Aint) == sizeof(int))
-        check(extent == MPI_UNDEFINED);
+        check(equals(extent, MPI_UNDEFINED));
     else
-        check(extent == imx4i_true_extent);
+        check(equals(extent, imx4i_true_extent));
     MPI_Type_get_true_extent(imx4i_rsz, &lb, &extent);
-    check(lb == 0);
+    check(equals(lb, 0));
     if (sizeof(MPI_Aint) == sizeof(int))
-        check(extent == MPI_UNDEFINED);
+        check(equals(extent, MPI_UNDEFINED));
     else
-        check(extent == imx4i_true_extent);
+        check(equals(extent, imx4i_true_extent));
 
     /* MPI_Type_get_true_extent_x */
     MPI_Type_get_true_extent_x(imax_contig, &lb_x, &extent_x);
-    check(lb_x == 0);
-    check(extent_x == INT_MAX);
+    check(equals(lb_x, 0));
+    check(equals(extent_x, INT_MAX));
     MPI_Type_get_true_extent_x(four_ints, &lb_x, &extent_x);
-    check(lb_x == 0);
-    check(extent_x == 4*sizeof(int));
+    check(equals(lb_x, 0));
+    check(equals(extent_x, 4*sizeof(int)));
     MPI_Type_get_true_extent_x(imx4i, &lb_x, &extent_x);
-    check(lb_x == 0);
-    check(extent_x == imx4i_true_extent);
+    check(equals(lb_x, 0));
+    check(equals(extent_x, imx4i_true_extent));
     MPI_Type_get_true_extent_x(imx4i_rsz, &lb_x, &extent_x);
-    check(lb_x == 0);
-    check(extent_x == imx4i_true_extent);
+    check(equals(lb_x, 0));
+    check(equals(extent_x, imx4i_true_extent));
 
 
     /* MPI_{Status_set_elements,Get_elements}{,_x} */
@@ -187,18 +189,18 @@ int main(int argc, char *argv[])
     MPI_Get_elements(&status, MPI_INT, &elements);
     MPI_Get_elements_x(&status, MPI_INT, &elements_x);
     MPI_Get_count(&status, MPI_INT, &count);
-    check(elements == 10);
-    check(elements_x == 10);
-    check(count == 10);
+    check(equals(elements, 10));
+    check(equals(elements_x, 10));
+    check(equals(count, 10));
 
     /* set_x simple */
     MPI_Status_set_elements_x(&status, MPI_INT, 10);
     MPI_Get_elements(&status, MPI_INT, &elements);
     MPI_Get_elements_x(&status, MPI_INT, &elements_x);
     MPI_Get_count(&status, MPI_INT, &count);
-    check(elements == 10);
-    check(elements_x == 10);
-    check(count == 10);
+    check(equals(elements, 10));
+    check(equals(elements_x, 10));
+    check(equals(count, 10));
 
     /* Sets elements corresponding to count=1 of the given MPI datatype, using
      * set_elements and set_elements_x.  Checks expected values are returned by
@@ -213,9 +215,9 @@ int main(int argc, char *argv[])
             MPI_Get_elements(&status, (type_), &elements);        \
             MPI_Get_elements_x(&status, (type_), &elements_x);    \
             MPI_Get_count(&status, (type_), &count);              \
-            check(elements == (elts_));                           \
-            check(elements_x == (elts_));                         \
-            check(count == 1);                                    \
+            check(equals(elements, (elts_)));                     \
+            check(equals(elements_x, (elts_)));                   \
+            check(equals(count, 1));                              \
         }                                                         \
                                                                   \
         elements = elements_x = count = 0xfeedface;               \
@@ -224,13 +226,13 @@ int main(int argc, char *argv[])
         MPI_Get_elements_x(&status, (type_), &elements_x);        \
         MPI_Get_count(&status, (type_), &count);                  \
         if ((elts_) > INT_MAX) {                                  \
-            check(elements == MPI_UNDEFINED);                     \
+            check(equals(elements, MPI_UNDEFINED));               \
         }                                                         \
         else {                                                    \
-            check(elements == (elts_));                           \
+            check(equals(elements, (elts_)));                     \
         }                                                         \
-        check(elements_x == (elts_));                             \
-        check(count == 1);                                        \
+        check(equals(elements_x, (elts_)));                       \
+        check(equals(count, 1));                                  \
     } while (0)                                                   \
 
     check_set_elements(imax_contig, INT_MAX);
index 036eaf6..3c44de2 100644 (file)
@@ -40,6 +40,7 @@ int main( int argc, char **argv )
     {
         fprintf(stderr, "Could not make struct type."), fflush(stderr); 
         MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     
     memset(s_buf, 0, EL_COUNT*SIZE);
index d38fb7f..9f909f2 100644 (file)
@@ -37,6 +37,7 @@ int main( int argc, char *argv[] )
     if (size < 2) {
        fprintf( stderr, "This test requires at least two processes." );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     source  = 0;
index 069fddc..ffaccad 100644 (file)
@@ -39,6 +39,7 @@ int main( int argc, char *argv[] )
        buf = (int *)malloc( count * 3 * sizeof(int) );
        if (!buf) {
            MPI_Abort( comm, 1 );
+            exit(1);
        }
        for (i=0; i<3*count; i++) buf[i] = -1;
        if (rank == source) {
index 064084b..2f5ec3e 100644 (file)
@@ -43,6 +43,7 @@ int main( int argc, char *argv[] )
        buf = (int *)malloc( count * 3 * sizeof(int) );
        if (!buf) {
            MPI_Abort( comm, 1 );
+            exit(1);
        }
        for (i=0; i<3*count; i++) buf[i] = -1;
        if (rank == source) {
index 1d9cc9e..b2da152 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 2.6)
 
-if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C)
+if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90)
   if(WIN32)
     set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
   else()
index a8a0b84..ca51980 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 2.6)
 
-if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C)
+if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90)
   if(WIN32)
     set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
   else()
index 79829e7..5367f99 100644 (file)
@@ -24,6 +24,7 @@
       if (size .lt. 2) then
          print *, "Must have at least 2 processes"
          call MPI_Abort( 1, MPI_COMM_WORLD, ierr )
+         stop
       endif
 
       errs = 0
index abc17da..71e9735 100644 (file)
@@ -45,6 +45,7 @@
       if (size .lt. 2) then
          print *, "Must have at least 2 processes"
          call MPI_Abort( 1, MPI_COMM_WORLD, ierr )
+         stop
       endif
 
       comm = MPI_COMM_WORLD
index d64be2f..3e4ec84 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 2.6)
 
-if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C)
+if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90)
   if(WIN32)
     set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
   else()
index 682e23c..dfed73b 100644 (file)
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 2.6)
 
-if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C)
+if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90)
   if(WIN32)
     set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
   else()
index e5f032f..3e753a4 100644 (file)
@@ -33,10 +33,12 @@ int main( int argc, char *argv[] )
         "This test requires a comm world with no more than %d processes\n", 
                 MAX_WORLD_SIZE );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     if (size < 4) {
        fprintf( stderr, "This test requiers at least 4 processes\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     MPI_Comm_group( comm, &gworld );
index 98b79d2..9900aa3 100644 (file)
@@ -45,6 +45,7 @@ int main( int argc, char *argv[] )
     if (!ranks || !ranksout) {
         fprintf(stderr, "out of memory\n");
         MPI_Abort(MPI_COMM_WORLD, 1);
+        exit(1);
     }
 
     /* generate a comm with the rank order reversed */
index 3c085fd..797716b 100644 (file)
@@ -39,6 +39,7 @@ int main( int argc, char *argv[] )
        errs++;
        fprintf( stderr, "This test requires at least two processes\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     source = 0;
     dest = 1;
index 8f22959..0326369 100644 (file)
@@ -43,6 +43,7 @@ int main( int argc, char *argv[] )
        errs++;
        fprintf( stderr, "At least 2 processes required\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     src  = 0;
@@ -57,6 +58,7 @@ int main( int argc, char *argv[] )
            fprintf( stderr, "Could not allocate buffer of %d bytes\n", 
                     bufsize );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
        MPI_Buffer_attach( buf, bufsize );
 
index cc7cc5a..70aa336 100644 (file)
@@ -53,6 +53,7 @@ int main( int argc, char *argv[] )
                fprintf( stderr, "Unable to allocate a buffer of %d bytes\n",
                         bufsize );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            
            MPI_Buffer_attach( buf, bufsize );
index 2744748..850364a 100644 (file)
@@ -24,6 +24,7 @@ int main( int argc, char *argv[] )
     if (size < 2) {
        fprintf( stderr, "Must run with at least 2 processes\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     MPI_Comm_rank( MPI_COMM_WORLD, &rank );
 
@@ -39,6 +40,7 @@ int main( int argc, char *argv[] )
        fprintf( stderr, "Unable to allocate buffers of size %d\n", 
                 n0 * (int)sizeof(int) );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
     memset( buf0, -1, n0 * sizeof(int) );
     memset( buf1, -1, n0 * sizeof(int) );
index 4adc26c..7855b75 100644 (file)
@@ -51,6 +51,7 @@ int main( int argc, char *argv[] )
            fprintf( stderr, "Unable to allocate buffer %d of size %ld\n", 
                        i, (long)extent );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
     }
     buf = (int *)malloc( 10 * 30 * sizeof(int) );
index b8a6d09..42d60b7 100644 (file)
@@ -34,6 +34,7 @@ int main(int argc, char *argv[])
   if (size != 3) {
     fprintf(stderr,"[%d] usage: mpiexec -n 3 %s\n",rank,argv[0]);
     MPI_Abort(MPI_COMM_WORLD,1);
+    exit(1);
   }
 
   cols = malloc(cnt*sizeof(long long));
index c48d871..2e97536 100644 (file)
@@ -49,6 +49,7 @@ int main(int argc, char **argv)
     if (size < 2) {
         printf("this test requires at least 2 processes\n");
         MPI_Abort(MPI_COMM_WORLD, 1);
+        exit(1);
     }
 
     /* all processes besides ranks 0 & 1 aren't used by this test */
index e32e5f1..08b6b2c 100644 (file)
@@ -43,6 +43,7 @@ int main( int argc, char *argv[] )
            if (!buf) {
                fprintf( stderr, "Unable to allocate %d bytes\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            MPI_Send_init( buf, n, MPI_CHAR, dest, cs+n+1, comm, &req );
            MPI_Start( &req );
@@ -80,6 +81,7 @@ int main( int argc, char *argv[] )
                {
                    fprintf( stderr, "Unable to allocate %d bytes\n", nn);
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
                MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
                free(btemp);
@@ -96,12 +98,14 @@ int main( int argc, char *argv[] )
            if (!buf) {
                fprintf( stderr, "Unable to allocate %d bytes\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            bsendbufsize = n + MPI_BSEND_OVERHEAD;
            bsendbuf = (char *)malloc( bsendbufsize );
            if (!bsendbuf) {
                fprintf( stderr, "Unable to allocate %d bytes for bsend\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            MPI_Buffer_attach( bsendbuf, bsendbufsize );
            MPI_Bsend_init( buf, n, MPI_CHAR, dest, cs+n+2, comm, &req );
@@ -142,6 +146,7 @@ int main( int argc, char *argv[] )
                {
                    fprintf( stderr, "Unable to allocate %d bytes\n", nn);
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
                MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
                free(btemp);
@@ -162,6 +167,7 @@ int main( int argc, char *argv[] )
            if (!buf) {
                fprintf( stderr, "Unable to allocate %d bytes\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            MPI_Rsend_init( buf, n, MPI_CHAR, dest, cs+n+3, comm, &req );
            MPI_Start( &req );
@@ -208,6 +214,7 @@ int main( int argc, char *argv[] )
                {
                    fprintf( stderr, "Unable to allocate %d bytes\n", n);
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
                MPI_Recv( btemp, n, MPI_CHAR, 0, tag, comm, &status );
                free(btemp);
@@ -222,6 +229,7 @@ int main( int argc, char *argv[] )
            if (!buf) {
                fprintf( stderr, "Unable to allocate %d bytes\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            MPI_Ssend_init( buf, n, MPI_CHAR, dest, cs+n+4, comm, &req );
            MPI_Start( &req );
@@ -259,6 +267,7 @@ int main( int argc, char *argv[] )
                {
                    fprintf( stderr, "Unable to allocate %d bytes\n", nn);
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
                MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
                free(btemp);
index 1a6eab1..2d752ca 100644 (file)
@@ -27,6 +27,7 @@ int main( int argc, char *argv[] )
        if (dest > r) r = dest;
        fprintf( stderr, "This program requires %d processes\n", r-1 );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     if (rank == src) {
index 7c8cf65..7623be6 100644 (file)
@@ -44,6 +44,7 @@ int main( int argc, char *argv[] )
            if (!buf) {
                fprintf( stderr, "Unable to allocate %d bytes\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            MTestPrintfMsg( 1, "(%d) About to create isend and cancel\n",cs );
            MPI_Isend( buf, n, MPI_CHAR, dest, cs+n+1, comm, &req );
@@ -81,6 +82,7 @@ int main( int argc, char *argv[] )
                {
                    fprintf( stderr, "Unable to allocate %d bytes\n", nn );
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
                MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
                free(btemp);
@@ -97,12 +99,14 @@ int main( int argc, char *argv[] )
            if (!buf) {
                fprintf( stderr, "Unable to allocate %d bytes\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            bsendbufsize = n + MPI_BSEND_OVERHEAD;
            bsendbuf = (char *)malloc( bsendbufsize );
            if (!bsendbuf) {
                fprintf( stderr, "Unable to allocate %d bytes for bsend\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            MPI_Buffer_attach( bsendbuf, bsendbufsize );
            MTestPrintfMsg( 1, "About to create and cancel ibsend\n" );
@@ -142,6 +146,7 @@ int main( int argc, char *argv[] )
                {
                    fprintf( stderr, "Unable to allocate %d bytes\n", nn);
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
                MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
                free(btemp);
@@ -162,6 +167,7 @@ int main( int argc, char *argv[] )
            if (!buf) {
                fprintf( stderr, "Unable to allocate %d bytes\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            MTestPrintfMsg( 1, "About to create and cancel irsend\n" );
            MPI_Irsend( buf, n, MPI_CHAR, dest, cs+n+3, comm, &req );
@@ -207,6 +213,7 @@ int main( int argc, char *argv[] )
                {
                    fprintf( stderr, "Unable to allocate %d bytes\n", n);
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
                MPI_Recv( btemp, n, MPI_CHAR, 0, tag, comm, &status );
                free(btemp);
@@ -221,6 +228,7 @@ int main( int argc, char *argv[] )
            if (!buf) {
                fprintf( stderr, "Unable to allocate %d bytes\n", n );
                MPI_Abort( MPI_COMM_WORLD, 1 );
+                exit(1);
            }
            MTestPrintfMsg( 1, "About to create and cancel issend\n" );
            MPI_Issend( buf, n, MPI_CHAR, dest, cs+n+4, comm, &req );
@@ -257,6 +265,7 @@ int main( int argc, char *argv[] )
                {
                    fprintf( stderr, "Unable to allocate %d bytes\n", nn);
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
                MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
                free(btemp);
index b027f0b..8da0257 100644 (file)
@@ -40,6 +40,7 @@ int main( int argc, char *argv[] )
        if (!buf) {
            fprintf( stderr, "Unable to allocate %d bytes\n", n );
            MPI_Abort( MPI_COMM_WORLD, 1 );
+            exit(1);
        }
 
        if (rank == source) {
index eba48e6..2f87e47 100644 (file)
@@ -40,6 +40,7 @@ int main ( int argc, char *argv[] )
     fprintf( stderr, "This program requires a comm_world no larger than %d",
             MAXPES );
     MPI_Abort( MPI_COMM_WORLD, 1 );
+    exit(1);
   }
 
   for (size = 1; size  <= MYBUFSIZE ; size += size) {
index e0c21a7..19ced11 100644 (file)
@@ -35,6 +35,7 @@ int main( int argc, char *argv[] )
     if (size < 2) {
        printf( "This test requires at least 2 processes\n" );
        MPI_Abort( MPI_COMM_WORLD, 1 );
+        exit(1);
     }
 
     for (testnum=0; msgsizes[testnum] > 0; testnum++) {
@@ -50,6 +51,7 @@ int main( int argc, char *argv[] )
                    fprintf( stderr, "Unable to allocate %d bytes\n", 
                             msgSize );
                    MPI_Abort( MPI_COMM_WORLD, 1 );
+                    exit(1);
                }
            }
            partner = (rank + 1) % size;
index 6f40201..0fd3032 100644 (file)
@@ -1534,6 +1534,7 @@ void MTestError( const char *msg )
     fprintf( stderr, "%s\n", msg );
     fflush( stderr );
     MPI_Abort( MPI_COMM_WORLD, 1 );
+    exit(1);
 }
 /* ------------------------------------------------------------------------ */
 static void MTestResourceSummary( FILE *fp )
index a90ee02..6d2e09a 100644 (file)
@@ -16,7 +16,7 @@ p Test pingpong
 ! setenv LD_LIBRARY_PATH=../../lib
 ! output sort
 $ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ./pingpong -q
-> *** Ping-pong test (MPI_Send/MPI_Recv) ***
+>     *** Ping-pong test (MPI_Send/MPI_Recv) ***
 > == pivot=0 : pingpong [0] <--> [1]
 > == pivot=1 : pingpong [1] <--> [2]
 > == pivot=2 : pingpong [2] <--> [3]
index 8e73331..3236486 100644 (file)
@@ -2,6 +2,7 @@
 # (since we want to pass it to the child, it has to be redefined before each command)
 # Go for the first test
 p Test Reduce with 3 processes
+! output sort
 $ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 3 ./reduce -q
 > [rank 0] -> Tremblay
 > [rank 1] -> Jupiter
@@ -21,6 +22,7 @@ $ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform $
 
 # second test
 ! setenv LD_LIBRARY_PATH=../../lib
+! output sort
 p Test Reduce with 5 processes
 $ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 5 ./reduce -q
 > [rank 0] -> Tremblay
@@ -44,6 +46,7 @@ $ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform $
 >      ok.
 
 # third test
+! output sort
 ! setenv LD_LIBRARY_PATH=../../lib
 p Test Reduce with 12 processes
 $ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 12 ./reduce -q
index d2b6c79..5344d64 100644 (file)
@@ -4,7 +4,7 @@
 
 p Test reduce_scatter
 $ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 16 --log=xbt_cfg.thres:critical ./reduce_scatter_coll 
-> No Errors
+>  No Errors
 > You requested to use 16 processes, but there is only 5 processes in your hostfile...
 > [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
 > [rank 0] -> Tremblay
index 7c1864b..8b245aa 100644 (file)
@@ -21,7 +21,9 @@ int main(int argc, char**argv)
   xbt_init(&argc,argv);
 
   XBT_INFO("Allocating a new heap");
-  heapA = xbt_mheap_new(-1, ((char*)sbrk(0)) + BUFFSIZE);
+  unsigned long mask = ~((unsigned long)getpagesize() - 1);
+  void *addr = (void*)(((unsigned long)sbrk(0) + BUFFSIZE) & mask);
+  heapA = xbt_mheap_new(-1, addr);
   if (heapA == NULL) {
     perror("attach 1 failed");
     fprintf(stderr, "bye\n");
index cebd30d..a035d51 100644 (file)
@@ -31,7 +31,7 @@ int main(int argc, char **argv)
 
   int status = TRACE_platform_graph_export_graphviz (graphvizFile);
   if (status == 0){
-    XBT_INFO ("%s expects --cfg=tracing:1 --cfg=tracing/platform:1", argv[0]);
+    XBT_INFO ("%s expects --cfg=tracing:yes --cfg=tracing/platform:yes", argv[0]);
   }
 #else
   XBT_INFO ("works only if simgrid was compiled with tracing enabled.");
index 58d754c..2096fcb 100644 (file)
@@ -1,7 +1,7 @@
 #! ./tesh
 
-$ ${bindir:=.}/graphicator ${srcdir:=.}/teshsuite/simdag/platforms/one_cluster.xml --cfg=tracing:1 --cfg=tracing/platform:1 test.dot
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+$ ${bindir:=.}/graphicator ${srcdir:=.}/teshsuite/simdag/platforms/one_cluster.xml --cfg=tracing:yes --cfg=tracing/platform:yes test.dot
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
 
 $ rm test.dot
index 7c2feea..27bab27 100644 (file)
@@ -1,20 +1,18 @@
 # Valgrind suppressions for stuff that we cannot control
 
-# Memory leak in dash
-# dash is actually used when checking the "mkfile" command in tesh
+# Memory leaks in standard tools (e.g. dash, tail, or sort)
 {
-   Memory leak in /bin/dash
+   Memory leak in /bin tools
    Memcheck:Leak
    ...
-   obj:/bin/dash
+   obj:/bin/*
 }
 
-# We also don't want to be annoyed by leaks in /usr/bin/tail
 {
-   Memory leak in /usr/bin/tail
+   Memory leak in /usr/bin tools
    Memcheck:Leak
    ...
-   obj:/usr/bin/tail
+   obj:/usr/bin/*
 }
 
 # There's a constant leak of 56 bytes in the depths of libc which
index 3ed1758..5688054 100644 (file)
@@ -26,12 +26,13 @@ endif()
 set(tesh_files
   ${tesh_files}
   ${CMAKE_CURRENT_SOURCE_DIR}/setenv.tesh
-  ${CMAKE_CURRENT_SOURCE_DIR}/set-ignore-output.tesh
+  ${CMAKE_CURRENT_SOURCE_DIR}/set-output-ignore.tesh
+  ${CMAKE_CURRENT_SOURCE_DIR}/set-output-sort.tesh
+  ${CMAKE_CURRENT_SOURCE_DIR}/set-output-sort-1.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/set-return.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/set-signal.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/set-timeout.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/background.tesh
-  ${CMAKE_CURRENT_SOURCE_DIR}/basic2.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/basic.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/bg-basic.tesh
   ${CMAKE_CURRENT_SOURCE_DIR}/bg-set-signal.tesh
index 5f4e02b..f6e79f9 100644 (file)
@@ -1008,8 +1008,8 @@ p First, a write test
 < 997 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 < 998 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 < 999 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-$ wc -c
-> 150000
+$ sed -n '$='
+> 1000
 
 p And now, a read/write test
 
index d8c8f68..32289af 100644 (file)
@@ -9,10 +9,17 @@ $ mkfile tmp_fich
 $ cat tmp_fich
 > TOTO TUTU
 
+! expect return 2
+! output ignore
+< $ cat tmp_fich
+< > TUTU TOTO
+$ ${bindir:=.}/tesh --enable-coverage
+
 $ rm tmp_fich
 
 p And now, some multilines examples
 
+p Really basic multiline
 < a
 < b
 < c
@@ -25,27 +32,132 @@ $ cat tmp_fich
 > c
 > d
 
-$ wc -l tmp_fich
-> 4 tmp_fich
+$ sed -n '$=' tmp_fich
+> 4
 
 $ rm tmp_fich
 
-$ ${bindir:=.}/tesh --enable-coverage --log='log.thresh:info tesh.fmt:%m%n' basic2.tesh
-> Enable coverage
-> Test suite `basic2'
-> [basic2:3] Test sorting and filtering of output
-> [basic2:5] true
-> [basic2:8] true
-> [basic2:10] printf 'profiling: foo\\n'
-> [basic2:12] printf 'profiling: foo'
-> [basic2:15] printf 'profiling: foo\\n'
-> [basic2:18] printf 'profiling: foo'
-> [basic2:20] printf 'a\\nb\\nc\\nd\\n'
-> [basic2:26] printf 'a\\nb\\nc\\nd'
-> [basic2:33] printf 'c\\nd\\nb\\na\\n'
-> [basic2:40] printf 'c\\nd\\nb\\na'
-> [basic2:46] printf 'a\\nprofiling: foo\\nprofiling: bar\\nb\\nc\\nd\\nprofiling: baz\\n'
-> [basic2:52] printf 'a\\nprofiling: foo\\nprofiling: bar\\nb\\nc\\nd\\nprofiling: baz'
-> [basic2:59] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz\\n'
-> [basic2:66] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz'
-> Test suite `basic2' OK
+p Now, check for spaces in input
+
+p * leading and trailing spaces...
+<   a
+<  b 
+< c  
+$ sed 's/ /_/g'
+> __a
+> _b_
+> c__
+
+p * empty lines...
+< a
+<
+< c
+$ sed '2s/^/b/'
+> a
+> b
+> c
+
+<
+< b
+< c
+$ sed '1s/^/a/'
+> a
+> b
+> c
+
+p Now that input should be good, check for spaces in output
+
+p * leading spaces...
+< _x
+$ sed 's/_/ /'
+>  x
+
+! expect return 2
+! output ignore
+< < _x
+< $ sed 's/_/ /'
+< > x
+$ ${bindir:=.}/tesh --enable-coverage
+
+! expect return 2
+! output ignore
+< < x
+< $ cat
+< >  x
+$ ${bindir:=.}/tesh --enable-coverage
+
+p * trailing spaces...
+< x_
+$ sed 's/_/ /'
+> x 
+
+! expect return 2
+! output ignore
+< < x_
+< $ sed 's/_/ /'
+< > x
+$ ${bindir:=.}/tesh --enable-coverage
+
+! expect return 2
+! output ignore
+< < x
+< $ cat
+< > x 
+$ ${bindir:=.}/tesh --enable-coverage
+
+p * empty lines...
+< a
+<
+< c
+$ cat
+> a
+>
+> c
+
+! expect return 2
+! output ignore
+< < a
+< <
+< < c
+< $ cat
+< > a
+< > c
+$ ${bindir:=.}/tesh --enable-coverage
+
+! expect return 2
+! output ignore
+< < a
+< < c
+< $ cat
+< > a
+< >
+< > c
+$ ${bindir:=.}/tesh --enable-coverage
+
+<
+< b
+< c
+$ cat
+>
+> b
+> c
+
+! expect return 2
+! output ignore
+< <
+< < b
+< < c
+< $ cat
+< > b
+< > c
+$ ${bindir:=.}/tesh --enable-coverage
+
+! expect return 2
+! output ignore
+< < b
+< < c
+< $ cat
+< >
+< > b
+< > c
+$ ${bindir:=.}/tesh --enable-coverage
index 94bf5c8..ea794f1 100644 (file)
@@ -21,7 +21,7 @@ $ ../tesh --enable-coverage --log='log.thresh:info tesh.fmt:%m%n'
 > Test suite from stdin
 > [(stdin):1] ./return1
 > Test suite `(stdin)': NOK (<(stdin):1> returned code 1)
-> Output of <(stdin):1> so far: 
+> Output of <(stdin):1> so far:
 > ||
 
 $ cd ..
index 7cde981..5c7b45f 100644 (file)
@@ -22,7 +22,7 @@ $ ../tesh --enable-coverage --log='log.thresh:info tesh.fmt:%m%n'
 > Test suite from stdin
 > [(stdin):1] ./segfault
 > Test suite `(stdin)': NOK (<(stdin):1> got signal SIGSEGV)
-> Output of <(stdin):1> so far: 
+> Output of <(stdin):1> so far:
 > ||
 
 $ cd ..
index 8bfa7c7..5768cf9 100644 (file)
@@ -795,8 +795,6 @@ void *rctx_wait(void *r)
   }
   xbt_strbuff_chomp(rctx->output_got);
   xbt_strbuff_chomp(rctx->output_wanted);
-  xbt_strbuff_trim(rctx->output_got);
-  xbt_strbuff_trim(rctx->output_wanted);
 
   /* Check for broken pipe */
   if (rctx->brokenpipe)
@@ -871,7 +869,7 @@ void *rctx_wait(void *r)
     xbt_dynar_t a = xbt_str_split(rctx->output_got->data, "\n");
     char *out = xbt_str_join(a, "\n||");
     xbt_dynar_free(&a);
-    XBT_INFO("Output of <%s> so far: \n||%s", rctx->filepos, out);
+    XBT_INFO("Output of <%s> so far:\n||%s", rctx->filepos, out);
     free(out);
   } else if (rctx->output == e_output_check
              && (rctx->output_got->used != rctx->output_wanted->used
@@ -893,7 +891,7 @@ void *rctx_wait(void *r)
     xbt_dynar_t a = xbt_str_split(rctx->output_got->data, "\n");
     char *out = xbt_str_join(a, "\n||");
     xbt_dynar_free(&a);
-    XBT_INFO("Here is the (ignored) command output: \n||%s", out);
+    XBT_INFO("Here is the (ignored) command output:\n||%s", out);
     free(out);
   }
 
similarity index 98%
rename from tools/tesh/basic2.tesh
rename to tools/tesh/set-output-sort-1.tesh
index b95065e..c009b4a 100644 (file)
@@ -1,5 +1,3 @@
-#! ./tesh
-
 p Test sorting and filtering of output
 
 $ true
diff --git a/tools/tesh/set-output-sort.tesh b/tools/tesh/set-output-sort.tesh
new file mode 100644 (file)
index 0000000..c2856a2
--- /dev/null
@@ -0,0 +1,73 @@
+#! ./tesh
+
+p This tests whether TESH correctly sorts command output
+
+$ ${bindir:=.}/tesh --enable-coverage --log='log.thresh:info tesh.fmt:%m%n' set-output-sort-1.tesh
+> Enable coverage
+> Test suite `set-output-sort-1'
+> [set-output-sort-1:1] Test sorting and filtering of output
+> [set-output-sort-1:3] true
+> [set-output-sort-1:6] true
+> [set-output-sort-1:8] printf 'profiling: foo\\n'
+> [set-output-sort-1:10] printf 'profiling: foo'
+> [set-output-sort-1:13] printf 'profiling: foo\\n'
+> [set-output-sort-1:16] printf 'profiling: foo'
+> [set-output-sort-1:18] printf 'a\\nb\\nc\\nd\\n'
+> [set-output-sort-1:24] printf 'a\\nb\\nc\\nd'
+> [set-output-sort-1:31] printf 'c\\nd\\nb\\na\\n'
+> [set-output-sort-1:38] printf 'c\\nd\\nb\\na'
+> [set-output-sort-1:44] printf 'a\\nprofiling: foo\\nprofiling: bar\\nb\\nc\\nd\\nprofiling: baz\\n'
+> [set-output-sort-1:50] printf 'a\\nprofiling: foo\\nprofiling: bar\\nb\\nc\\nd\\nprofiling: baz'
+> [set-output-sort-1:57] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz\\n'
+> [set-output-sort-1:64] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz'
+> Test suite `set-output-sort-1' OK
+
+p Check the default prefix length (19) for "output sort"
+! output sort
+< 12345678901234567 B line
+< 12345678901234567 A line
+$ cat
+> 12345678901234567 A line
+> 12345678901234567 B line
+
+! output sort
+< 123456789012345678 B line
+< 123456789012345678 A line
+$ cat
+> 123456789012345678 B line
+> 123456789012345678 A line
+
+! expect return 2
+! output ignore
+< ! output sort
+< < 123456789012345678 B line
+< < 123456789012345678 A line
+< $ cat
+< > 123456789012345678 A line
+< > 123456789012345678 B line
+$ ${bindir:=.}/tesh --enable-coverage
+
+p Check user-defined prefix length for "output sort"
+! output sort 5
+< 000 B line
+< 000 A line
+$ cat
+> 000 A line
+> 000 B line
+
+! output sort 4
+< 000 B line
+< 000 A line
+$ cat
+> 000 B line
+> 000 A line
+
+! expect return 2
+! output ignore
+< ! output sort 4
+< < 000 B line
+< < 000 A line
+< $ cat
+< > 000 A line
+< > 000 B line
+$ ${bindir:=.}/tesh --enable-coverage