fixathon created this revision.
fixathon added a reviewer: clayborg.
Herald added subscribers: frasercrmck, luismarques, apazos, sameer.abuasal,
s.egerton, Jim, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01,
edward-jones, zzheng, jrtc27, niosHD, sabuasal, simoncook, johnrusso, rbar, asb.
Herald added a project: All.
fixathon requested review of this revision.
Herald added subscribers: lldb-commits, pcwang-thead.
Herald added a project: LLDB.
Suppress coverity false positives.
This diff contains comments only, including the hints for Coverity static code
inspection
to suppress the warning originating at the next line after the comment.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D131998
Files:
lldb/include/lldb/Core/ThreadSafeValue.h
lldb/source/Host/common/ProcessRunLock.cpp
lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_riscv64.cpp
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
lldb/tools/lldb-vscode/FifoFiles.cpp
Index: lldb/tools/lldb-vscode/FifoFiles.cpp
===================================================================
--- lldb/tools/lldb-vscode/FifoFiles.cpp
+++ lldb/tools/lldb-vscode/FifoFiles.cpp
@@ -62,6 +62,12 @@
line = buffer;
}));
if (future->wait_for(timeout) == std::future_status::timeout || !line)
+ /* Indeed this is a leak, but it's intentional. "future" obj destructor
+ will block in waiting for the worker thread to join. And the worker
+ thread might be stuck in blocking I/O. Intentionally leaking the obj
+ as a hack to avoid blocking main thread, and adding annotation to
+ supress static code inspection warnings" */
+ /* coverity[leaked_storage] */
return createStringError(inconvertibleErrorCode(),
"Timed out trying to get messages from the " +
m_other_endpoint_name);
@@ -79,6 +85,12 @@
done = true;
}));
if (future->wait_for(timeout) == std::future_status::timeout || !done) {
+ /* Indeed this is a leak, but it's intentional. "future" obj destructor will
+ * block in waiting for the worker thread to join. And the worker thread
+ * might be stuck in blocking I/O. Intentionally leaking the obj as a hack
+ * to avoid blocking main thread, and adding annotation to supress static
+ * code inspection warnings" */
+ /* coverity[leaked_storage] */
return createStringError(inconvertibleErrorCode(),
"Timed out trying to send messages to the " +
m_other_endpoint_name);
Index: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
===================================================================
--- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
+++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
@@ -304,7 +304,7 @@
response.PutChar(';');
}
#endif // #if defined(__APPLE__)
-
+ /* coverity[unsigned_compare] */
if (g_default_packet_timeout_sec > 0)
response.Printf("default_packet_timeout:%u;", g_default_packet_timeout_sec);
Index: lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_riscv64.cpp
===================================================================
--- lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_riscv64.cpp
+++ lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_riscv64.cpp
@@ -126,6 +126,7 @@
size_t RegisterInfoPOSIX_riscv64::GetRegisterSetFromRegisterIndex(
uint32_t reg_index) const {
+ /* coverity[unsigned_compare]
if (reg_index >= gpr_first_riscv && reg_index <= gpr_last_riscv)
return GPRegSet;
if (reg_index >= fpr_first_riscv && reg_index <= fpr_last_riscv)
Index: lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
===================================================================
--- lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
+++ lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
@@ -105,6 +105,7 @@
uint32_t ConfigureVectorLength(uint32_t sve_vq);
bool VectorSizeIsValid(uint32_t vq) {
+ /* coverity[unsigned_compare] */
if (vq >= eVectorQuadwordAArch64 && vq <= eVectorQuadwordAArch64SVEMax)
return true;
return false;
Index: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
===================================================================
--- lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -6345,6 +6345,7 @@
// The segment name in a Mach-O LC_SEGMENT/LC_SEGMENT_64 is char[16] and
// is not guaranteed to be nul-terminated if all 16 characters are
// used.
+ /* coverity[buffer_size_warning] */
strncpy(seg_vmaddr.segname, name.AsCString(),
sizeof(seg_vmaddr.segname));
seg_vmaddr.vmaddr = vmaddr;
@@ -6740,6 +6741,7 @@
// the right one, doesn't need to be nul terminated.
// LC_NOTE name field is char[16] and is not guaranteed to be
// nul-terminated.
+ /* coverity[buffer_size_warning] */
strncpy(namebuf, lcnote->name.c_str(), sizeof(namebuf));
buffer.PutRawBytes(namebuf, sizeof(namebuf));
buffer.PutHex64(lcnote->payload_file_offset);
Index: lldb/source/Host/common/ProcessRunLock.cpp
===================================================================
--- lldb/source/Host/common/ProcessRunLock.cpp
+++ lldb/source/Host/common/ProcessRunLock.cpp
@@ -24,6 +24,7 @@
bool ProcessRunLock::ReadTryLock() {
::pthread_rwlock_rdlock(&m_rwlock);
if (!m_running) {
+ /* coverity[missing_unlock] */
return true;
}
::pthread_rwlock_unlock(&m_rwlock);
Index: lldb/include/lldb/Core/ThreadSafeValue.h
===================================================================
--- lldb/include/lldb/Core/ThreadSafeValue.h
+++ lldb/include/lldb/Core/ThreadSafeValue.h
@@ -42,6 +42,7 @@
// Call this if you have already manually locked the mutex using the
// GetMutex() accessor
+ /* coverity[missing_lock] */
void SetValueNoLock(const T &value) { m_value = value; }
std::recursive_mutex &GetMutex() { return m_mutex; }
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits