kopia lustrzana https://github.com/ryukoposting/Signal-Android
Exclude the HeapTaskDaemon from blocked thread warnings.
It's just how the thing works in a lot of cases, and it's polluting the logs with instances of nothing but several blocked HeapTaskDaemons.fork-5.53.8
rodzic
ba0befde20
commit
f0a4956cdd
|
@ -27,12 +27,15 @@ class DeadlockDetector(private val handler: Handler, private val pollingInterval
|
||||||
|
|
||||||
private fun poll() {
|
private fun poll() {
|
||||||
val threads: Map<Thread, Array<StackTraceElement>> = Thread.getAllStackTraces()
|
val threads: Map<Thread, Array<StackTraceElement>> = Thread.getAllStackTraces()
|
||||||
val blocked: Map<Thread, Array<StackTraceElement>> = threads.filter { entry ->
|
val blocked: Map<Thread, Array<StackTraceElement>> = threads
|
||||||
|
.filter { entry ->
|
||||||
val thread: Thread = entry.key
|
val thread: Thread = entry.key
|
||||||
val stack: Array<StackTraceElement> = entry.value
|
val stack: Array<StackTraceElement> = entry.value
|
||||||
|
|
||||||
thread.state == Thread.State.BLOCKED || (thread.state == Thread.State.WAITING && stack.any { it.methodName.startsWith("lock") })
|
thread.state == Thread.State.BLOCKED || (thread.state == Thread.State.WAITING && stack.any { it.methodName.startsWith("lock") })
|
||||||
}
|
}
|
||||||
|
.filter { entry -> !BLOCK_BLACKLIST.contains(entry.key.name) }
|
||||||
|
|
||||||
val blockedIds: Set<Long> = blocked.keys.map(Thread::getId).toSet()
|
val blockedIds: Set<Long> = blocked.keys.map(Thread::getId).toSet()
|
||||||
val stillBlocked: Set<Long> = blockedIds.intersect(previouslyBlocked)
|
val stillBlocked: Set<Long> = blockedIds.intersect(previouslyBlocked)
|
||||||
|
|
||||||
|
@ -93,6 +96,8 @@ class DeadlockDetector(private val handler: Handler, private val pollingInterval
|
||||||
|
|
||||||
private const val CONCERNING_QUEUE_THRESHOLD = 4
|
private const val CONCERNING_QUEUE_THRESHOLD = 4
|
||||||
|
|
||||||
|
private val BLOCK_BLACKLIST = setOf("HeapTaskDaemon")
|
||||||
|
|
||||||
private fun buildLogString(description: String, blocked: Map<Thread, Array<StackTraceElement>>): String {
|
private fun buildLogString(description: String, blocked: Map<Thread, Array<StackTraceElement>>): String {
|
||||||
val stringBuilder = StringBuilder()
|
val stringBuilder = StringBuilder()
|
||||||
stringBuilder.append(description).append("\n")
|
stringBuilder.append(description).append("\n")
|
||||||
|
|
Ładowanie…
Reference in New Issue