From: Herbert Poetzl (herbert_at_13thfloor.at)
Date: Tue 25 Nov 2003 - 00:12:11 GMT
On Mon, Nov 24, 2003 at 10:30:21PM +0000, Jonathan Sambrook wrote:
> As you may remember, DSVR use the s_context kernel patch in an extremely
> non-standard manner. This means we stress the s_context patch in
> different ways to the standard vserver userspace utils (of either
> flavour).
> 
> I've been being driver mad for months by a system lockup which occurs on
> some machines but not others. The hardware configs don't seem to matter.
> Neither is there an obvious pattern in the load levels. Some machines
> have been up for several months, others fail within hours. As you can
> guess, we don't currently boot onto s_context kernels :)
> 
> Much (and I do mean much) head scratching later, I generated a perl
> script (using our s_context perl module) which reliably reproduces the
> problem on our system.
> 
> I've had lkcd and kgdb on to this, but so far no joy in locating the
> cause of the lockup, other than noting that the scheduler ceases to get
> called. 
> 
> At this point you're probably thinking something like: "So what? He's
> b*ll1xed up his moddifications to the vanilla s_context stuff. What's
> this got to do with me?". 
never would think that ... 8-)
> 
> Having battered my head against this problem for long enough, I've
> finally gotten around to re-writing my perl script in C so as to test a
> vanilla 2.4.20 + vanilla ctx17f. It locks up like the proverbial kipper
> - kgdb still functions, but the scheduler ain't called.
> 
> Any assistance gratefully received - you may just save my sanity :)
hmm .. could you try with vs1.00 adn vs1.1.5 on 2.4.22 too?
will have a look at it, when I've got some sleep ...
TIA,
Herbert
> Regards,
> Jonathan
> 
> //----------------------------------------------------------------------
> 
> #include <stdio.h>
> #include <unistd.h>
> #include "vutil.h"
> 
> void start_ctx (int ctx_in) {
>   int ctxs[16];
>   int pid = fork ();
>   int ctx = 0;
> 
>   ctxs[0] = -1;
> 
>   switch (pid) {
>     case 0:
>     case -1:
>       break;
> 
>     default:
>       ctx = call_new_s_context(1,ctxs,0,0);
>       printf ("ctx: %d\n", ctx);
>       exit (0);
>   }
> }
> 
> void loop () {
>   printf( "loop()\n");
>   while (1) {
>     start_ctx (0);
>   }
> }
> 
> int main (int argc, char ** argv) {
> 
>   int i = 2;
> 
>   signal (SIGCHLD, SIG_IGN);
> 
>   while (i--) {
>     if (!fork()) {
>       loop ();
>     }
>   }
> 
>   while (1) {
>     printf ("%d\r", ++i);
>     fflush (stdout);
>     sleep (1);
>   }
> }
> 
> //----------------------------------------------------------------------
> 
> 
> 
> -- 
>                    
>  Jonathan Sambrook 
> Software  Developer 
>  Designer  Servers
_______________________________________________
Vserver mailing list
Vserver_at_list.linux-vserver.org
http://list.linux-vserver.org/mailman/listinfo/vserver