Handle discontinuous frame end mismatch failure.

This commit is contained in:
Bartosz Taudul 2019-02-28 19:32:42 +01:00
parent d80dc82b96
commit 42c94f7142
2 changed files with 12 additions and 2 deletions

View File

@ -2439,6 +2439,13 @@ void Worker::MemFreeFailure( uint64_t thread )
m_failureData.srcloc = 0; m_failureData.srcloc = 0;
} }
void Worker::FrameEndFailure()
{
m_failure = Failure::ZoneEnd;
m_failureData.thread = 0;
m_failureData.srcloc = 0;
}
void Worker::ProcessZoneValidation( const QueueZoneValidation& ev ) void Worker::ProcessZoneValidation( const QueueZoneValidation& ev )
{ {
auto td = NoticeThread( ev.thread ); auto td = NoticeThread( ev.thread );
@ -2496,7 +2503,7 @@ void Worker::ProcessFrameMarkEnd( const QueueFrameMark& ev )
const auto time = TscTime( ev.time ); const auto time = TscTime( ev.time );
if( fd->frames.empty() ) if( fd->frames.empty() )
{ {
assert( m_onDemand ); FrameEndFailure();
return; return;
} }
assert( fd->frames.back().end == -1 ); assert( fd->frames.back().end == -1 );
@ -3857,7 +3864,8 @@ static const char* s_failureReasons[] = {
"Received zone end event without a matching zone begin event.", "Received zone end event without a matching zone begin event.",
"Zone text transfer destination doesn't match active zone.", "Zone text transfer destination doesn't match active zone.",
"Zone name transfer destination doesn't match active zone.", "Zone name transfer destination doesn't match active zone.",
"Memory free event without a matching allocation." "Memory free event without a matching allocation.",
"Discontinuous frame begin/end mismatch.",
}; };
static_assert( sizeof( s_failureReasons ) / sizeof( *s_failureReasons ) == (int)Worker::Failure::NUM_FAILURES, "Missing failure reason description." ); static_assert( sizeof( s_failureReasons ) / sizeof( *s_failureReasons ) == (int)Worker::Failure::NUM_FAILURES, "Missing failure reason description." );

View File

@ -189,6 +189,7 @@ public:
ZoneText, ZoneText,
ZoneName, ZoneName,
MemFree, MemFree,
FrameEnd,
NUM_FAILURES NUM_FAILURES
}; };
@ -350,6 +351,7 @@ private:
void ZoneTextFailure( uint64_t thread ); void ZoneTextFailure( uint64_t thread );
void ZoneNameFailure( uint64_t thread ); void ZoneNameFailure( uint64_t thread );
void MemFreeFailure( uint64_t thread ); void MemFreeFailure( uint64_t thread );
void FrameEndFailure();
tracy_force_inline void CheckSourceLocation( uint64_t ptr ); tracy_force_inline void CheckSourceLocation( uint64_t ptr );
void NewSourceLocation( uint64_t ptr ); void NewSourceLocation( uint64_t ptr );