-
Notifications
You must be signed in to change notification settings - Fork 14.2k
[rtsan] Fix issue where close test would lead to crash #144017
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-compiler-rt-sanitizer Author: Chris Apple (cjappl) Changesfixes: #138311 See that ticket for the steps that led to the crash. Changes in this PR
Full diff: https://github.com/llvm/llvm-project/pull/144017.diff 1 Files Affected:
diff --git a/compiler-rt/lib/rtsan/tests/rtsan_test_interceptors_posix.cpp b/compiler-rt/lib/rtsan/tests/rtsan_test_interceptors_posix.cpp
index 048da5858d665..aa4ad6477e6e1 100644
--- a/compiler-rt/lib/rtsan/tests/rtsan_test_interceptors_posix.cpp
+++ b/compiler-rt/lib/rtsan/tests/rtsan_test_interceptors_posix.cpp
@@ -449,12 +449,6 @@ TEST_F(RtsanFileTest, FcntlSetFdDiesWhenRealtime) {
close(fd);
}
-TEST(TestRtsanInterceptors, CloseDiesWhenRealtime) {
- auto Func = []() { close(0); };
- ExpectRealtimeDeath(Func, "close");
- ExpectNonRealtimeSurvival(Func);
-}
-
TEST(TestRtsanInterceptors, ChdirDiesWhenRealtime) {
auto Func = []() { chdir("."); };
ExpectRealtimeDeath(Func, "chdir");
@@ -606,8 +600,10 @@ class RtsanOpenedFileTest : public RtsanFileTest {
}
void TearDown() override {
- if (file != nullptr)
+ const bool is_open = fcntl(fd, F_GETFD) != -1;
+ if (is_open && file != nullptr)
fclose(file);
+
RtsanFileTest::TearDown();
}
@@ -620,6 +616,16 @@ class RtsanOpenedFileTest : public RtsanFileTest {
int fd = -1;
};
+TEST_F(RtsanOpenedFileTest, CloseDiesWhenRealtime) {
+ auto Func = [this]() { close(GetOpenFd()); };
+ ExpectRealtimeDeath(Func, "close");
+}
+
+TEST_F(RtsanOpenedFileTest, CloseSurvivesWhenNotRealtime) {
+ auto Func = [this]() { close(GetOpenFd()); };
+ ExpectNonRealtimeSurvival(Func);
+}
+
#if SANITIZER_INTERCEPT_FSEEK
TEST_F(RtsanOpenedFileTest, FgetposDieWhenRealtime) {
auto Func = [this]() {
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/199/builds/4089 Here is the relevant piece of the build log for the reference
|
fixes: #138311
See that ticket for the steps that led to the crash.
Changes in this PR