[dm-devel] Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related?

Jan Kara jack at suse.cz
Mon Feb 25 22:48:07 UTC 2008


> On Sun, 24 Feb 2008 17:02:26 +0000 Nix <nix at esperi.org.uk> wrote:
> 
> > On 24 Feb 2008, Peter Osterlund told this:
> > 
> > > Nix <nix at esperi.org.uk> writes:
> > >> But while I'd normally blame pktcdvd there's only one pktcdvd function
> > >> in these tracebacks (pkt_open) and it's not got a significant stack
> > >> footprint.
> > >
> > > Did you verify that with "make checkstack" or just by looking at the
> > > source code? On my system, pkt_open() consumes 584 bytes because the
> > > compiler decides to inline lots of functions that would not normally
> > > be part of long call chains. The following patch fixes that problem on
> > > my system.
> > 
> > I just looked at the source; I forgot `make checkstack' existed.
> > 
> > On this system:
> > 
> > 0xc0263e0f pkt_open [vmlinux]:                          556
> > 
> > which is nearly as bad.
> > 
> > (As an aside, I'm surprised I didn't oops when packet-writing as well:
> > 
> > 0xc021270d udf_process_sequence [vmlinux]:              692
> > 0xc020f43d udf_add_entry [vmlinux]:                     628
> > 
> > owch. I guess that's called via a shorter call chain...)
> 
> udf_process_sequence() seems to be another victim of gcc inlining.
  Hmm, I'll have a look what we can do.

> udf_add_entry() defines a couple of 256-byte local arrays.
  Yes, exactly two of them. One is  non-trivial to get rid of - it's
used for encoding of filename before we write it, but one is used during
scanning of the directory whether the entry doesn't already exists (oh,
my!) and we can just rip that off..

								Honza
-- 
Jan Kara <jack at suse.cz>
SuSE CR Labs




More information about the dm-devel mailing list