[PATCH] D114845: [llvm] [DebugInfo] DebuginfodCollection and DebuginfodServer for tracking local debuginfo.

Noah Shutty via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 25 18:03:16 PST 2022


noajshu marked an inline comment as done.
noajshu added inline comments.


================
Comment at: llvm/lib/Debuginfod/Debuginfod.cpp:228
+  std::error_code ec;
+  for (sys::fs::recursive_directory_iterator i(Twine(Path), ec), e; i != e;
+       i.increment(ec)) {
----------------
noajshu wrote:
> phosek wrote:
> > I expect this loop to be the performance bottleneck, so I think we should consider using a `ThreadPool` here as well to process files in parallel. That's the strategy used by elfutils' debuginfod as well.
> > 
> > This would likely require rethinking the API to allow sharing the thread pool between the file processing and request handling in D114846.
> Good idea!
> I've added this, but I find the behavior unstable when the concurrency is >1 and a large directory is scanned.
> I've searched around for the bug in my code and no luck. I'm wondering if it's possible some of the supporting libraries I'm using are not thread-safe or are leaking memory. But it's more likely I'm missing something obvious. Anyways, going to upload as it's WIP and maybe there is a better task queue architecture you could recommend.
> PS: the `TaskQueue` in LLVM is not appropriate as it is for serialized sequence of tasks.
The concurrency bug has been fixed.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D114845/new/

https://reviews.llvm.org/D114845



More information about the llvm-commits mailing list