--- kstack/arch/i386/kernel/irq.c.~1~ Tue Jan 22 18:55:15 2002 +++ kstack/arch/i386/kernel/irq.c Mon Jul 29 23:36:21 2002 @@ -577,7 +577,16 @@ asmlinkage unsigned int do_IRQ(struct pt irq_desc_t *desc = irq_desc + irq; struct irqaction * action; unsigned int status; + long esp; + /* Debugging check for stack overflow: is there less than 1KB free? */ + __asm__ __volatile__("andl %%esp,%0" : "=r" (esp) : "0" (8191)); + if (unlikely(esp < (sizeof(struct task_struct) + 1024))) { + printk("Detected potential for stack overflows, stack left: %ld bytes\n", + esp - sizeof(struct task_struct)); + show_stack(NULL); + } + kstat.irqs[cpu][irq]++; spin_lock(&desc->lock); desc->handler->ack(irq);