Re: [PATCH 1/3] Increase lockdep limits: MAX_STACK_TRACE_ENTRIES

From: Catalin Marinas
Date: Thu Jul 09 2009 - 05:07:35 EST


On Wed, 2009-07-08 at 20:36 +0200, Peter Zijlstra wrote:
> As a side node, I see that each and every trace ends with a -1 entry:
>
> ...
> [ 1194.412158] [<c01f7990>] do_mount+0x3c0/0x7c0
> [ 1194.412158] [<c01f7e14>] sys_mount+0x84/0xb0
> [ 1194.412158] [<c01221b1>] syscall_call+0x7/0xb
> [ 1194.412158] [<ffffffff>] 0xffffffff
>
> Which seems to come from:
>
> void save_stack_trace(struct stack_trace *trace)
> {
> dump_trace(current, NULL, NULL, 0, &save_stack_ops, trace);
> if (trace->nr_entries < trace->max_entries)
> trace->entries[trace->nr_entries++] = ULONG_MAX;
> }
> EXPORT_SYMBOL_GPL(save_stack_trace);
>
> commit 006e84ee3a54e393ec6bef2a9bc891dc5bde2843 seems involved,..

The reason for this is that if there are no more traces to show, it
inserts -1. In this case, it cannot trace beyond the system call. If the
stack trace is truncated because of the maximum number of trace entries
it can show, you won't get a -1.

Before the commit above, it was always inserting -1 even if the trace
was longer than the maximum number of entries.

--
Catalin

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/