forked from OSchip/llvm-project
[libFuzzer] Disable MSan interceptors in SIGINT handler.
Summary: Avoids an MSan false positive if the SIGINT comes while the user callback is running. The false positive happens when the interrupt handler calls opendir() to remove some temporary files, which is intercepted by MSan. Fixes https://github.com/google/oss-fuzz/issues/2332. Reviewers: kcc Reviewed By: kcc Subscribers: llvm-commits, Dor1s, metzman Tags: #llvm Differential Revision: https://reviews.llvm.org/D61163 llvm-svn: 359254
This commit is contained in:
parent
df5d2b3846
commit
1b76063a5e
|
@ -266,6 +266,7 @@ void Fuzzer::MaybeExitGracefully() {
|
|||
void Fuzzer::InterruptCallback() {
|
||||
Printf("==%lu== libFuzzer: run interrupted; exiting\n", GetPid());
|
||||
PrintFinalStats();
|
||||
ScopedDisableMsanInterceptorChecks S; // RmDirRecursive may call opendir().
|
||||
RmDirRecursive(TempPath(".dir"));
|
||||
// Stop right now, don't perform any at-exit actions.
|
||||
_Exit(Options.InterruptExitCode);
|
||||
|
@ -681,7 +682,7 @@ void Fuzzer::MutateAndTestOne() {
|
|||
Size <= CurrentMaxMutationLen)
|
||||
NewSize = MD.MutateWithMask(CurrentUnitData, Size, Size,
|
||||
II.DataFlowTraceForFocusFunction);
|
||||
|
||||
|
||||
// If MutateWithMask either failed or wasn't called, call default Mutate.
|
||||
if (!NewSize)
|
||||
NewSize = MD.Mutate(CurrentUnitData, Size, CurrentMaxMutationLen);
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
# FIXME: Disabled on Windows for now because of reliance on posix only features
|
||||
# (eg: export, "&", pkill).
|
||||
UNSUPPORTED: darwin, windows
|
||||
|
||||
# Check that libFuzzer exits gracefully under SIGINT with MSan.
|
||||
RUN: rm -rf %t
|
||||
RUN: mkdir -p %t
|
||||
RUN: %msan_compiler %S/SleepOneSecondTest.cpp -o %t/LFSIGINT
|
||||
|
||||
RUN: %run %t/LFSIGINT 2> %t/log & export PID=$!
|
||||
RUN: sleep 2
|
||||
RUN: kill -SIGINT $PID
|
||||
RUN: sleep 3
|
||||
RUN: cat %t/log | FileCheck %s
|
||||
|
||||
CHECK: libFuzzer: run interrupted; exiting
|
||||
CHECK-NOT: WARNING: MemorySanitizer
|
Loading…
Reference in New Issue