[Lldb-commits] [PATCH] D153648: [lldb] Remove broken shared cache duplicate class handling
Dave Lee via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Jun 23 13:02:54 PDT 2023
kastiglione added a comment.
In D153648#4444898 <https://reviews.llvm.org/D153648#4444898>, @jingham wrote:
> and that the one that won will indeed be in that list but will not be marked as a duplicate.
All of the duplicate classes are in the duplicate list, not a single class that won. For example, a duplicated class, say `ABCSomeController`, will be in the duplicate list 2 or more times. The result is that there's redundant hashing, since each of the duplicate names occurs 2 or more times. Which is maybe fine, or maybe causes a perf penalty. Another result is that `ObjCLanguageRuntime::m_hash_to_isa_map` (a `multimap`) ends up storing every duplicate, however the readers of `m_hash_to_isa_map` always take the first match found (see `ObjCLanguageRuntime::GetDescriptorIterator`). In other words, the redundant classes are never accessed, and the one lldb does return could differ from the class the objc runtime has picked. A "fix" to the surface level bugs identified here has the result of exposing a bunch of non-determinism.
My thought process was: "This is broken to the point that duplicate classes are currently being dropped altogether, and nobody has identified this as a problem. Maybe delete the code until we can figure out a proper fix."
I am fine with the "fix", but as you can see I am very skeptical in it being helpful.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153648/new/
https://reviews.llvm.org/D153648
More information about the lldb-commits
mailing list