Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Cosmetics in sthread output when not using SMPI
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Mon, 6 Mar 2023 09:17:42 +0000 (10:17 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Mon, 6 Mar 2023 09:18:44 +0000 (10:18 +0100)
examples/sthread/pthread-mc-mutex-simpledeadlock.tesh
src/sthread/sthread_impl.cpp

index c633f46..c6146c5 100644 (file)
@@ -24,8 +24,8 @@ $ ${bindir:=.}/../../bin/simgrid-mc --cfg=model-check/setenv:LD_PRELOAD=${libdir
 > [0.000000] [ker_engine/INFO] 3 actors are still running, waiting for something.
 > [0.000000] [ker_engine/INFO] Legend of the following listing: "Actor <pid> (<name>@<host>): <status>"
 > [0.000000] [ker_engine/INFO] Actor 1 (main thread@Lilibeth) simcall ActorJoin(pid:2)
-> [0.000000] [ker_engine/INFO] Actor 2 (0:1@Lilibeth) simcall MUTEX_WAIT(mutex_id:1 owner:3)
-> [0.000000] [ker_engine/INFO] Actor 3 (0:2@Lilibeth) simcall MUTEX_WAIT(mutex_id:0 owner:2)
+> [0.000000] [ker_engine/INFO] Actor 2 (thread 1@Lilibeth) simcall MUTEX_WAIT(mutex_id:1 owner:3)
+> [0.000000] [ker_engine/INFO] Actor 3 (thread 2@Lilibeth) simcall MUTEX_WAIT(mutex_id:0 owner:2)
 > [0.000000] [mc_global/INFO] Counter-example execution trace:
 > [0.000000] [mc_global/INFO]   2: MUTEX_ASYNC_LOCK(mutex: 0, owner: 2)
 > [0.000000] [mc_global/INFO]   2: MUTEX_WAIT(mutex: 0, owner: 2)
index 8076231..45ba730 100644 (file)
@@ -74,12 +74,14 @@ int sthread_create(unsigned long int* thread, const void* /*pthread_attr_t* attr
   static int TID = 0;
   TID++;
   XBT_VERB("Create thread %d", TID);
-  int rank = 0;
+  std::string name = std::string("thread ") + std::to_string(TID);
 #if HAVE_SMPI
-  if (SMPI_is_inited())
+  if (SMPI_is_inited()) {
+    int rank = 0;
     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    name = simgrid::xbt::string_printf("%d:%d", rank, TID);
+  }
 #endif
-  std::string name    = simgrid::xbt::string_printf("%d:%d", rank, TID);
   sg4::ActorPtr actor = sg4::Actor::create(
       name, lilibeth,
       [](auto* user_function, auto* param) {