From 8edbbf704c335418f8bc3f8c3174c4e662c6a7ec Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Wed, 15 Nov 2023 22:46:21 +0100 Subject: [PATCH] Properly pass the LD_PRELOAD as a setenv command in tesh file + show the ignored output in comments --- .../pthread-mc-mutex-simpledeadlock.tesh | 78 ++++++++++++++++++- 1 file changed, 76 insertions(+), 2 deletions(-) diff --git a/examples/sthread/pthread-mc-mutex-simpledeadlock.tesh b/examples/sthread/pthread-mc-mutex-simpledeadlock.tesh index e384d25613..eaa6b2b458 100644 --- a/examples/sthread/pthread-mc-mutex-simpledeadlock.tesh +++ b/examples/sthread/pthread-mc-mutex-simpledeadlock.tesh @@ -29,7 +29,81 @@ $ $VALGRIND_NO_TRACE_CHILDREN ${bindir:=.}/../../bin/simgrid-mc --cfg=model-chec > [0.000000] [mc_dfs/INFO] DFS exploration ended. 21 unique states visited; 3 backtracks (11 transition replays, 35 states visited overall) +# The return code of a replay is not modified +! expect return 0 ! output display -! expect return 3 -$ $VALGRIND_NO_TRACE_CHILDREN LD_PRELOAD=${libdir:=.}/libsthread.so ${bindir:=.}/pthread-mutex-simpledeadlock +! setenv LD_PRELOAD=${libdir:=.}/libsthread.so +$ $VALGRIND_NO_TRACE_CHILDREN ${bindir:=.}/pthread-mutex-simpledeadlock --cfg=model-check/replay:'2;2;3;2;3;3' + # The output contains build paths, and cannot be tested with tesh, unfortunately +# Here, it will produce the following output (if you don't build out of the tree, you'll get another output): + +# $ LD_PRELOAD=${libdir:=.}/libsthread.so ${bindir:=.}/pthread-mutex-simpledeadlock --cfg=model-check/replay:'2;2;3;2;3;3' +# sthread is intercepting the execution of ./pthread-mutex-simpledeadlock +# [0.000000] [xbt_cfg/INFO] Configuration change: Set 'model-check/replay' to '2;2;3;2;3;3' +# [0.000000] [mc_record/INFO] path=2;2;3;2;3;3 +# All threads are started. +# [0.000000] [mc_record/INFO] *********************************************************************************** +# [0.000000] [mc_record/INFO] * Path chunk #1 '2/0' Actor thread 1(pid:2): MUTEX_ASYNC_LOCK(mutex_id:0 owner:none) +# [0.000000] [mc_record/INFO] *********************************************************************************** +# Backtrace (displayed in actor thread 1): +# -> #0 simgrid::s4u::Mutex::lock() at ../../src/s4u/s4u_Mutex.cpp:26 +# -> #1 sthread_mutex_lock at ../../src/sthread/sthread_impl.cpp:188 +# -> #2 pthread_mutex_lock at ../../src/sthread/sthread.c:141 +# -> #3 thread_fun1 at ../../examples/sthread/pthread-mutex-simpledeadlock.c:21 +# +# [0.000000] [mc_record/INFO] *********************************************************************************** +# [0.000000] [mc_record/INFO] * Path chunk #2 '2/0' Actor thread 1(pid:2): MUTEX_WAIT(mutex_id:0 owner:2) +# [0.000000] [mc_record/INFO] *********************************************************************************** +# Backtrace (displayed in actor thread 1): +# -> #0 simgrid::s4u::Mutex::lock() at ../../src/s4u/s4u_Mutex.cpp:29 +# -> #1 sthread_mutex_lock at ../../src/sthread/sthread_impl.cpp:188 +# -> #2 pthread_mutex_lock at ../../src/sthread/sthread.c:141 +# -> #3 thread_fun1 at ../../examples/sthread/pthread-mutex-simpledeadlock.c:21 +# +# [0.000000] [mc_record/INFO] *********************************************************************************** +# [0.000000] [mc_record/INFO] * Path chunk #3 '3/0' Actor thread 2(pid:3): MUTEX_ASYNC_LOCK(mutex_id:1 owner:none) +# [0.000000] [mc_record/INFO] *********************************************************************************** +# Backtrace (displayed in actor thread 2): +# -> #0 simgrid::s4u::Mutex::lock() at ../../src/s4u/s4u_Mutex.cpp:26 +# -> #1 sthread_mutex_lock at ../../src/sthread/sthread_impl.cpp:188 +# -> #2 pthread_mutex_lock at ../../src/sthread/sthread.c:141 +# -> #3 thread_fun2 at ../../examples/sthread/pthread-mutex-simpledeadlock.c:31 +# +# [0.000000] [mc_record/INFO] *********************************************************************************** +# [0.000000] [mc_record/INFO] * Path chunk #4 '2/0' Actor thread 1(pid:2): MUTEX_ASYNC_LOCK(mutex_id:1 owner:3) +# [0.000000] [mc_record/INFO] *********************************************************************************** +# Backtrace (displayed in actor thread 1): +# -> #0 simgrid::s4u::Mutex::lock() at ../../src/s4u/s4u_Mutex.cpp:26 +# -> #1 sthread_mutex_lock at ../../src/sthread/sthread_impl.cpp:188 +# -> #2 pthread_mutex_lock at ../../src/sthread/sthread.c:141 +# -> #3 thread_fun1 at ../../examples/sthread/pthread-mutex-simpledeadlock.c:22 +# +# [0.000000] [mc_record/INFO] *********************************************************************************** +# [0.000000] [mc_record/INFO] * Path chunk #5 '3/0' Actor thread 2(pid:3): MUTEX_WAIT(mutex_id:1 owner:3) +# [0.000000] [mc_record/INFO] *********************************************************************************** +# Backtrace (displayed in actor thread 2): +# -> #0 simgrid::s4u::Mutex::lock() at ../../src/s4u/s4u_Mutex.cpp:29 +# -> #1 sthread_mutex_lock at ../../src/sthread/sthread_impl.cpp:188 +# -> #2 pthread_mutex_lock at ../../src/sthread/sthread.c:141 +# -> #3 thread_fun2 at ../../examples/sthread/pthread-mutex-simpledeadlock.c:31 +# +# [0.000000] [mc_record/INFO] *********************************************************************************** +# [0.000000] [mc_record/INFO] * Path chunk #6 '3/0' Actor thread 2(pid:3): MUTEX_ASYNC_LOCK(mutex_id:0 owner:2) +# [0.000000] [mc_record/INFO] *********************************************************************************** +# Backtrace (displayed in actor thread 2): +# -> #0 simgrid::s4u::Mutex::lock() at ../../src/s4u/s4u_Mutex.cpp:26 +# -> #1 sthread_mutex_lock at ../../src/sthread/sthread_impl.cpp:188 +# -> #2 pthread_mutex_lock at ../../src/sthread/sthread.c:141 +# -> #3 thread_fun2 at ../../examples/sthread/pthread-mutex-simpledeadlock.c:32 +# +# [0.000000] [mc_record/INFO] The replay of the trace is complete. DEADLOCK detected. +# [0.000000] [ker_engine/INFO] 3 actors are still running, waiting for something. +# [0.000000] [ker_engine/INFO] Legend of the following listing: "Actor (@): " +# [0.000000] [ker_engine/INFO] Actor 1 (main thread@Lilibeth) simcall ActorJoin(pid: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] [sthread/INFO] All threads exited. Terminating the simulation. +# [0.000000] ../../src/kernel/EngineImpl.cpp:265: [ker_engine/WARNING] Process called exit when leaving - Skipping cleanups +# [0.000000] ../../src/kernel/EngineImpl.cpp:265: [ker_engine/WARNING] Process called exit when leaving - Skipping cleanups +# -- 2.20.1