Author: jankratochvil Date: Sun May 13 11:38:28 2018 New Revision: 332200 URL: http://llvm.org/viewvc/llvm-project?rev=332200&view=rev Log: Revert "Protect DWARFCompileUnit::m_die_array by a new mutex"
Pavel Labath found this patch is incomplete and racy. I think there needs to be some more mutexes even before considering DW_TAG_partial_unit. This reverts commit 331229 which was: https://reviews.llvm.org/D40470 Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.h Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp?rev=332200&r1=332199&r2=332200&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp Sun May 13 11:38:28 2018 @@ -41,20 +41,9 @@ DWARFUnit::~DWARFUnit() {} // Parses a compile unit and indexes its DIEs if it hasn't already been done. //---------------------------------------------------------------------- size_t DWARFUnit::ExtractDIEsIfNeeded(bool cu_die_only) { - size_t initial_die_array_size; - auto already_parsed = [cu_die_only, &initial_die_array_size, this]() -> bool { - initial_die_array_size = m_die_array.size(); - return (cu_die_only && initial_die_array_size > 0) - || initial_die_array_size > 1; - }; - { - llvm::sys::ScopedReader lock(m_extractdies_mutex); - if (already_parsed()) - return 0; - } - llvm::sys::ScopedWriter lock(m_extractdies_mutex); - if (already_parsed()) - return 0; + const size_t initial_die_array_size = m_die_array.size(); + if ((cu_die_only && initial_die_array_size > 0) || initial_die_array_size > 1) + return 0; // Already parsed static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer( @@ -302,8 +291,6 @@ void DWARFUnit::SetAddrBase(dw_addr_t ad void DWARFUnit::ClearDIEs(bool keep_compile_unit_die) { if (m_die_array.size() > 1) { - llvm::sys::ScopedWriter lock(m_extractdies_mutex); - // std::vectors never get any smaller when resized to a smaller size, or // when clear() or erase() are called, the size will report that it is // smaller, but the memory allocated remains intact (call capacity() to see Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.h?rev=332200&r1=332199&r2=332200&view=diff ============================================================================== --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.h (original) +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFUnit.h Sun May 13 11:38:28 2018 @@ -13,7 +13,6 @@ #include "DWARFDIE.h" #include "DWARFDebugInfoEntry.h" #include "lldb/lldb-enumerations.h" -#include "llvm/Support/RWMutex.h" class DWARFUnit; class DWARFCompileUnit; @@ -190,7 +189,6 @@ protected: // If this is a dwo compile unit this is the offset of the base compile unit // in the main object file dw_offset_t m_base_obj_offset = DW_INVALID_OFFSET; - llvm::sys::RWMutex m_extractdies_mutex; static void IndexPrivate(DWARFUnit *dwarf_cu, const lldb::LanguageType cu_language, _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits