Fixed race conditions in thread tests; exposed by UBSan
llvm-svn: 178029
diff --git a/libcxx/test/testit b/libcxx/test/testit
index 945c700..1833812 100755
--- a/libcxx/test/testit
+++ b/libcxx/test/testit
@@ -88,6 +88,10 @@
if (ls *.pass.cpp &> /dev/null)
then
for FILE in $(ls *.pass.cpp); do
+ if [ "$VERBOSE" ]
+ then
+ echo "Running test: " $FILE
+ fi
if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE
then
if ./$TEST_EXE
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp
index 4db3a1b..9a7f8dc 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.algorithm/swap.pass.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
};
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/copy.fail.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/copy.fail.cpp
index 246488e..7373886 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/copy.fail.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/copy.fail.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp
index 7e35652..1a5f3208 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.assign/move.pass.cpp
@@ -32,14 +32,14 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
void operator()(int i, double j)
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
assert(i == 5);
assert(j == 5.5);
op_run = true;
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/copy.fail.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/copy.fail.cpp
index afba0f7..f66474c 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/copy.fail.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/copy.fail.cpp
@@ -32,14 +32,14 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
void operator()(int i, double j)
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
assert(i == 5);
assert(j == 5.5);
op_run = true;
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp
index 3d92b59..17268ab 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.constr/move.pass.cpp
@@ -32,14 +32,14 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
void operator()(int i, double j)
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
assert(i == 5);
assert(j == 5.5);
op_run = true;
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
index dfd8f57..e068c04 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.destr/dtor.pass.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
};
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp
index c1391cb..dbb98b5 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
};
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp
index d086fb6..6af4f3b 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/get_id.pass.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
};
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp
index 3b278da..32faef4 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
};
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp
index 1cae60c..9c90eb7 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/joinable.pass.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
};
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
index 8feded7..1aae922 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
};
diff --git a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp
index 46bccd6..820091e 100644
--- a/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp
+++ b/libcxx/test/thread/thread.threads/thread.thread.class/thread.thread.member/swap.pass.cpp
@@ -32,7 +32,7 @@
void operator()()
{
assert(alive_ == 1);
- assert(n_alive == 1);
+ assert(n_alive >= 1);
op_run = true;
}
};