From 1fe58e2bc556fe961d99860769729d35d35bd002 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 7 Feb 2025 16:49:18 -0500 Subject: [PATCH] Add a thread dump section to the log. --- .../LogSectionCurrentThreadDump.java | 40 +++++++++++++++++++ .../logsubmit/SubmitDebugLogRepository.java | 1 + 2 files changed, 41 insertions(+) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionCurrentThreadDump.java diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionCurrentThreadDump.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionCurrentThreadDump.java new file mode 100644 index 0000000000..12350600d1 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionCurrentThreadDump.java @@ -0,0 +1,40 @@ +package org.thoughtcrime.securesms.logsubmit; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import org.thoughtcrime.securesms.dependencies.AppDependencies; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.Map; + +public class LogSectionCurrentThreadDump implements LogSection { + + @Override + public @NonNull String getTitle() { + return "LAST THREAD DUMP"; + } + + @Override + public @NonNull CharSequence getContent(@NonNull Context context) { + Map traces = Thread.getAllStackTraces(); + StringBuilder out = new StringBuilder(); + + for (Map.Entry entry : traces.entrySet()) { + Thread thread = entry.getKey(); + out.append("-- [").append(thread.getId()).append("] ") + .append(thread.getName()).append(" (").append(thread.getState()).append(")\n"); + + for (StackTraceElement element : entry.getValue()) { + out.append(element.toString()).append("\n"); + } + + out.append("\n"); + } + + return out; + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java index 45dfec0c39..f7df5a41cf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogRepository.java @@ -93,6 +93,7 @@ public class SubmitDebugLogRepository { add(new LogSectionTrace()); add(new LogSectionThreads()); add(new LogSectionThreadDump()); + add(new LogSectionCurrentThreadDump()); if (RemoteConfig.internalUser()) { add(new LogSectionSenderKey()); }