[compiler-rt] [NFC][asan] Cleanup AsanThreadIdAndName ctor/init (PR #111923)
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 10 17:46:30 PDT 2024
https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/111923
>From 5e9272e50610634f1b0c42aaad47d0f90a8c9762 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Thu, 10 Oct 2024 16:38:23 -0700
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20change?=
=?UTF-8?q?s=20to=20main=20this=20commit=20is=20based=20on?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.4
[skip ci]
---
compiler-rt/lib/asan/asan_descriptions.cpp | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/compiler-rt/lib/asan/asan_descriptions.cpp b/compiler-rt/lib/asan/asan_descriptions.cpp
index 1c2f20a76343bb..674fe9c1e90be0 100644
--- a/compiler-rt/lib/asan/asan_descriptions.cpp
+++ b/compiler-rt/lib/asan/asan_descriptions.cpp
@@ -48,9 +48,20 @@ void DescribeThread(AsanThreadContext *context) {
return;
}
context->announced = true;
+
+ AsanThreadContext *parent_context =
+ context->parent_tid == kInvalidTid
+ ? nullptr
+ : GetThreadContextByTidLocked(context->parent_tid);
+
+ // `context->parent_tid` may point to reused slot. Check `unique_id` which
+ // is always smaller for the parent, always greater for a new user.
+ if (context->unique_id <= parent_context->unique_id)
+ parent_context = nullptr;
+
InternalScopedString str;
str.AppendF("Thread %s", AsanThreadIdAndName(context).c_str());
- if (context->parent_tid == kInvalidTid) {
+ if (!parent_context) {
str.Append(" created by unknown thread\n");
Printf("%s", str.data());
return;
@@ -60,11 +71,8 @@ void DescribeThread(AsanThreadContext *context) {
Printf("%s", str.data());
StackDepotGet(context->stack_id).Print();
// Recursively described parent thread if needed.
- if (flags()->print_full_thread_history) {
- AsanThreadContext *parent_context =
- GetThreadContextByTidLocked(context->parent_tid);
+ if (flags()->print_full_thread_history)
DescribeThread(parent_context);
- }
}
// Shadow descriptions
More information about the llvm-commits
mailing list