[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.

pl


More information about the lldb-dev mailing list