From b658ffa2f397bfe6730a4791470476b54b9d645c Mon Sep 17 00:00:00 2001 From: Mark Salyzyn Date: Wed, 12 Dec 2018 09:19:49 -0800 Subject: [PATCH] llkd: check stack for wait_on_page_bit_killable User process in S state blocked by deadlock in I/O system wait_on_page_bit is covered by regular D state tracking. Bug: 120776455 Test: long term stability on multiple devices Change-Id: Icdb99b8095f384cb440f0f2bdeba86c5991b9ef4 --- llkd/README.md | 5 +++-- llkd/include/llkd.h | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/llkd/README.md b/llkd/README.md index 224e184d2..7cc7e1f94 100644 --- a/llkd/README.md +++ b/llkd/README.md @@ -135,8 +135,9 @@ Only active on userdebug or eng builds. default 2 minutes samples of threads for D or Z. #### ro.llk.stack -default cma_alloc,__get_user_pages,bit_wait_io comma separated list of kernel -symbols. The string "*false*" is the equivalent to an *empty* list. +default cma_alloc,__get_user_pages,bit_wait_io,wait_on_page_bit_killable +comma separated list of kernel symbols. +The string "*false*" is the equivalent to an *empty* list. Look for kernel stack symbols that if ever persistently present can indicate a subsystem is locked up. Beware, check does not on purpose do forward scheduling ABA except by polling diff --git a/llkd/include/llkd.h b/llkd/include/llkd.h index 1efa32b74..7b7dbf90f 100644 --- a/llkd/include/llkd.h +++ b/llkd/include/llkd.h @@ -50,7 +50,8 @@ unsigned llkCheckMilliseconds(void); /* LLK_CHECK_MS_DEFAULT = actual timeout_ms / LLK_CHECKS_PER_TIMEOUT_DEFAULT */ #define LLK_CHECKS_PER_TIMEOUT_DEFAULT 5 #define LLK_CHECK_STACK_PROPERTY "ro.llk.stack" -#define LLK_CHECK_STACK_DEFAULT "cma_alloc,__get_user_pages,bit_wait_io" +#define LLK_CHECK_STACK_DEFAULT \ + "cma_alloc,__get_user_pages,bit_wait_io,wait_on_page_bit_killable" #define LLK_BLACKLIST_PROCESS_PROPERTY "ro.llk.blacklist.process" #define LLK_BLACKLIST_PROCESS_DEFAULT \ "0,1,2,init,[kthreadd],[khungtaskd],lmkd,llkd,watchdogd,[watchdogd],[watchdogd/0]"