mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-01 09:14:38 +03:00
add test for issue #1024
This commit is contained in:
parent
dc84ea7866
commit
878627072b
1 changed files with 31 additions and 3 deletions
|
@ -33,6 +33,7 @@ static void strdup_test(); // issue #445
|
||||||
static void heap_thread_free_huge();
|
static void heap_thread_free_huge();
|
||||||
static void test_std_string(); // issue #697
|
static void test_std_string(); // issue #697
|
||||||
static void test_thread_local(); // issue #944
|
static void test_thread_local(); // issue #944
|
||||||
|
static void test_thread_leak(); // issue #1104
|
||||||
// static void test_mixed0(); // issue #942
|
// static void test_mixed0(); // issue #942
|
||||||
static void test_mixed1(); // issue #942
|
static void test_mixed1(); // issue #942
|
||||||
static void test_stl_allocators();
|
static void test_stl_allocators();
|
||||||
|
@ -45,11 +46,12 @@ static void test_dep() { };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
mi_stats_reset(); // ignore earlier allocations
|
//mi_stats_reset(); // ignore earlier allocations
|
||||||
//various_tests();
|
//various_tests();
|
||||||
//test_mixed1();
|
//test_mixed1();
|
||||||
|
|
||||||
test_dep();
|
// test_dep();
|
||||||
|
test_thread_leak();
|
||||||
|
|
||||||
//test_std_string();
|
//test_std_string();
|
||||||
//test_thread_local();
|
//test_thread_local();
|
||||||
|
@ -68,7 +70,7 @@ int main() {
|
||||||
test_mt_shutdown();
|
test_mt_shutdown();
|
||||||
*/
|
*/
|
||||||
//fail_aslr();
|
//fail_aslr();
|
||||||
mi_stats_print(NULL);
|
//mi_stats_print(NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,6 +380,32 @@ static void heap_thread_free_huge() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::atomic<long> gsum;
|
||||||
|
|
||||||
|
static void local_alloc() {
|
||||||
|
long sum = 0;
|
||||||
|
for(int i = 0; i < 1000000; i++) {
|
||||||
|
const int n = 1 + std::rand() % 1000;
|
||||||
|
uint8_t* p = (uint8_t*)calloc(n, 1);
|
||||||
|
p[0] = 1;
|
||||||
|
sum += p[std::rand() % n];
|
||||||
|
if ((std::rand() % 100) > 24) {
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gsum += sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_thread_leak() {
|
||||||
|
std::vector<std::thread> threads;
|
||||||
|
for (int i=1; i<=100; ++i) {
|
||||||
|
threads.emplace_back(std::thread(&local_alloc));
|
||||||
|
}
|
||||||
|
for (auto& th : threads) {
|
||||||
|
th.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void test_mt_shutdown()
|
static void test_mt_shutdown()
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue