Lines Matching refs:rep
267 static ReportStack *ChooseSummaryStack(const ReportDesc *rep) { in ChooseSummaryStack() argument
268 if (rep->mops.Size()) in ChooseSummaryStack()
269 return rep->mops[0]->stack; in ChooseSummaryStack()
270 if (rep->stacks.Size()) in ChooseSummaryStack()
271 return rep->stacks[0]; in ChooseSummaryStack()
272 if (rep->mutexes.Size()) in ChooseSummaryStack()
273 return rep->mutexes[0]->stack; in ChooseSummaryStack()
274 if (rep->threads.Size()) in ChooseSummaryStack()
275 return rep->threads[0]->stack; in ChooseSummaryStack()
300 void PrintReport(const ReportDesc *rep) { in PrintReport() argument
303 const char *rep_typ_str = ReportTypeString(rep->typ, rep->tag); in PrintReport()
309 if (rep->typ == ReportTypeErrnoInSignal) in PrintReport()
310 Printf(" Signal %u handler invoked at:\n", rep->signum); in PrintReport()
312 if (rep->typ == ReportTypeDeadlock) { in PrintReport()
315 for (uptr i = 0; i < rep->mutexes.Size(); i++) in PrintReport()
316 PrintMutexShortWithAddress(rep->mutexes[i], " => "); in PrintReport()
317 PrintMutexShort(rep->mutexes[0], "\n\n"); in PrintReport()
318 CHECK_GT(rep->mutexes.Size(), 0U); in PrintReport()
319 CHECK_EQ(rep->mutexes.Size() * (flags()->second_deadlock_stack ? 2 : 1), in PrintReport()
320 rep->stacks.Size()); in PrintReport()
321 for (uptr i = 0; i < rep->mutexes.Size(); i++) { in PrintReport()
323 PrintMutexShort(rep->mutexes[(i + 1) % rep->mutexes.Size()], in PrintReport()
325 PrintMutexShort(rep->mutexes[i], " in "); in PrintReport()
327 Printf("%s:\n", thread_name(thrbuf, rep->unique_tids[i])); in PrintReport()
330 PrintStack(rep->stacks[2*i]); in PrintReport()
332 PrintMutexShort(rep->mutexes[i], in PrintReport()
334 PrintStack(rep->stacks[2*i+1]); in PrintReport()
336 PrintStack(rep->stacks[i]); in PrintReport()
343 for (uptr i = 0; i < rep->stacks.Size(); i++) { in PrintReport()
346 PrintStack(rep->stacks[i]); in PrintReport()
350 for (uptr i = 0; i < rep->mops.Size(); i++) in PrintReport()
351 PrintMop(rep->mops[i], i == 0); in PrintReport()
353 if (rep->sleep) in PrintReport()
354 PrintSleep(rep->sleep); in PrintReport()
356 for (uptr i = 0; i < rep->locs.Size(); i++) in PrintReport()
357 PrintLocation(rep->locs[i]); in PrintReport()
359 if (rep->typ != ReportTypeDeadlock) { in PrintReport()
360 for (uptr i = 0; i < rep->mutexes.Size(); i++) in PrintReport()
361 PrintMutex(rep->mutexes[i]); in PrintReport()
364 for (uptr i = 0; i < rep->threads.Size(); i++) in PrintReport()
365 PrintThread(rep->threads[i]); in PrintReport()
367 if (rep->typ == ReportTypeThreadLeak && rep->count > 1) in PrintReport()
368 Printf(" And %d more similar thread leaks.\n\n", rep->count - 1); in PrintReport()
370 if (ReportStack *stack = ChooseSummaryStack(rep)) { in PrintReport()
447 void PrintReport(const ReportDesc *rep) { in PrintReport() argument
449 if (rep->typ == ReportTypeRace) { in PrintReport()
451 for (uptr i = 0; i < rep->mops.Size(); i++) in PrintReport()
452 PrintMop(rep->mops[i], i == 0); in PrintReport()
453 for (uptr i = 0; i < rep->locs.Size(); i++) in PrintReport()
454 PrintLocation(rep->locs[i]); in PrintReport()
455 for (uptr i = 0; i < rep->threads.Size(); i++) in PrintReport()
456 PrintThread(rep->threads[i]); in PrintReport()
457 } else if (rep->typ == ReportTypeDeadlock) { in PrintReport()
459 for (uptr i = 0; i < rep->mutexes.Size(); i++) { in PrintReport()
461 rep->mutexes[i]->id, in PrintReport()
462 rep->mutexes[(i + 1) % rep->mutexes.Size()]->id); in PrintReport()
463 PrintStack(rep->stacks[2*i]); in PrintReport()
466 rep->mutexes[(i + 1) % rep->mutexes.Size()]->id); in PrintReport()
467 PrintStack(rep->stacks[2*i + 1]); in PrintReport()