[llvm-dev] [lldb-dev] 13.0.0-rc1 has been tagged

Jim Ingham via llvm-dev llvm-dev at lists.llvm.org
Wed Aug 4 17:10:02 PDT 2021


That is certainly an odd chain of includes to end up complaining about ThreadPlanStacks...

ABIMacOSX.cpp does see the definition of ThreadPlanStacks but not along that path...  Something got fairly confused.

There IS an implicitly deleted copy constructor for ThreadPlanStacks, but it doesn't get called anywhere.  This is code that is built pretty much everywhere and this is the first time I've seen this error.

In the ThreadPlanStack header file, there are a couple of routines the iterate over the map of ThreadPlanStacks like (m_plans_list is: std::unordered_map<lldb:tid_t, ThreadPlanStack>):

  void ClearThreadCache() {
    for (auto &plan_list : m_plans_list)
      plan_list.second.ClearThreadCache();
  }

But those get "auto &" so they should just be pulling references to ThreadPlanStacks out, it shouldn't need to copy them.

And then we do call find on the ThreadPlanStackMap and do something with the iterator returned:

  bool RemoveTID(lldb::tid_t tid) {
    auto result = m_plans_list.find(tid);
    if (result == m_plans_list.end())
      return false;
    result->second.ThreadDestroyed(nullptr);
    m_plans_list.erase(result);
    return true;
  }

But the iterator of a map shouldn't require a copy of the value, that doesn't make sense.

Other than that, I can't see anything funny here.  

Is this something triggered by -pedantic?

Jim


