• J
    x86/stacktrace: Make zombie stack traces reliable · 6454b3bd
    Josh Poimboeuf 提交于
    Commit:
    
      1959a601 ("x86/dumpstack: Pin the target stack when dumping it")
    
    changed the behavior of stack traces for zombies.  Before that commit,
    /proc/<pid>/stack reported the last execution path of the zombie before
    it died:
    
      [<ffffffff8105b877>] do_exit+0x6f7/0xa80
      [<ffffffff8105bc79>] do_group_exit+0x39/0xa0
      [<ffffffff8105bcf0>] __wake_up_parent+0x0/0x30
      [<ffffffff8152dd09>] system_call_fastpath+0x16/0x1b
      [<00007fd128f9c4f9>] 0x7fd128f9c4f9
      [<ffffffffffffffff>] 0xffffffffffffffff
    
    After the commit, it just reports an empty stack trace.
    
    The new behavior is actually probably more correct.  If the stack
    refcount has gone down to zero, then the task has already gone through
    do_exit() and isn't going to run anymore.  The stack could be freed at
    any time and is basically gone, so reporting an empty stack makes sense.
    
    However, save_stack_trace_tsk_reliable() treats such a missing stack
    condition as an error.  That can cause livepatch transition stalls if
    there are any unreaped zombies.  Instead, just treat it as a reliable,
    empty stack.
    Reported-and-tested-by: NMiroslav Benes <mbenes@suse.cz>
    Signed-off-by: NJosh Poimboeuf <jpoimboe@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: live-patching@vger.kernel.org
    Fixes: af085d90 ("stacktrace/x86: add function for detecting reliable stack traces")
    Link: http://lkml.kernel.org/r/e4b09e630e99d0c1080528f0821fc9d9dbaeea82.1513631620.git.jpoimboe@redhat.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
    6454b3bd
stacktrace.c 5.4 KB