[lldb-dev] Deadlock loading DWARF symbols

Pavel Labath via lldb-dev lldb-dev at lists.llvm.org
Mon Oct 5 05:29:25 PDT 2020

On 02/10/2020 23:13, Greg Clayton wrote:
> Yes this is bad, and GetDescription() is used as a convenience to print out the module path (which might be a .o file within a .a file) and optionally architecture of the module. It probably shouldn't be taking the module lock as the only member variables that that GetDescription accesses are:
> Module::m_arch
> Module::m_file
> Module::m_object_name
> I would almost vote to take out the mutex lock in GetDescription() as the arch, file and name don't change after the module has been created. I am going to CC a few extra folks for discussion.
> Anyone else have any objections to removing the mutex in GetDescription? Seems like this deadlock is easy to trigger if you have DWARF with errors or warnings inside of it.

That sounds reasonable to me. All of the above fields can change during 
the early stages of Module construction (while the ObjectFile is being 
parsed and such), but I would certainly hope they remain stable after 
that. And this early construction process should be single-threaded.

So, I am fine with saying any subsequent modification is a bug.


More information about the lldb-dev mailing list