Messages in this thread | | | Date | Thu, 27 Feb 2003 10:50:56 -0800 | From | "Randy.Dunlap" <> | Subject | Re: doublefault debugging (was Re: Linux v2.5.62 --- spontaneous reboots) |
| |
On Thu, 20 Feb 2003 08:54:55 -0800 (PST) Linus Torvalds <torvalds@transmeta.com> wrote:
| On Thu, 20 Feb 2003, Martin J. Bligh wrote: | > | > There are patches in -mjb from Dave Hansen / Ben LaHaise to detect stack | > overflow included with the stuff for the 4K stacks patch (intended for | > scaling to large numbers of tasks). I've split them out attatched, should | > apply to mainline reasonably easily. | | Ok, the 4kB stack definitely won't work in real life, but that's because | we have some hopelessly bad stack users in the kernel. But the debugging | part would be good to try (in fact, it might be a good idea to keep the | 8kB stack, but with rather anal debugging. Just the "mcount" part should | do that). | | A sorted list of bad stack users (more than 256 bytes) in my default build | follows. Anybody can create their own with something like | | objdump -d linux/vmlinux | | grep 'sub.*$0x...,.*esp' | | awk '{ print $9,$1 }' | | sort > bigstack | | and a script to look up the addresses. | | That ide_unregister() thing uses up >2kB in just one call! And there are | several in the 1.5kB range too, with a long list of ~500 byte offenders. | | Yeah, and this assumes we don't have alloca() users or other dynamic | stack allocators (non-constant-size automatic arrays). I hope we don't | have that kind of crap anywhere..
I don't get a nice listing from this script like you did. Example of mine is below. Do I just have a tools issue?
Thanks, -- ~Randy
$0x424,%esp c01f6bc0: $0x490,%esp c0106010: $0x4ac,%esp c016aec3: $0x540,%esp c01061a6: $0x5ac,%esp c010533e: $0x798,%esp c02528b8: $0x924,%esp c02484fb: - 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/
| |