Lines Matching refs:rep

273 static ReportStack *ChooseSummaryStack(const ReportDesc *rep) {  in ChooseSummaryStack()  argument
274 if (rep->mops.Size()) in ChooseSummaryStack()
275 return rep->mops[0]->stack; in ChooseSummaryStack()
276 if (rep->stacks.Size()) in ChooseSummaryStack()
277 return rep->stacks[0]; in ChooseSummaryStack()
278 if (rep->mutexes.Size()) in ChooseSummaryStack()
279 return rep->mutexes[0]->stack; in ChooseSummaryStack()
280 if (rep->threads.Size()) in ChooseSummaryStack()
281 return rep->threads[0]->stack; in ChooseSummaryStack()
306 void PrintReport(const ReportDesc *rep) { in PrintReport() argument
309 const char *rep_typ_str = ReportTypeString(rep->typ, rep->tag); in PrintReport()
315 if (rep->typ == ReportTypeDeadlock) { in PrintReport()
318 for (uptr i = 0; i < rep->mutexes.Size(); i++) in PrintReport()
319 PrintMutexShortWithAddress(rep->mutexes[i], " => "); in PrintReport()
320 PrintMutexShort(rep->mutexes[0], "\n\n"); in PrintReport()
321 CHECK_GT(rep->mutexes.Size(), 0U); in PrintReport()
322 CHECK_EQ(rep->mutexes.Size() * (flags()->second_deadlock_stack ? 2 : 1), in PrintReport()
323 rep->stacks.Size()); in PrintReport()
324 for (uptr i = 0; i < rep->mutexes.Size(); i++) { in PrintReport()
326 PrintMutexShort(rep->mutexes[(i + 1) % rep->mutexes.Size()], in PrintReport()
328 PrintMutexShort(rep->mutexes[i], " in "); in PrintReport()
330 Printf("%s:\n", thread_name(thrbuf, rep->unique_tids[i])); in PrintReport()
333 PrintStack(rep->stacks[2*i]); in PrintReport()
335 PrintMutexShort(rep->mutexes[i], in PrintReport()
337 PrintStack(rep->stacks[2*i+1]); in PrintReport()
339 PrintStack(rep->stacks[i]); in PrintReport()
346 for (uptr i = 0; i < rep->stacks.Size(); i++) { in PrintReport()
349 PrintStack(rep->stacks[i]); in PrintReport()
353 for (uptr i = 0; i < rep->mops.Size(); i++) in PrintReport()
354 PrintMop(rep->mops[i], i == 0); in PrintReport()
356 if (rep->sleep) in PrintReport()
357 PrintSleep(rep->sleep); in PrintReport()
359 for (uptr i = 0; i < rep->locs.Size(); i++) in PrintReport()
360 PrintLocation(rep->locs[i]); in PrintReport()
362 if (rep->typ != ReportTypeDeadlock) { in PrintReport()
363 for (uptr i = 0; i < rep->mutexes.Size(); i++) in PrintReport()
364 PrintMutex(rep->mutexes[i]); in PrintReport()
367 for (uptr i = 0; i < rep->threads.Size(); i++) in PrintReport()
368 PrintThread(rep->threads[i]); in PrintReport()
370 if (rep->typ == ReportTypeThreadLeak && rep->count > 1) in PrintReport()
371 Printf(" And %d more similar thread leaks.\n\n", rep->count - 1); in PrintReport()
373 if (ReportStack *stack = ChooseSummaryStack(rep)) { in PrintReport()
450 void PrintReport(const ReportDesc *rep) { in PrintReport() argument
452 if (rep->typ == ReportTypeRace) { in PrintReport()
454 for (uptr i = 0; i < rep->mops.Size(); i++) in PrintReport()
455 PrintMop(rep->mops[i], i == 0); in PrintReport()
456 for (uptr i = 0; i < rep->locs.Size(); i++) in PrintReport()
457 PrintLocation(rep->locs[i]); in PrintReport()
458 for (uptr i = 0; i < rep->threads.Size(); i++) in PrintReport()
459 PrintThread(rep->threads[i]); in PrintReport()
460 } else if (rep->typ == ReportTypeDeadlock) { in PrintReport()
462 for (uptr i = 0; i < rep->mutexes.Size(); i++) { in PrintReport()
464 rep->mutexes[i]->id, in PrintReport()
465 rep->mutexes[(i + 1) % rep->mutexes.Size()]->id); in PrintReport()
466 PrintStack(rep->stacks[2*i]); in PrintReport()
469 rep->mutexes[(i + 1) % rep->mutexes.Size()]->id); in PrintReport()
470 PrintStack(rep->stacks[2*i + 1]); in PrintReport()