Messages in this thread |  | | Date | Fri, 25 May 2001 13:38:12 +1000 | From | Andrew Morton <> | Subject | Re: [CHECKER] large stack variables (>=1K) in 2.4.4 and 2.4.4-ac8 |
| |
Andreas Dilger wrote: > > Dawson Engler writes: > > Here are 37 errors where variables >= 1024 bytes are allocated on a > > function's stack. > > First of all, thanks very much for the work you are doing. It really > is useful, and a good way to catch those very rare error cases that > would not otherwise be fixed. > > I'm curious about this stack checker. Does it check for a single > stack allocation >= 1024 bytes, or does it also check for several > individual, smaller allocations which total >= 1024 bytes inside > a single function? That would be equally useful. > > On a side note, does anyone know if the kernel does checking if the > stack overflowed at any time?
There's a little bit of code in show_task() which calculates how close this task ever got to overrunning its kernel stack:
{ unsigned long * n = (unsigned long *) (p+1); while (!*n) n++; free = (unsigned long) n - (unsigned long)(p+1); } printk("%5lu %5d %6d ", free, p->pid, p->p_pptr->pid);
SYSRQ-T will trigger this.
However it doesn't work, because do_fork() doesn't zero out the stack pages when they're created.
- - 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/
|  |