Skip to content

Commit 083a5cd

Browse files
committed
Revert "[sanitizer_common] AND signals in BlockSignals instead of deleting (llvm#113443)"
This reverts commit 25fd366. Reason: buildbot breakage (https://lab.llvm.org/buildbot/#/builders/186/builds/3642)
1 parent a8b4cb1 commit 083a5cd

File tree

3 files changed

+12
-101
lines changed

3 files changed

+12
-101
lines changed

Diff for: compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp

+12-24
Original file line numberDiff line numberDiff line change
@@ -164,45 +164,33 @@ void SetSigProcMask(__sanitizer_sigset_t *set, __sanitizer_sigset_t *oldset) {
164164
CHECK_EQ(0, internal_sigprocmask(SIG_SETMASK, set, oldset));
165165
}
166166

167-
// Deletes the specified signal from newset, if it is not present in oldset
168-
// Equivalently: newset[signum] = newset[signum] & oldset[signum]
169-
static void KeepUnblocked(__sanitizer_sigset_t &newset,
170-
__sanitizer_sigset_t &oldset, int signum) {
171-
if (!internal_sigismember(&oldset, signum))
172-
internal_sigdelset(&newset, signum);
173-
}
174-
175167
// Block asynchronous signals
176168
void BlockSignals(__sanitizer_sigset_t *oldset) {
177-
__sanitizer_sigset_t currentset;
178-
SetSigProcMask(NULL, &currentset);
179-
180-
__sanitizer_sigset_t newset;
181-
internal_sigfillset(&newset);
169+
__sanitizer_sigset_t set;
170+
internal_sigfillset(&set);
182171
# if SANITIZER_LINUX && !SANITIZER_ANDROID
183172
// Glibc uses SIGSETXID signal during setuid call. If this signal is blocked
184173
// on any thread, setuid call hangs.
185174
// See test/sanitizer_common/TestCases/Linux/setuid.c.
186-
KeepUnblocked(newset, currentset, 33);
175+
internal_sigdelset(&set, 33);
187176
# endif
188177
# if SANITIZER_LINUX
189178
// Seccomp-BPF-sandboxed processes rely on SIGSYS to handle trapped syscalls.
190179
// If this signal is blocked, such calls cannot be handled and the process may
191180
// hang.
192-
KeepUnblocked(newset, currentset, 31);
181+
internal_sigdelset(&set, 31);
193182

194183
// Don't block synchronous signals
195-
// but also don't unblock signals that the user had deliberately blocked.
196-
KeepUnblocked(newset, currentset, SIGSEGV);
197-
KeepUnblocked(newset, currentset, SIGBUS);
198-
KeepUnblocked(newset, currentset, SIGILL);
199-
KeepUnblocked(newset, currentset, SIGTRAP);
200-
KeepUnblocked(newset, currentset, SIGABRT);
201-
KeepUnblocked(newset, currentset, SIGFPE);
202-
KeepUnblocked(newset, currentset, SIGPIPE);
184+
internal_sigdelset(&set, SIGSEGV);
185+
internal_sigdelset(&set, SIGBUS);
186+
internal_sigdelset(&set, SIGILL);
187+
internal_sigdelset(&set, SIGTRAP);
188+
internal_sigdelset(&set, SIGABRT);
189+
internal_sigdelset(&set, SIGFPE);
190+
internal_sigdelset(&set, SIGPIPE);
203191
# endif
204192

205-
SetSigProcMask(&newset, oldset);
193+
SetSigProcMask(&set, oldset);
206194
}
207195

208196
ScopedBlockSignals::ScopedBlockSignals(__sanitizer_sigset_t *copy) {

Diff for: compiler-rt/lib/sanitizer_common/tests/CMakeLists.txt

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ set(SANITIZER_UNITTESTS
1515
sanitizer_array_ref_test.cpp
1616
sanitizer_atomic_test.cpp
1717
sanitizer_bitvector_test.cpp
18-
sanitizer_block_signals.cpp
1918
sanitizer_bvgraph_test.cpp
2019
sanitizer_chained_origin_depot_test.cpp
2120
sanitizer_common_test.cpp

Diff for: compiler-rt/lib/sanitizer_common/tests/sanitizer_block_signals.cpp

-76
This file was deleted.

0 commit comments

Comments
 (0)