Stackdepot doesn't work well with CONFIG_UNWINDER_GUESS=y.
The 'guess' unwinder generate awfully large and inaccurate stacktraces,
thus stackdepot can't deduplicate stacktraces because they all look like
unique. Eventually stackdepot reaches its capacity limit:

WARNING: CPU: 0 PID: 545 at lib/stackdepot.c:119 depot_save_stack+0x28e/0x550
Call Trace:
 ? kasan_kmalloc+0x144/0x160
 ? depot_save_stack+0x1f5/0x550
 ? do_raw_spin_unlock+0xda/0xf0
 ? preempt_count_sub+0x13/0xc0

<...90 lines...>

 ? do_raw_spin_unlock+0xda/0xf0

Add STACKDEPOT=n dependency to UNWINDER_GUESS to avoid the problem.

Signed-off-by: Andrey Ryabinin <aryabi...@virtuozzo.com>
Reported-by: kernel test robot <xiaolong...@intel.com>
Reported-by: Fengguang Wu <fengguang...@intel.com>
---
 arch/x86/Kconfig.debug | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
index 6293a8768a91..672441c008c7 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -400,6 +400,7 @@ config UNWINDER_FRAME_POINTER
 config UNWINDER_GUESS
        bool "Guess unwinder"
        depends on EXPERT
+       depends on !STACKDEPOT
        ---help---
          This option enables the "guess" unwinder for unwinding kernel stack
          traces.  It scans the stack and reports every kernel text address it
-- 
2.13.6

Reply via email to