Re: v4.10: kernel stack frame pointer .. has bad value (null)

From: Josh Poimboeuf
Date: Wed Feb 22 2017 - 11:54:56 EST


On Tue, Feb 21, 2017 at 03:15:36PM -0800, H. Peter Anvin wrote:
> On 02/21/17 15:12, Josh Poimboeuf wrote:
> >>
> >> commit 24d86f59093b0bcb3756cdf47f2db10ff4e90dbb
> >> Author: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> >> Date: Thu Oct 27 08:10:58 2016 -0500
> >>
> >> x86/unwind: Ensure stack grows down
> >>
> >> Add a sanity check to ensure the stack only grows down, and print
> >> a
> >> warning if the check fails.
> >>
> >> Any ideas?
> >
> > Hi Pavel,
> >
> > I don't think I've seen this one. Any chance this came after resuming
> > from a hibernation or suspend?
> >
> >
> >> [ 1.047295] [drm] Memory usable by graphics device = 2048M
> >> [ 1.047356] [drm] Replacing VGA console driver
> >> [ 1.048029] Console: switching to colour dummy device 80x25
> >> [ 1.048348] WARNING: kernel stack frame pointer at f50cdf98 in
> >> swapper/2:0 has bad value (null)
> >> [ 1.048349] unwind stack type:0 next_sp: (null) mask:a graph_idx:0
> >> [ 1.048352] f50cdebc: 00000000f50cdec4 (0xf50cdec4)
> ^^^^^^^^^^^^^^^^
>
> FWIW, it would be really darned nice to not have all those zeroes in a
> 32-bit stack frame dump.

Yeah, I'll fix that.

> Is not a zero stack frame pointer value an end of stack token?

There's no end of stack "token" per se, though any frame pointer value
outside the bounds of the stack will terminate the stack trace (and that
still happened here).

The warning is because the stack trace didn't make it all the way to the
"end" location of the stack (right before the syscall pt_regs location).
The warning is part of the effort to ensure reliable stacks.

--
Josh