[PATCH] [ASan] Add process basename to log name and error message to simplify analysis of sanitized systems logs.
Yury Gribov
tetra2005 at gmail.com
Tue Mar 3 13:05:32 PST 2015
REPOSITORY
rL LLVM
================
Comment at: lib/asan/asan_rtl.cc:314
@@ +313,3 @@
+
+ CacheBinaryName();
+
----------------
kcc wrote:
> do you really need to call this twice?
Yes, just like AsanCheckIncompatibleRT is called twice in two types of initializers that we have (__asan_init and AsanInitializer). But - I should move it to AsanInitializer::AsanInitializer().
================
Comment at: lib/sanitizer_common/sanitizer_common.cc:357
@@ +356,3 @@
+void CacheBinaryName() {
+ BlockingMutexLock l(&binary_name_cache_lock);
+ if (!binary_name_cache_initialized) {
----------------
kcc wrote:
> So why do you still need the Mutex if you are calling this only once at init time?
> Just add an asssertion that you've never initialized this before.
> Then you also don't need binary_name_cache_initialized, you can use binary_name_cache_str[0],
> which in turn could be function-scope because no one else needs it.
>
I thought about that but I decided to keep CacheBinaryName more generic so that it could be used in other contexts besides pure program startup. I could remove this if you think it's unnecessary.
================
Comment at: lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc:647
@@ -646,7 +646,3 @@
void PrepareForSandboxing() override {
-#if SANITIZER_LINUX && !SANITIZER_ANDROID
- BlockingMutexLock l(&mu_);
- // Cache /proc/self/exe on Linux.
CacheBinaryName();
}
----------------
kcc wrote:
> So, do we still need this here?
I don't know the whole sandboxing thing well enough so I kept it.
================
Comment at: test/asan/TestCases/verbose-log-path_test.cc:9
@@ +8,3 @@
+// FIXME: only FreeBSD and Linux have verbose log paths now.
+// XFAIL: win32
+// XFAIL: android
----------------
kcc wrote:
> maybe just put it inside test/asan/TestCases/Linux?
Well, it's absolutely trivial to support on other platforms so I thought it makes sense to simply xfail.
================
Comment at: test/asan/TestCases/verbose-log-path_test.cc:16
@@ +15,3 @@
+int main(int argc, char **argv) {
+ if (argc > 2) return 0;
+ char *x = (char*)malloc(10);
----------------
kcc wrote:
> this test could be smaller, e.g.
> int glob[10];
> int main(int argc, char **argv) {
> return glob[argc * 10];
> }
That's a blind copy-paste of similar log_path test without log_exe_name.
http://reviews.llvm.org/D7333
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
More information about the llvm-commits
mailing list