ClickHouse/tests/ubsan_ignorelist.txt
Azat Khuzhin eb4c095077 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>
2024-04-27 09:51:59 +02:00

22 lines
886 B
Plaintext

# Note, this file is ignorelist file [1] not suppressions [2].
#
# [1]: https://clang.llvm.org/docs/SanitizerSpecialCaseList.html
# [2]: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#runtime-suppressions
#
# See also [3] for all UBSan checks.
#
# [3]: https://github.com/llvm-mirror/compiler-rt/blob/master/lib/ubsan/ubsan_checks.inc
#
# Caveats for generic entry "fun":
# - does not work for __attribute__((__always_inline__))
# - requires asterisk at the beginning *and* end for static functions
#
[undefined]
# Some value is outside the range of representable values of type 'long' on user-provided data inside boost::geometry - ignore.
src:*/Functions/pointInPolygon.cpp
src:*/contrib/boost/boost/geometry/*
# We don't want to receive sanitizer alerts from third-party libraries during fuzzing
src:*/contrib/contrib/protobuf/*
src:*/contrib/libprotobuf-mutator/*