src/msg/msg_mailbox.h
src/msg/msg_private.h
src/portable.h
+ src/probes.tp
src/simdag/dax.dtd
src/simdag/dax_dtd.c
src/simdag/dax_dtd.h
src/xbt/mmalloc/mmprivate.h
src/xbt/mmalloc/mmtrace.awk
src/xbt/mmalloc/mrealloc.c
+ src/xbt/probes.h
src/xbt/setset_private.h
src/xbt/win32_ucontext.c
tools/tesh/run_context.h
src/xbt/automaton/parserPromela.tab.hacc
)
+if(enable_ust)
+ set(simgrid_sources ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_ust.c ${simgrid_sources})
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_ust.c
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_ust.h
+ COMMAND lttng-gen-tp -o simgrid_ust.c -o simgrid_ust.h ${CMAKE_CURRENT_SOURCE_DIR}/src/probes.tp
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src/
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/probes.tp
+ )
+ ADD_CUSTOM_TARGET(simgrid_ust
+ DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_ust.c
+ ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_ust.h
+ )
+ set(generated_src_files ${CMAKE_CURRENT_BINARY_DIR}/src/simgrid_ust.c ${generated_src_files})
+endif()
+
foreach(file ${generated_src_files})
set_source_files_properties(${file} PROPERTIES GENERATED true)
endforeach(file ${generated_src_files})
set(optCFLAGS "-O0 ")
endif()
+if(enable_sdt)
+ add_definitions(-DUSE_SDT)
+endif()
+
+if(enable_ust)
+ add_definitions(-DUSE_UST)
+endif()
+
if(enable_model-checking AND enable_compile_optimizations)
# Forget it, do not optimize the code (because it confuses the MC):
set(optCFLAGS "-O0 ")
add_library(simgrid_static STATIC ${simgrid_sources})
endif()
+if(enable_ust)
+ ADD_DEPENDENCIES(simgrid simgrid_ust)
+endif()
+
if(enable_java)
include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MakeJava.cmake)
endif()
SET(SIMGRID_DEP "${SIMGRID_DEP} -lexecinfo")
endif(HAVE_BACKTRACE_IN_LIBEXECINFO)
+# Dependencies from USR
+###################################
+if(enable_ust)
+ set(SIMGRID_DEP "${SIMGRID_DEP} -llttng-ust")
+endif()
+
# Compute the dependencies of SMPI
##################################
if(enable_smpi AND APPLE)
option(enable_tracing "Tracing simulations for visualization." on)
option(enable_latency_bound_tracking "" off)
option(enable_coverage "Enable coverage." off)
+option(enable_ust "Enable userspace statuic tracepoint (lttng-ust)." off)
+option(enable_sdt "Enable statically defined tracepoint (strace/systemtap)." off)
mark_as_advanced(enable_coverage)
option(enable_memcheck "Enable memcheck." off)
option(enable_memcheck_xml "Enable memcheck with xml output." off)
if (strncmp(link, "pipe:", 5) == 0 || strncmp(link, "socket:", 7) == 0)
continue;
+ // This is probably a shared memory used by lttng-ust:
+ if(strncmp("/dev/shm/ust-shm-tmp-", link, 21)==0)
+ continue;
+
// Add an entry for this FD in the snapshot:
fd_infos_t fd = xbt_new0(s_fd_infos_t, 1);
fd->filename = strdup(link);
#include "xbt/mmalloc.h"
#include "xbt/mmalloc/mmprivate.h"
+#include <xbt/probes.h>
+
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_compare, mc,
"Logging specific to mc_compare");
(char *) current_var->address, snapshot2, r2,
bvariable_type, 0);
if (res == 1) {
+ XBT_TRACE3(mc, global_diff, -1, -1, current_var->name);
XBT_VERB("Global variable %s (%p) is different between snapshots",
current_var->name, (char *) current_var->address);
return 1;
if (res == 1) {
// TODO, fix current_varX->subprogram->name to include name if DW_TAG_inlined_subprogram
+ XBT_TRACE3(mc, local_diff, -1, -1, current_var1->name);
XBT_VERB
("Local variable %s (%p - %p) in frame %s is different between snapshots",
current_var1->name, current_var1->address, current_var2->address,
if (_sg_mc_hash) {
hash_result = (s1->hash != s2->hash);
if (hash_result) {
+ XBT_TRACE2(mc, hash_diff, num1, num2);
XBT_VERB("(%d - %d) Different hash : 0x%" PRIx64 "--0x%" PRIx64, num1,
num2, s1->hash, s2->hash);
#ifndef MC_DEBUG
unsigned int cursor;
int pid;
xbt_dynar_foreach(s1->enabled_processes, cursor, pid){
- if(!xbt_dynar_member(s2->enabled_processes, &pid))
+ if(!xbt_dynar_member(s2->enabled_processes, &pid)) {
+ //XBT_TRACE3(mc, state_diff, num1, num2, "Different enabled processes");
XBT_VERB("(%d - %d) Different enabled processes", num1, num2);
+ // return 1; ??
+ }
}
unsigned long i = 0;
XBT_VERB("(%d - %d) Different size used in stacks : %zu - %zu", num1,
num2, size_used1, size_used2);
#endif
+ XBT_TRACE3(mc, state_diff, num1, num2, "Different stack size");
xbt_os_walltimer_stop(timer);
xbt_os_timer_free(timer);
errors++;
#else
#ifdef MC_VERBOSE
+ XBT_TRACE3(mc, state_diff, num1, num2, "Different heap information");
XBT_VERB("(%d - %d) Different heap information", num1, num2);
#endif
else diff_local =
compare_local_variables(stack1->process_index, s1, s2, stack1, stack2);
if (diff_local > 0) {
+ XBT_TRACE3(mc, state_diff, num1, num2, "Different local variables");
#ifdef MC_DEBUG
if (is_diff == 0) {
xbt_os_walltimer_stop(timer);
compare_global_variables(object_infos[k], MC_NO_PROCESS_INDEX, s1->regions[k], s2->regions[k], s1, s2);
if (is_diff != 0) {
+ XBT_TRACE3(mc, state_diff, num1, num2, "Different global variables");
#ifdef MC_DEBUG
xbt_os_walltimer_stop(timer);
*times[k] = xbt_os_timer_elapsed(timer);
/* Compare heap */
if (mmalloc_compare_heap(s1, s2) > 0) {
+ XBT_TRACE3(mc, state_diff, num1, num2, "Different heap");
#ifdef MC_DEBUG
xbt_os_walltimer_stop(timer);
--- /dev/null
+TRACEPOINT_EVENT(
+ mc,
+ state_diff,
+ TP_ARGS(
+ int, state1,
+ int, state2,
+ char*, message
+ ),
+ TP_FIELDS(
+ ctf_integer(int, state1, state1)
+ ctf_integer(int, state2, state2)
+ ctf_string(message, message)
+ )
+)
+TRACEPOINT_LOGLEVEL(mc, state_diff, TRACE_INFO)
+
+TRACEPOINT_EVENT(
+ mc,
+ hash_diff,
+ TP_ARGS(
+ int, state1,
+ int, state2
+ ),
+ TP_FIELDS(
+ ctf_integer(int, state1, state1)
+ ctf_integer(int, state2, state2)
+ )
+)
+TRACEPOINT_LOGLEVEL(mc, hash_diff, TRACE_INFO)
+
+TRACEPOINT_EVENT(
+ mc,
+ global_diff,
+ TP_ARGS(
+ int, state1,
+ int, state2,
+ char*, variable
+ ),
+ TP_FIELDS(
+ ctf_integer(int, state1, state1)
+ ctf_integer(int, state2, state2)
+ ctf_string(variable, variable)
+ )
+)
+TRACEPOINT_LOGLEVEL(mc, global_diff, TRACE_INFO)
+
+TRACEPOINT_EVENT(
+ mc,
+ local_diff,
+ TP_ARGS(
+ int, state1,
+ int, state2,
+ char*, variable
+ ),
+ TP_FIELDS(
+ ctf_integer(int, state1, state1)
+ ctf_integer(int, state2, state2)
+ ctf_string(variable, variable)
+ )
+)
+TRACEPOINT_LOGLEVEL(mc, local_diff, TRACE_INFO)
--- /dev/null
+/* Copyright (c) 2014. 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. */
+
+#ifdef USE_UST
+# include <lttng/tracepoint.h>
+# include "simgrid_ust.h"
+# define XBT_TRACE0 tracepoint
+# define XBT_TRACE1 tracepoint
+# define XBT_TRACE2 tracepoint
+# define XBT_TRACE3 tracepoint
+# define XBT_TRACE4 tracepoint
+# define XBT_TRACE5 tracepoint
+# define XBT_TRACE6 tracepoint
+# define XBT_TRACE7 tracepoint
+# define XBT_TRACE8 tracepoint
+# define XBT_TRACE9 tracepoint
+# define XBT_TRACE10 tracepoint
+# define XBT_TRACE11 tracepoint
+# define XBT_TRACE12 tracepoint
+#elif USE_SDT
+# include <sys/sdt.h>
+# define XBT_TRACE0 DTRACE_PROBE0
+# define XBT_TRACE1 DTRACE_PROBE1
+# define XBT_TRACE2 DTRACE_PROBE2
+# define XBT_TRACE3 DTRACE_PROBE3
+# define XBT_TRACE4 DTRACE_PROBE4
+# define XBT_TRACE5 DTRACE_PROBE5
+# define XBT_TRACE6 DTRACE_PROBE6
+# define XBT_TRACE7 DTRACE_PROBE7
+# define XBT_TRACE8 DTRACE_PROBE8
+# define XBT_TRACE9 DTRACE_PROBE9
+# define XBT_TRACE10 DTRACE_PROBE10
+# define XBT_TRACE11 DTRACE_PROBE11
+# define XBT_TRACE12 DTRACE_PROBE12
+#else
+# define XBT_TRACE0(...)
+# define XBT_TRACE1(...)
+# define XBT_TRACE2(...)
+# define XBT_TRACE3(...)
+# define XBT_TRACE4(...)
+# define XBT_TRACE5(...)
+# define XBT_TRACE6(...)
+# define XBT_TRACE7(...)
+# define XBT_TRACE8(...)
+# define XBT_TRACE9(...)
+# define XBT_TRACE10(...)
+# define XBT_TRACE11(...)
+# define XBT_TRACE12(...)
+#endif