tsan: allow to suppress all reports

Fixes issue https://code.google.com/p/thread-sanitizer/issues/detail?id=45

llvm-svn: 207218
This commit is contained in:
Dmitry Vyukov 2014-04-25 10:09:18 +00:00
parent 9ba7762d7f
commit edae43b0a9
4 changed files with 12 additions and 4 deletions

View File

@ -629,7 +629,7 @@ void ForkChildAfter(ThreadState *thr, uptr pc);
void ReportRace(ThreadState *thr);
bool OutputReport(Context *ctx,
const ScopedReport &srep,
const ReportStack *suppress_stack1 = 0,
const ReportStack *suppress_stack1,
const ReportStack *suppress_stack2 = 0,
const ReportLocation *suppress_loc = 0);
bool IsFiredSuppression(Context *ctx,

View File

@ -59,7 +59,7 @@ static void ReportMutexMisuse(ThreadState *thr, uptr pc, ReportType typ,
trace.ObtainCurrent(thr, pc);
rep.AddStack(&trace);
rep.AddLocation(addr, 1);
OutputReport(ctx, rep);
OutputReport(ctx, rep, rep.GetReport()->stacks[0]);
}
void MutexCreate(ThreadState *thr, uptr pc, uptr addr,
@ -115,7 +115,7 @@ void MutexDestroy(ThreadState *thr, uptr pc, uptr addr) {
RestoreStack(last.tid(), last.epoch(), &trace, 0);
rep.AddStack(&trace);
rep.AddLocation(s->addr, 1);
OutputReport(ctx, rep);
OutputReport(ctx, rep, rep.GetReport()->stacks[0]);
}
thr->mset.Remove(s->GetId());
DestroyAndFree(s);

View File

@ -207,7 +207,7 @@ void ThreadFinalize(ThreadState *thr) {
ScopedReport rep(ReportTypeThreadLeak);
rep.AddThread(leaks[i].tctx);
rep.SetCount(leaks[i].count);
OutputReport(ctx, rep);
OutputReport(ctx, rep, rep.GetReport()->threads[0]->stack);
}
#endif
}

View File

@ -103,6 +103,14 @@ SuppressionType conv(ReportType typ) {
return SuppressionThread;
else if (typ == ReportTypeMutexDestroyLocked)
return SuppressionMutex;
else if (typ == ReportTypeMutexDoubleLock)
return SuppressionMutex;
else if (typ == ReportTypeMutexBadUnlock)
return SuppressionMutex;
else if (typ == ReportTypeMutexBadReadLock)
return SuppressionMutex;
else if (typ == ReportTypeMutexBadReadUnlock)
return SuppressionMutex;
else if (typ == ReportTypeSignalUnsafe)
return SuppressionSignal;
else if (typ == ReportTypeErrnoInSignal)