1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Make sure source file data is properly tracked.

This commit is contained in:
Bartosz Taudul
2022-10-13 19:00:22 +02:00
parent fc85e46f31
commit b88ef29792
6 changed files with 44 additions and 21 deletions
+17 -9
View File
@@ -3444,8 +3444,9 @@ void Worker::QuerySourceFile( const char* fn, const char* image )
{
if( image ) QueryDataTransfer( image, strlen( image ) + 1 );
QueryDataTransfer( fn, strlen( fn ) + 1 );
m_sourceCodeQuery.emplace_back( fn );
Query( ServerQuerySourceCode, 0 );
m_sourceCodeQuery.emplace( m_nextSourceCodeQuery, fn );
Query( ServerQuerySourceCode, m_nextSourceCodeQuery );
m_nextSourceCodeQuery++;
}
void Worker::QueryDataTransfer( const void* ptr, size_t size )
@@ -3503,7 +3504,7 @@ bool Worker::DispatchProcess( const QueueItem& ev, const char*& ptr )
m_serverQuerySpaceLeft++;
break;
case QueueType::SourceCode:
AddSourceCode( ptr, sz );
AddSourceCode( (uint32_t)ev.stringTransfer.ptr, ptr, sz );
m_serverQuerySpaceLeft++;
break;
default:
@@ -4161,11 +4162,12 @@ void Worker::AddSymbolCode( uint64_t ptr, const char* data, size_t sz )
}
void Worker::AddSourceCode( const char* data, size_t sz )
void Worker::AddSourceCode( uint32_t id, const char* data, size_t sz )
{
assert( !m_sourceCodeQuery.empty() );
auto file = m_sourceCodeQuery.front();
m_sourceCodeQuery.erase( m_sourceCodeQuery.begin() );
auto it = m_sourceCodeQuery.find( id );
assert( it != m_sourceCodeQuery.end() );
auto file = it->second;
m_sourceCodeQuery.erase( it );
if( m_data.sourceFileCache.find( file ) != m_data.sourceFileCache.end() ) return;
auto src = (char*)m_slab.AllocBig( sz );
memcpy( src, data, sz );
@@ -4941,8 +4943,7 @@ bool Worker::Process( const QueueItem& ev )
m_serverQuerySpaceLeft++;
break;
case QueueType::AckSourceCodeNotAvailable:
assert( !m_sourceCodeQuery.empty() );
m_sourceCodeQuery.erase( m_sourceCodeQuery.begin() );
ProcessSourceCodeNotAvailable( ev.sourceCodeNotAvailable );
m_serverQuerySpaceLeft++;
break;
case QueueType::AckSymbolCodeNotAvailable:
@@ -7031,6 +7032,13 @@ void Worker::ProcessParamSetup( const QueueParamSetup& ev )
m_params.push_back( Parameter { ev.idx, StringRef( StringRef::Ptr, ev.name ), bool( ev.isBool ), ev.val } );
}
void Worker::ProcessSourceCodeNotAvailable( const QueueSourceCodeNotAvailable& ev )
{
auto it = m_sourceCodeQuery.find( ev.id );
assert( it != m_sourceCodeQuery.end() );
m_sourceCodeQuery.erase( it );
}
void Worker::ProcessCpuTopology( const QueueCpuTopology& ev )
{
auto package = m_data.cpuTopology.find( ev.package );