Messages in this thread | | | Date | Fri, 20 Jun 2008 17:26:35 -0400 (EDT) | From | Mikulas Patocka <> | Subject | Re: stack overflow on Sparc64 |
| |
On Fri, 20 Jun 2008, David Miller wrote:
> From: Mikulas Patocka <mpatocka@redhat.com> > Date: Fri, 20 Jun 2008 16:34:23 -0400 (EDT) > >> And what if network softirq happened here? How much stack does it consume? >> >> The whole overflowed stack trace has 75 functions, I was able to get rid >> of 9 by avoiding bio_endio recursion and 10 by turning simple functions >> into inlines. --- so is it enough or not enough for possible networking >> calls? > > It should be OK, because the minimum stack of a (75 - 19) depth call > chain is under 11K and within safe limits I believe.
I meant if some fancy networking options can eat those 19 frames that I saved and crash again? I use the computer as a workstation, it doesn't have high network load and it doesn't use any features except basic TCP/IP.
>> Maybe a good thing would be to add a check for stack size to __do_softirq >> and handing the softirq to ksoftirqd if there's not enough space. > > I'd rather it spit out a WARN_ON() message and a backtrace. > > Otherwise it will be considered a feature and people won't fix > these deep call chains.
If you think that process context+network processing+hardirqs can fit into 75 nested functions... I really have no idea how much the networking takes, given the amount of protocols and features and inability to test them all in one lab, it looks very scary.
Mikulas
| |