Commit eb4c095
committed
Fix suppressions for rd_avg_calc()/rd_avg_rollover() (due to static qualifier)
The problem is that TSan still fails [1] is that ignorelist does not
work for static functions without asterisk:
// test.cpp
#include <thread>
bool flag = false;
// avoid mangling
extern "C" {
static void set_flag_impl()
{
flag = true;
}
void set_flag()
{
set_flag_impl();
}
void set_flag_if()
{
if (flag)
flag = false;
}
}
int main()
{
std::thread t1([]{ set_flag(); });
std::thread t2([]{ set_flag_if(); });
t1.join();
t2.join();
return 0;
}
// ignorelist
[thread]
fun:set_flag_impl
$ clang++ -g -fno-omit-frame-pointer -fsanitize=thread -fsanitize-ignorelist=ignorelist -o test test.cpp && ./test
SUMMARY: ThreadSanitizer: data race /tmp/test-tsan-ignorelist/test.cpp:19:9 in set_flag_if
$ sed -i 's/set_flag_impl/*set_flag_impl*/' ignorelist
$ clang++ -g -fno-omit-frame-pointer -fsanitize=thread -fsanitize-ignorelist=ignorelist -o test test.cpp && ./test
OK
But, note that ignorelist is tricky, and will not work for
functions with __always_inline__ attribute for example.
P.S. set_flag_impl also has brackets in the output (i.e.
set_flag_impl()), while ther eis brackets for rd_avg_calc on CI [1].
[1]: https://s3.amazonaws.com/clickhouse-test-reports/63039/84bebc534ba7cf6e9dbfc1d91e8350939a84f87c/integration_tests__tsan__[6_6]//home/ubuntu/actions-runner/_work/_temp/test/output_dir/integration_run_parallel4_0.log
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>1 parent 84bebc5 commit eb4c095
2 files changed
Lines changed: 11 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
6 | 10 | | |
7 | 11 | | |
8 | 12 | | |
9 | 13 | | |
10 | | - | |
11 | | - | |
| 14 | + | |
| 15 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
9 | 14 | | |
10 | 15 | | |
11 | 16 | | |
| |||
0 commit comments