[llvm-commits] [compiler-rt] r170206 - /compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc
Kostya Serebryany
kcc at google.com
Fri Dec 14 06:20:29 PST 2012
Author: kcc
Date: Fri Dec 14 08:20:29 2012
New Revision: 170206
URL: http://llvm.org/viewvc/llvm-project?rev=170206&view=rev
Log:
[sanitizer] add AllocatorLeakTest
Modified:
compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc
Modified: compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc Fri Dec 14 08:20:29 2012
@@ -17,6 +17,7 @@
#include "gtest/gtest.h"
#include <stdlib.h>
+#include <pthread.h>
#include <algorithm>
#include <vector>
@@ -430,6 +431,36 @@
SizeClassAllocatorLocalCache<Allocator32Compact> >();
}
+#if SANITIZER_WORDSIZE == 64
+typedef SizeClassAllocatorLocalCache<Allocator64> AllocatorCache;
+static THREADLOCAL AllocatorCache static_allocator_cache;
+
+void *AllocatorLeakTestWorker(void *arg) {
+ typedef AllocatorCache::Allocator Allocator;
+ Allocator *a = (Allocator*)(arg);
+ static_allocator_cache.Allocate(a, 10);
+ static_allocator_cache.Drain(a);
+ return 0;
+}
+
+TEST(SanitizerCommon, AllocatorLeakTest) {
+ typedef typename AllocatorCache::Allocator Allocator;
+ Allocator a;
+ a.Init();
+ uptr total_used_memory = 0;
+ for (int i = 0; i < 100; i++) {
+ pthread_t t;
+ EXPECT_EQ(0, pthread_create(&t, 0, AllocatorLeakTestWorker, &a));
+ EXPECT_EQ(0, pthread_join(t, 0));
+ if (i == 0)
+ total_used_memory = a.TotalMemoryUsed();
+ EXPECT_EQ(a.TotalMemoryUsed(), total_used_memory);
+ }
+
+ a.TestOnlyUnmap();
+}
+#endif
+
TEST(Allocator, Basic) {
char *p = (char*)InternalAlloc(10);
EXPECT_NE(p, (char*)0);
More information about the llvm-commits
mailing list