> On Aug 4, 2021, at 4:22 PM, Vadim Chugunov via lldb-dev <lldb-dev at lists.llvm.org> wrote:
> 
> Not sure if this is a supported configuration, but I am hitting this error when compiling on Ubuntu 16.04 with clang 12:
> 
> FAILED: /usr/local/bin/clang++  -DGTEST_HAS_RTTI=0 -DHAVE_ROUND -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools/lldb/source/Plugins/ABI/ARM -I/__w/1/s/llvm-project/lldb/source/Plugins/ABI/ARM -Itools/lldb/source -I/__w/1/s/llvm-project/lldb/include -Itools/lldb/include -Iinclude -I/__w/1/s/llvm-project/llvm/include -I/__w/1/python/install/include/python3.9 -I/__w/1/s/llvm-project/llvm/../clang/include -Itools/lldb/../clang/include -I/__w/1/libxml2/install/include/libxml2 -I/__w/1/s/llvm-project/lldb/source/. -target x86_64-linux-gnu -fPIC -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-deprecated-declarations -Wno-unknown-pragmas -Wno-strict-aliasing -Wno-deprecated-register -Wno-vla-extension -Os -DNDEBUG    -fno-exceptions -fno-rtti -std=c++14 -MD -MT tools/lldb/source/Plugins/ABI/ARM/CMakeFiles/lldbPluginABIARM.dir/ABIMacOSX_arm.cpp.o -MF tools/lldb/source/Plugins/ABI/ARM/CMakeFiles/lldbPluginABIARM.dir/ABIMacOSX_arm.cpp.o.d -o tools/lldb/source/Plugins/ABI/ARM/CMakeFiles/lldbPluginABIARM.dir/ABIMacOSX_arm.cpp.o -c /__w/1/s/llvm-project/lldb/source/Plugins/ABI/ARM/ABIMacOSX_arm.cpp
> In file included from /__w/1/s/llvm-project/lldb/source/Plugins/ABI/ARM/ABIMacOSX_arm.cpp:9:
> In file included from /__w/1/s/llvm-project/lldb/source/Plugins/ABI/ARM/ABIMacOSX_arm.h:12:
> In file included from /__w/1/s/llvm-project/lldb/include/lldb/Target/ABI.h:12:
> In file included from /__w/1/s/llvm-project/lldb/include/lldb/Core/PluginInterface.h:12:
> In file included from /__w/1/s/llvm-project/lldb/include/lldb/lldb-private.h:15:
> In file included from /__w/1/s/llvm-project/lldb/include/lldb/lldb-private-enumerations.h:12:
> In file included from /__w/1/s/llvm-project/llvm/include/llvm/ADT/StringRef.h:12:
> In file included from /__w/1/s/llvm-project/llvm/include/llvm/ADT/STLExtras.h:19:
> In file included from /__w/1/s/llvm-project/llvm/include/llvm/ADT/Optional.h:18:
> In file included from /__w/1/s/llvm-project/llvm/include/llvm/ADT/Hashing.h:48:
> In file included from /__w/1/s/llvm-project/llvm/include/llvm/Support/ErrorHandling.h:18:
> In file included from /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/string:40:
> In file included from /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/char_traits.h:39:
> In file included from /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_algobase.h:64:
> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/stl_pair.h:134:35: error: call to implicitly-deleted copy constructor of 'lldb_private::ThreadPlanStack'
>         : first(std::forward<_U1>(__x)), second(__y) { }
>                                          ^      ~~~
> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/ext/new_allocator.h:120:23: note: in instantiation of function template specialization 'std::pair<const unsigned long, lldb_private::ThreadPlanStack>::pair<unsigned long &, void>' requested here
>         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
>                              ^
> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/alloc_traits.h:530:8: note: in instantiation of function template specialization '__gnu_cxx::new_allocator<std::pair<const unsigned long, lldb_private::ThreadPlanStack>>::construct<std::pair<const unsigned long, lldb_private::ThreadPlanStack>, unsigned long &, lldb_private::Thread &>' requested here
>         { __a.construct(__p, std::forward<_Args>(__args)...); }
>               ^
> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/hashtable_policy.h:1955:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<std::pair<const unsigned long, lldb_private::ThreadPlanStack>>>::construct<std::pair<const unsigned long, lldb_private::ThreadPlanStack>, unsigned long &, lldb_private::Thread &>' requested here
>             __value_alloc_traits::construct(__a, __n->_M_valptr(),
>                                   ^
> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/hashtable.h:1526:30: note: in instantiation of function template specialization 'std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<const unsigned long, lldb_private::ThreadPlanStack>, false>>>::_M_allocate_node<unsigned long &, lldb_private::Thread &>' requested here
>         __node_type* __node = this->_M_allocate_node(std::forward<_Args>(__args)...);
>                                     ^
> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/hashtable.h:726:11: note: in instantiation of function template specialization 'std::_Hashtable<unsigned long, std::pair<const unsigned long, lldb_private::ThreadPlanStack>, std::allocator<std::pair<const unsigned long, lldb_private::ThreadPlanStack>>, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>>::_M_emplace<unsigned long &, lldb_private::Thread &>' requested here
>         { return _M_emplace(__unique_keys(), std::forward<_Args>(__args)...); }
>                  ^
> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/unordered_map.h:380:16: note: in instantiation of function template specialization 'std::_Hashtable<unsigned long, std::pair<const unsigned long, lldb_private::ThreadPlanStack>, std::allocator<std::pair<const unsigned long, lldb_private::ThreadPlanStack>>, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>>::emplace<unsigned long &, lldb_private::Thread &>' requested here
>         { return _M_h.emplace(std::forward<_Args>(__args)...); }
>                       ^
> /__w/1/s/llvm-project/lldb/include/lldb/Target/ThreadPlanStack.h:127:18: note: in instantiation of function template specialization 'std::unordered_map<unsigned long, lldb_private::ThreadPlanStack, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<std::pair<const unsigned long, lldb_private::ThreadPlanStack>>>::emplace<unsigned long &, lldb_private::Thread &>' requested here
>     m_plans_list.emplace(tid, thread);
>                  ^
> /__w/1/s/llvm-project/lldb/include/lldb/Target/ThreadPlanStack.h:113:32: note: copy constructor of 'ThreadPlanStack' is implicitly deleted because field 'm_stack_mutex' has a deleted copy constructor
>   mutable std::recursive_mutex m_stack_mutex;
>                                ^
> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/mutex:170:5: note: 'recursive_mutex' has been explicitly marked deleted here
>     recursive_mutex(const recursive_mutex&) = delete;
>     ^
> 1 error generated.
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev



More information about the llvm-dev mailing list