Skip to content

Commit b86b56c

Browse files
committed
[tsan] one more test for deadlock detector
llvm-svn: 202476
1 parent 7416024 commit b86b56c

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

compiler-rt/test/tsan/deadlock_detector_stress_test.cc

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,17 @@ class LockTest {
389389
}
390390
}
391391

392+
void Test14() {
393+
if (test_number > 0 && test_number != 14) return;
394+
fprintf(stderr, "Starting Test14: create lots of locks in 4 threads\n");
395+
Init(10);
396+
// CHECK-RD: Starting Test14
397+
RunThreads(&LockTest::CreateAndDestroyLocksLoop,
398+
&LockTest::CreateAndDestroyLocksLoop,
399+
&LockTest::CreateAndDestroyLocksLoop,
400+
&LockTest::CreateAndDestroyLocksLoop);
401+
}
402+
392403
private:
393404
void Lock2(size_t l1, size_t l2) { L(l1); L(l2); U(l2); U(l1); }
394405
void Lock_0_1() { Lock2(0, 1); }
@@ -406,9 +417,17 @@ class LockTest {
406417
void Lock1_Loop_2() { Lock1_Loop(20, iter_count); }
407418

408419
void CreateAndDestroyManyLocks() {
409-
LockType create_many_locks_but_never_acquire[kDeadlockGraphSize];
410-
(void)create_many_locks_but_never_acquire;
420+
LockType *create_many_locks_but_never_acquire =
421+
new LockType[kDeadlockGraphSize];
411422
(void)create_many_locks_but_never_acquire;
423+
delete [] create_many_locks_but_never_acquire;
424+
}
425+
426+
void CreateAndDestroyLocksLoop() {
427+
for (size_t it = 0; it <= iter_count; it++) {
428+
LockType some_locks[10];
429+
(void)some_locks;
430+
}
412431
}
413432

414433
void CreateLockUnlockAndDestroyManyLocks() {
@@ -466,6 +485,7 @@ int main(int argc, char **argv) {
466485
LockTest().Test11();
467486
LockTest().Test12();
468487
LockTest().Test13();
488+
LockTest().Test14();
469489
fprintf(stderr, "ALL-DONE\n");
470490
// CHECK: ALL-DONE
471491
}

0 commit comments

Comments
 (0)