reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
319 const char *rep_typ_str = ReportTypeString(rep->typ, rep->tag); 319 const char *rep_typ_str = ReportTypeString(rep->typ, rep->tag); 325 if (rep->typ == ReportTypeDeadlock) { 328 for (uptr i = 0; i < rep->mutexes.Size(); i++) 329 PrintMutexShortWithAddress(rep->mutexes[i], " => "); 330 PrintMutexShort(rep->mutexes[0], "\n\n"); 331 CHECK_GT(rep->mutexes.Size(), 0U); 332 CHECK_EQ(rep->mutexes.Size() * (flags()->second_deadlock_stack ? 2 : 1), 333 rep->stacks.Size()); 334 for (uptr i = 0; i < rep->mutexes.Size(); i++) { 336 PrintMutexShort(rep->mutexes[(i + 1) % rep->mutexes.Size()], 336 PrintMutexShort(rep->mutexes[(i + 1) % rep->mutexes.Size()], 338 PrintMutexShort(rep->mutexes[i], " in "); 340 Printf("%s:\n", thread_name(thrbuf, rep->unique_tids[i])); 343 PrintStack(rep->stacks[2*i]); 345 PrintMutexShort(rep->mutexes[i], 347 PrintStack(rep->stacks[2*i+1]); 349 PrintStack(rep->stacks[i]); 356 for (uptr i = 0; i < rep->stacks.Size(); i++) { 359 PrintStack(rep->stacks[i]); 363 for (uptr i = 0; i < rep->mops.Size(); i++) 364 PrintMop(rep->mops[i], i == 0); 366 if (rep->sleep) 367 PrintSleep(rep->sleep); 369 for (uptr i = 0; i < rep->locs.Size(); i++) 370 PrintLocation(rep->locs[i]); 372 if (rep->typ != ReportTypeDeadlock) { 373 for (uptr i = 0; i < rep->mutexes.Size(); i++) 374 PrintMutex(rep->mutexes[i]); 377 for (uptr i = 0; i < rep->threads.Size(); i++) 378 PrintThread(rep->threads[i]); 380 if (rep->typ == ReportTypeThreadLeak && rep->count > 1) 380 if (rep->typ == ReportTypeThreadLeak && rep->count > 1) 381 Printf(" And %d more similar thread leaks.\n\n", rep->count - 1); 383 if (ReportStack *stack = ChooseSummaryStack(rep)) {