Date: Tue, 20 Jun 2006 08:30:50 -0700 From: Tim Kientzle <kientzle@freebsd.org> To: "Andrew R. Reiter" <arr@watson.org> Cc: Yar Tikhiy <yar@comp.chem.msu.su>, current@freebsd.org Subject: Re: NULL pointer dereference panic Message-ID: <449814AA.90307@freebsd.org> In-Reply-To: <20060619181929.W40529@fledge.watson.org> References: <20060618192011.GF715@turion.vk2pj.dyndns.org> <20060618152428.A36995@fledge.watson.org> <20060619184540.GJ23729@comp.chem.msu.su> <20060619190822.GE966@turion.vk2pj.dyndns.org> <20060619221550.GM23729@comp.chem.msu.su> <20060619181929.W40529@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Andrew R. Reiter wrote: > On Tue, 20 Jun 2006, Yar Tikhiy wrote: > > :On Tue, Jun 20, 2006 at 05:08:22AM +1000, Peter Jeremy wrote: > :> On Mon, 2006-Jun-19 22:45:41 +0400, Yar Tikhiy wrote: > :> >Peter, what gcc options did you build the kernel with? My question > :> >is unrelated to the panic, I'd just like to make stack traces look > :> >sane in common cases :-) > :> > : > :When in basic i386 mode, gcc calls functions in the traditional > :way. E.g., the "foo(1, 2)" call will look as follows in asm: > : > : pushl $2 > : pushl $1 > : call foo > : addl $8, %esp > : > :By merely decoding the addl instruction at the return pointer we > :can find how many words of arguments the called function takes. I'm not sure which -O flags enable this, but I've certainly seen lazy stack cleanups in gcc-generated code on i386: pushl $2 pushl $1 call foo pushl $3 pushl $4 call foo addl $16, %esp This optimization would also confuse the stack-tracing logic you describe. Tim
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?449814AA.90307>