[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