JDevlieghere added a comment.

In https://reviews.llvm.org/D48393#1139327, @labath wrote:

> It's even more complicated than that, in case you really have reference 
> cycles, you can have multiple threads starting parsing from different points 
> in that cycle, and getting deadlocked waiting for the DIE_IS_BEING_PARSED 
> results from each other.
>
> The only sane algorithm I can come up right now is to make the list of parsed 
> dies local to each thread/parsing entity (e.g. via a "visited" list), and 
> only update the global map once the parsing has completed (successfully or 
> not). This can potentially duplicate some effort where one thread parses a 
> type only to find out that it has already been parsed, but hopefully that is 
> not going to be the common case. The alternative is some complicated resource 
> cycle detection scheme.


I gave this a shot in https://reviews.llvm.org/D52406 but I'm afraid it's too 
simple to be correct. Pavel, could you give it a look and let me know whether 
that was what you had in mind?


https://reviews.llvm.org/D48393



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to