From 92ea670205383dc42d657bdb495dab81ce7ad013 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 19 Nov 2023 20:15:27 +0400 Subject: [PATCH] Don't error on frame end without start in on-demand mode With on-demand profiling we're very likely to connect in the middle of a discontinuous frame and thus receive a frame end without any preceding frame start. So don't error out in this case. --- server/TracyWorker.cpp | 4 +++- server/TracyWorker.hpp | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 90dac69c..e225bcdb 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -2756,6 +2756,7 @@ void Worker::Exec() m_captureTime = welcome.epoch; m_executableTime = welcome.exectime; m_ignoreMemFreeFaults = ( welcome.flags & WelcomeFlag::OnDemand ) || ( welcome.flags & WelcomeFlag::IsApple ); + m_ignoreFrameEndFaults = welcome.flags & WelcomeFlag::OnDemand; m_data.cpuArch = (CpuArchitecture)welcome.cpuArch; m_codeTransfer = welcome.flags & WelcomeFlag::CodeTransfer; m_combineSamples = welcome.flags & WelcomeFlag::CombineSamples; @@ -5079,7 +5080,8 @@ void Worker::ProcessFrameMarkEnd( const QueueFrameMark& ev ) const auto time = TscTime( ev.time ); if( fd->frames.empty() ) { - FrameEndFailure(); + if ( !m_ignoreFrameEndFaults ) + FrameEndFailure(); return; } assert( fd->frames.back().end == -1 ); diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index 6ef503c9..b84b3ec9 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -980,6 +980,7 @@ private: int m_bufferOffset; bool m_onDemand; bool m_ignoreMemFreeFaults; + bool m_ignoreFrameEndFaults; bool m_codeTransfer; bool m_combineSamples; bool m_identifySamples = false;