[PATCH] Re: Kernel panic: can't push onto full stack

Alexander Viro (viro@math.psu.edu)
Sun, 28 Feb 1999 11:31:30 -0500 (EST)


On Sun, 28 Feb 1999, Alan Cox wrote:

> > configured machines. After the kernel panics, the machine is still
> > pingable and seems to almost establish tcp connections, but
> > just hangs. All services running on the machines no longer function.
>
> Thats what I would expect.
>
> > What exactly does this error mean? The machines have plenty of ram and
>
> It means something very bad happened in a situation where a lot of file
> handles were being passed across sockets.
>
> I've been pondering this one (you are the third report I've seen). It
> basically implies a bug in the mark/sweep garbage collector, or a race
> of some kind.

Latter. Patch follows (I've sent it to Alexey a minute ago):

--- garbage.c Sun Feb 28 11:10:09 1999
+++ garbage.c.new Sun Feb 28 11:18:20 1999
@@ -171,16 +171,18 @@

if(stack==NULL || max_files>max_stack)
{
+ i = max_files;
if(stack)
vfree(stack);
- stack=(unix_socket **)vmalloc(max_files*sizeof(struct unix_socket *));
- if(stack==NULL)
+ stack=(unix_socket **)vmalloc(i*sizeof(struct unix_socket *));
+ if (stack)
+ max_stack = i;
+ if(stack==NULL || i<max_files)
{
printk(KERN_NOTICE "unix_gc: deferred due to low memory.\n");
in_unix_gc=0;
return;
}
- max_stack=max_files;
}

forall_unix_sockets(i, s)
Cheers,
Al

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/