From: degomme Date: Thu, 28 Mar 2019 11:04:52 +0000 (+0100) Subject: Fix debug + trace X-Git-Tag: v3_22~25^2~4 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/4f07a5a6873fe49b411ace45de96adfbef8cb41a?ds=sidebyside Fix debug + trace - print might be called several times when debug is on, leading to double frees. - actually emove the calls to buffer_debug, printing the whole buffer twice at each tracing event is a tiny bit too much (and it ruins the output trace). The helper function is still there, I don't know whether to remove it or not. --- diff --git a/src/instr/instr_paje_events.cpp b/src/instr/instr_paje_events.cpp index 0870bf097f..ed016d8cab 100644 --- a/src/instr/instr_paje_events.cpp +++ b/src/instr/instr_paje_events.cpp @@ -83,6 +83,10 @@ void VariableEvent::print() tracing_file << stream_.str() << std::endl; } +StateEvent::~StateEvent(){ + delete extra_; +} + void StateEvent::print() { if (trace_format == simgrid::instr::TraceFormat::Paje) { @@ -119,7 +123,6 @@ void StateEvent::print() THROW_IMPOSSIBLE; } - delete extra_; } } } diff --git a/src/instr/instr_paje_events.hpp b/src/instr/instr_paje_events.hpp index 71dd4c7514..d57c64446a 100644 --- a/src/instr/instr_paje_events.hpp +++ b/src/instr/instr_paje_events.hpp @@ -74,6 +74,7 @@ class StateEvent : public PajeEvent { public: StateEvent(Container* container, Type* type, e_event_type event_type, EntityValue* value, TIData* extra); + ~StateEvent(); void print() override; }; diff --git a/src/instr/instr_paje_trace.cpp b/src/instr/instr_paje_trace.cpp index 2a440d15bf..f880887903 100644 --- a/src/instr/instr_paje_trace.cpp +++ b/src/instr/instr_paje_trace.cpp @@ -85,8 +85,6 @@ static void buffer_debug(std::vector* buf) /* internal do the instrumentation module */ void simgrid::instr::PajeEvent::insert_into_buffer() { - buffer_debug(&buffer); - XBT_DEBUG("%s: insert event_type=%u, timestamp=%f, buffersize=%zu)", __func__, eventType_, timestamp_, buffer.size()); std::vector::reverse_iterator i; for (i = buffer.rbegin(); i != buffer.rend(); ++i) { @@ -102,6 +100,4 @@ void simgrid::instr::PajeEvent::insert_into_buffer() else XBT_DEBUG("%s: inserted at pos= %zd from its end", __func__, std::distance(buffer.rbegin(), i)); buffer.insert(i.base(), this); - - buffer_debug(&buffer); }