[PATCH] D95183: [LSan] Introduce a callback mechanism to allow adding data reachable from ThreadContexts to the frontier.
Vitaly Buka via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 21 20:54:00 PST 2021
vitalybuka added inline comments.
================
Comment at: compiler-rt/lib/lsan/lsan_common.cpp:525
+ GetThreadRegistryLocked()->RunCallbackForEachThreadLocked(
+ ForEachRegisteredThreadContextCb, frontier);
+}
----------------
to avoid frontier access from asan
could you please just:
```
InternalMmapVector<uptr> ptrs;
GetThreadRegistryLocked()->RunCallbackForEachThreadLocked(
ForEachRegisteredThreadContextCb, &ptrs);
for (: ptr) {
// process ptr here.
}
```
another option is nested callback but it seems unnecessary
================
Comment at: compiler-rt/lib/lsan/lsan_common.cpp:540
ProcessThreads(suspended_threads, frontier);
+ ProcessThreadRegistry(frontier);
ProcessRootRegions(frontier);
----------------
I would prefer if we handle this in ProcessThreads(suspended_threads, frontier) for suspended_threads
But I guess we don't know if just created threads are in suspended_threads.
Still this is very Thread related
so maybe call GetThreadRegistryLocked()->RunCallbackForEachThreadLocked(
from the ProcessThreads() with commend that GetThreadRegistryLocked may contains threads
================
Comment at: compiler-rt/lib/lsan/lsan_common.h:53
class FlagParser;
class ThreadRegistry;
struct DTLS;
----------------
forward declaration instead of the new include?
================
Comment at: compiler-rt/lib/lsan/lsan_common.h:146
void ForEachExtraStackRangeCb(uptr begin, uptr end, void* arg);
+void ForEachRegisteredThreadContextCb(ThreadContextBase *tctx, void *arg);
// Run stoptheworld while holding any platform-specific locks, as well as the
----------------
Maybe ForEachRegisteredThreadContextCb -> GetAdditionalThreadContextPtrs to show what is expected from this CB
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95183/new/
https://reviews.llvm.org/D95183
More information about the llvm-commits
mailing list