Author: Felipe de Azevedo Piovezan Date: 2026-01-07T19:11:41-03:00 New Revision: 13829dfaac414775fb932282b0cc92192aec08d6
URL: https://github.com/llvm/llvm-project/commit/13829dfaac414775fb932282b0cc92192aec08d6 DIFF: https://github.com/llvm/llvm-project/commit/13829dfaac414775fb932282b0cc92192aec08d6.diff LOG: [lldb] Add missing locks in SBThread methods (#174791) Some of these methods are not acquiring the run lock prior to executing. Added: Modified: lldb/source/API/SBThread.cpp Removed: ################################################################################ diff --git a/lldb/source/API/SBThread.cpp b/lldb/source/API/SBThread.cpp index e8711791beed8..a857a58be7f84 100644 --- a/lldb/source/API/SBThread.cpp +++ b/lldb/source/API/SBThread.cpp @@ -319,6 +319,13 @@ void SBThread::SetThread(const ThreadSP &lldb_object_sp) { lldb::tid_t SBThread::GetThreadID() const { LLDB_INSTRUMENT_VA(this); + llvm::Expected<StoppedExecutionContext> exe_ctx = + GetStoppedExecutionContext(m_opaque_sp); + if (!exe_ctx) { + LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}"); + return LLDB_INVALID_THREAD_ID; + } + ThreadSP thread_sp(m_opaque_sp->GetThreadSP()); if (thread_sp) return thread_sp->GetID(); @@ -328,6 +335,13 @@ lldb::tid_t SBThread::GetThreadID() const { uint32_t SBThread::GetIndexID() const { LLDB_INSTRUMENT_VA(this); + llvm::Expected<StoppedExecutionContext> exe_ctx = + GetStoppedExecutionContext(m_opaque_sp); + if (!exe_ctx) { + LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}"); + return LLDB_INVALID_INDEX32; + } + ThreadSP thread_sp(m_opaque_sp->GetThreadSP()); if (thread_sp) return thread_sp->GetIndexID(); @@ -1315,6 +1329,13 @@ SBThread SBThread::GetExtendedBacktraceThread(const char *type) { uint32_t SBThread::GetExtendedBacktraceOriginatingIndexID() { LLDB_INSTRUMENT_VA(this); + llvm::Expected<StoppedExecutionContext> exe_ctx = + GetStoppedExecutionContext(m_opaque_sp); + if (!exe_ctx) { + LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}"); + return LLDB_INVALID_INDEX32; + } + ThreadSP thread_sp(m_opaque_sp->GetThreadSP()); if (thread_sp) return thread_sp->GetExtendedBacktraceOriginatingIndexID(); @@ -1324,6 +1345,13 @@ uint32_t SBThread::GetExtendedBacktraceOriginatingIndexID() { SBValue SBThread::GetCurrentException() { LLDB_INSTRUMENT_VA(this); + llvm::Expected<StoppedExecutionContext> exe_ctx = + GetStoppedExecutionContext(m_opaque_sp); + if (!exe_ctx) { + LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}"); + return SBValue(); + } + ThreadSP thread_sp(m_opaque_sp->GetThreadSP()); if (!thread_sp) return SBValue(); @@ -1334,6 +1362,13 @@ SBValue SBThread::GetCurrentException() { SBThread SBThread::GetCurrentExceptionBacktrace() { LLDB_INSTRUMENT_VA(this); + llvm::Expected<StoppedExecutionContext> exe_ctx = + GetStoppedExecutionContext(m_opaque_sp); + if (!exe_ctx) { + LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}"); + return SBThread(); + } + ThreadSP thread_sp(m_opaque_sp->GetThreadSP()); if (!thread_sp) return SBThread(); @@ -1344,6 +1379,13 @@ SBThread SBThread::GetCurrentExceptionBacktrace() { bool SBThread::SafeToCallFunctions() { LLDB_INSTRUMENT_VA(this); + llvm::Expected<StoppedExecutionContext> exe_ctx = + GetStoppedExecutionContext(m_opaque_sp); + if (!exe_ctx) { + LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}"); + return false; + } + ThreadSP thread_sp(m_opaque_sp->GetThreadSP()); if (thread_sp) return thread_sp->SafeToCallFunctions(); @@ -1363,6 +1405,13 @@ lldb_private::Thread *SBThread::get() { SBValue SBThread::GetSiginfo() { LLDB_INSTRUMENT_VA(this); + llvm::Expected<StoppedExecutionContext> exe_ctx = + GetStoppedExecutionContext(m_opaque_sp); + if (!exe_ctx) { + LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}"); + return SBValue(); + } + ThreadSP thread_sp = m_opaque_sp->GetThreadSP(); if (!thread_sp) return SBValue(); _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
