[compiler-rt] [rtsan] Re-enable rtsan tests (PR #98219)

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 9 14:14:54 PDT 2024


vitalybuka wrote:

> We also have the failure on fuchsia and windows as outlined here:
> 
> [#92460 (comment)](https://github.com/llvm/llvm-project/pull/92460#issuecomment-2218652616)
> 
> Fuchsia we can "fix" I believe via this patch that disables the problematic interceptors for now:
> 
> ```
> diff --git a/compiler-rt/lib/rtsan/rtsan_interceptors.cpp b/compiler-rt/lib/rtsan/rtsan_interceptors.cpp
> index 3a65f9d3f779..ad9a97bdae7c 100644
> --- a/compiler-rt/lib/rtsan/rtsan_interceptors.cpp
> +++ b/compiler-rt/lib/rtsan/rtsan_interceptors.cpp
> @@ -42,6 +42,8 @@ void ExpectNotRealtime(const char *intercepted_function_name) {
>  
>  // Filesystem
>  
> +#if !SANITIZER_FUCHSIA
> +
>  INTERCEPTOR(int, open, const char *path, int oflag, ...) {
>    // TODO Establish whether we should intercept here if the flag contains
>    // O_NONBLOCK
> @@ -70,6 +72,8 @@ INTERCEPTOR(int, openat, int fd, const char *path, int oflag, ...) {
>    return result;
>  }
>  
> +#endif //!SANITIZER_FUCHSIA
> +
>  INTERCEPTOR(int, creat, const char *path, mode_t mode) {
>    // TODO Establish whether we should intercept here if the flag contains
>    // O_NONBLOCK
> @@ -359,8 +363,11 @@ void __rtsan::InitializeInterceptors() {
>    INTERCEPT_FUNCTION(pvalloc);
>  #endif
>  
> +#ifndef SANITIZER_FUCHSIA
>    INTERCEPT_FUNCTION(open);
>    INTERCEPT_FUNCTION(openat);
> +#endif //SANITIZER_FUCHSIA
> +
>    INTERCEPT_FUNCTION(close);
>    INTERCEPT_FUNCTION(fopen);
>    INTERCEPT_FUNCTION(fread);
> diff --git a/compiler-rt/lib/rtsan/tests/rtsan_test_interceptors.cpp b/compiler-rt/lib/rtsan/tests/rtsan_test_interceptors.cpp
> index f5b016089087..e250df41b53a 100644
> --- a/compiler-rt/lib/rtsan/tests/rtsan_test_interceptors.cpp
> +++ b/compiler-rt/lib/rtsan/tests/rtsan_test_interceptors.cpp
> @@ -172,6 +172,7 @@ TEST(TestRtsanInterceptors, NanosleepDiesWhenRealtime) {
>      Filesystem
>  */
>  
> +#if !SANITIZER_FUCHSIA
>  TEST_F(RtsanFileTest, OpenDiesWhenRealtime) {
>    auto func = [this]() { open(GetTemporaryFilePath(), O_RDONLY); };
>    ExpectRealtimeDeath(func, "open");
> @@ -197,6 +198,7 @@ TEST_F(RtsanFileTest, OpenCreatesFileWithProperMode) {
>    // Mask st_mode to get permission bits only
>    ASSERT_THAT(st.st_mode & 0777, Eq(mode));
>  }
> +#endif // !SANITIZER_FUCHSIA
>  
>  TEST_F(RtsanFileTest, CreatDiesWhenRealtime) {
>    auto func = [this]() { creat(GetTemporaryFilePath(), S_IWOTH | S_IROTH); };
> ```
> 
> Windows we can just disable the entire sanitizer. the guts rely on pthread, so there is no chance of it working at this point, possibly in the future

Oh, as I remember fuchia does not have interceptors at all

https://github.com/llvm/llvm-project/pull/98219


More information about the llvm-commits mailing list