lkml.org 
[lkml]   [2007]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC][PATCH] detect & print stack overruns at oops time
On Fri, 31 Aug 2007 00:28:58 -0500 Eric Sandeen wrote:

> Index: linux-2.6.22-rc4/arch/i386/mm/fault.c
> ===================================================================
> --- linux-2.6.22-rc4.orig/arch/i386/mm/fault.c
> +++ linux-2.6.22-rc4/arch/i386/mm/fault.c
> @@ -543,6 +545,27 @@ no_context:
> printk(KERN_ALERT "BUG: unable to handle kernel paging"
> " request");
> printk(" at virtual address %08lx\n",address);
> +
> + overrun = (unsigned long)stackend - (unsigned long)(&regs->esp);
> + if (overrun > 0) {
> + printk(KERN_ALERT "Thread overrunning stack by %d "
> + "bytes\n", overrun);
> + } else {

Hi,

Is there something that tells us what <Thread> is doing all of this
bad juju?

> +#ifdef CONFIG_DEBUG_STACK_USAGE
> + int free;
> + unsigned long *n = stackend;
> + while (!*n)
> + n++;
> + free = (unsigned long)n - (unsigned long)stackend;
> + if (free)
> + printk(KERN_ALERT "Thread used within %d bytes"
> + " of stack end\n", free);
> +#endif
> + /* won't catch 100% - stack may have 0s here by chance */
> + if (*stackend) /* was init'd to 0 */
> + printk(KERN_ALERT "Thread overran the stack?\n");
> + }
> +
> printk(KERN_ALERT " printing eip:\n");
> printk("%08lx\n", regs->eip);
>

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-08-31 18:35    [W:0.056 / U:0.604 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site