summaryrefslogtreecommitdiff
path: root/lib/asan
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2015-11-04 21:03:12 +0000
committerJuergen Ributzka <juergen@apple.com>2015-11-04 21:03:12 +0000
commit766e7c6b61b0207ada838fd31ede7aa2b9bfffef (patch)
tree6c92d8360ab0b3ceb63d9288902280402fbd3dab /lib/asan
parent73a0848e3856b7033ed2372753ac658ed1ea360a (diff)
Revert "Reapply: [asan] On OS X, log reports to syslog and os_trace"
Looks like this commit is deadlocking the ASAN tests on the green dragon bot (http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA/). git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@252076 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/asan')
-rw-r--r--lib/asan/asan_report.cc40
-rw-r--r--lib/asan/tests/asan_test_main.cc3
2 files changed, 18 insertions, 25 deletions
diff --git a/lib/asan/asan_report.cc b/lib/asan/asan_report.cc
index 5c266b653..957ac14ea 100644
--- a/lib/asan/asan_report.cc
+++ b/lib/asan/asan_report.cc
@@ -31,7 +31,6 @@ static void (*error_report_callback)(const char*);
static char *error_message_buffer = nullptr;
static uptr error_message_buffer_pos = 0;
static uptr error_message_buffer_size = 0;
-static BlockingMutex error_message_buf_mutex(LINKER_INITIALIZED);
struct ReportData {
uptr pc;
@@ -47,21 +46,16 @@ static bool report_happened = false;
static ReportData report_data = {};
void AppendToErrorMessageBuffer(const char *buffer) {
- BlockingMutexLock l(&error_message_buf_mutex);
- if (!error_message_buffer) {
- error_message_buffer_size = 1 << 16;
- error_message_buffer =
- (char*)MmapOrDie(error_message_buffer_size, __func__);
- error_message_buffer_pos = 0;
+ if (error_message_buffer) {
+ uptr length = internal_strlen(buffer);
+ CHECK_GE(error_message_buffer_size, error_message_buffer_pos);
+ uptr remaining = error_message_buffer_size - error_message_buffer_pos;
+ internal_strncpy(error_message_buffer + error_message_buffer_pos,
+ buffer, remaining);
+ error_message_buffer[error_message_buffer_size - 1] = '\0';
+ // FIXME: reallocate the buffer instead of truncating the message.
+ error_message_buffer_pos += Min(remaining, length);
}
- uptr length = internal_strlen(buffer);
- CHECK_GE(error_message_buffer_size, error_message_buffer_pos);
- uptr remaining = error_message_buffer_size - error_message_buffer_pos;
- internal_strncpy(error_message_buffer + error_message_buffer_pos,
- buffer, remaining);
- error_message_buffer[error_message_buffer_size - 1] = '\0';
- // FIXME: reallocate the buffer instead of truncating the message.
- error_message_buffer_pos += Min(remaining, length);
}
// ---------------------- Decorator ------------------------------ {{{1
@@ -670,13 +664,8 @@ class ScopedInErrorReport {
// Print memory stats.
if (flags()->print_stats)
__asan_print_accumulated_stats();
- {
- BlockingMutexLock l(&error_message_buf_mutex);
- LogFullErrorReport(error_message_buffer);
-
- if (error_report_callback) {
- error_report_callback(error_message_buffer);
- }
+ if (error_report_callback) {
+ error_report_callback(error_message_buffer);
}
Report("ABORTING\n");
Die();
@@ -1072,8 +1061,13 @@ void __asan_report_error(uptr pc, uptr bp, uptr sp, uptr addr, int is_write,
}
void NOINLINE __asan_set_error_report_callback(void (*callback)(const char*)) {
- BlockingMutexLock l(&error_message_buf_mutex);
error_report_callback = callback;
+ if (callback) {
+ error_message_buffer_size = 1 << 16;
+ error_message_buffer =
+ (char*)MmapOrDie(error_message_buffer_size, __func__);
+ error_message_buffer_pos = 0;
+ }
}
void __asan_describe_address(uptr addr) {
diff --git a/lib/asan/tests/asan_test_main.cc b/lib/asan/tests/asan_test_main.cc
index cdaf801d9..5958cb8a0 100644
--- a/lib/asan/tests/asan_test_main.cc
+++ b/lib/asan/tests/asan_test_main.cc
@@ -19,8 +19,7 @@ extern "C" const char* __asan_default_options() {
#if SANITIZER_MAC
// On Darwin, we default to `abort_on_error=1`, which would make tests run
// much slower. Let's override this and run lit tests with 'abort_on_error=0'.
- // Also, make sure we do not overwhelm the syslog while testing.
- return "symbolize=false:abort_on_error=0:log_to_syslog=0";
+ return "symbolize=false:abort_on_error=0";
#else
return "symbolize=false";
#endif