On Mon, Jul 05, 2010 at 11:56:27AM +0100, Ralf Baechle wrote: > On Wed, Jun 30, 2010 at 10:57:41PM +0100, Matt Fleming wrote: > > > On Wed, 30 Jun 2010 15:50:06 +0100, Ralf Baechle <ralf@xxxxxxxxxxxxxx> wrote: > > > > > > There used to be some code for other architectures that zeros the stack > > > page and counts how much of that has been overwritten by the stack. That > > > was never ported to MIPS. > > > > > > Another helper to find functions that do excessive static allocations is > > > "make checkstack". > > > > Both SH and sparc use the mcount function (enabled with the -pg switch > > to gcc) to check the stack has not overflowed. The relevant code is in > > arch/{sh,sparc}/lib/mcount.S. This checks the stack pointer value on > > every function call. Yeah, it's heavy-weight, but an implementation for > > MIPS should be able to catch almost the exact point at which stack > > overflow occurs. > > Which often isn't so helpful. The alarm gets triggered on the last stack > pointer decrement but according to murphy the overflow has happened 10 > levels up in the callchain. Last decrement? The alarm should be triggered the next time the function in which the overflow occurs makes a function call. I don't see how you could go down a level of the callchain and not trigger the alarm if the overflow has happened?