CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
71 lines
2.3 KiB
C++
71 lines
2.3 KiB
C++
//===-- memprof_descriptions.cpp -------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file is a part of MemProfiler, a memory profiler.
|
|
//
|
|
// MemProf functions for getting information about an address and/or printing
|
|
// it.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "memprof_descriptions.h"
|
|
#include "memprof_mapping.h"
|
|
#include "memprof_stack.h"
|
|
#include "sanitizer_common/sanitizer_stackdepot.h"
|
|
|
|
namespace __memprof {
|
|
|
|
MemprofThreadIdAndName::MemprofThreadIdAndName(MemprofThreadContext *t) {
|
|
Init(t->tid, t->name);
|
|
}
|
|
|
|
MemprofThreadIdAndName::MemprofThreadIdAndName(u32 tid) {
|
|
if (tid == kInvalidTid) {
|
|
Init(tid, "");
|
|
} else {
|
|
memprofThreadRegistry().CheckLocked();
|
|
MemprofThreadContext *t = GetThreadContextByTidLocked(tid);
|
|
Init(tid, t->name);
|
|
}
|
|
}
|
|
|
|
void MemprofThreadIdAndName::Init(u32 tid, const char *tname) {
|
|
int len = internal_snprintf(name, sizeof(name), "T%d", tid);
|
|
CHECK(((unsigned int)len) < sizeof(name));
|
|
if (tname[0] != '\0')
|
|
internal_snprintf(&name[len], sizeof(name) - len, " (%s)", tname);
|
|
}
|
|
|
|
void DescribeThread(MemprofThreadContext *context) {
|
|
CHECK(context);
|
|
memprofThreadRegistry().CheckLocked();
|
|
// No need to announce the main thread.
|
|
if (context->tid == kMainTid || context->announced) {
|
|
return;
|
|
}
|
|
context->announced = true;
|
|
InternalScopedString str;
|
|
str.AppendF("Thread %s", MemprofThreadIdAndName(context).c_str());
|
|
if (context->parent_tid == kInvalidTid) {
|
|
str.Append(" created by unknown thread\n");
|
|
Printf("%s", str.data());
|
|
return;
|
|
}
|
|
str.AppendF(" created by %s here:\n",
|
|
MemprofThreadIdAndName(context->parent_tid).c_str());
|
|
Printf("%s", str.data());
|
|
StackDepotGet(context->stack_id).Print();
|
|
// Recursively described parent thread if needed.
|
|
if (flags()->print_full_thread_history) {
|
|
MemprofThreadContext *parent_context =
|
|
GetThreadContextByTidLocked(context->parent_tid);
|
|
DescribeThread(parent_context);
|
|
}
|
|
}
|
|
|
|
} // namespace __memprof
|