Commit b0527554 by FritzFlorian

Fix: handle thread sanitizer logfile correctly.

parent a1256f23
Pipeline #1091 failed with stages
in 2 minutes 5 seconds
image: "ubuntu:latest"
image: "madduci/docker-linux-cpp:latest"
stages:
- build
......@@ -27,4 +27,4 @@ run_thread_sanitizer:
./ci_scripts/run_thread_sanitizer.sh
artifacts:
paths:
- "./cmake-build-release-thread-sanitizer/sanitizer.log.*"
- sanitizer.log.*
#!/usr/bin/env bash
mkdir cmake-build-release-thread-sanitizer
cd cmake-build-release
cd cmake-build-release-thread-sanitizer
cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DTHREAD_SANITIZER=ON
make
......@@ -10,7 +10,7 @@ TSAN_OPTIONS="log_path=sanitizer.log exitcode=1" ./bin/tests
STATUS_CODE=$?
# rename the output log...
mv sanitizer.log.* sanitizer.log
mv sanitizer.log.* ../sanitizer.log
touch sanitizer.log
exit $STATUS_CODE
......@@ -7,6 +7,8 @@ using namespace pls::internal::base;
using namespace std;
static bool visited;
static int local_value_1;
static vector<int> local_value_two;
TEST_CASE( "thread creation and joining", "[internal/base/thread.h]") {
visited = false;
......@@ -18,10 +20,13 @@ TEST_CASE( "thread creation and joining", "[internal/base/thread.h]") {
}
TEST_CASE( "thread state", "[internal/base/thread.h]") {
auto t1 = create_thread([]() { REQUIRE(*this_thread::state<int>() == 1); }, 1);
auto t2 = create_thread([]() { REQUIRE(*this_thread::state<vector<int>>() == vector<int>{1, 2}); }, vector<int>{1, 2});
auto t1 = create_thread([]() { local_value_1 = *this_thread::state<int>(); }, 1);
auto t2 = create_thread([]() { local_value_two = *this_thread::state<vector<int>>(); }, vector<int>{1, 2});
t1.start();
t2.start();
t1.join();
t2.join();
REQUIRE(local_value_1 == 1);
REQUIRE(local_value_two == vector<int>{1, 2});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment