Subject: smp & lwps
To: None <tech-smp@netbsd.org>
From: Mihai CHELARU <kefren@netbastards.org>
List: tech-smp
Date: 06/11/2004 22:13:30
Hello,

On a multiprocessor machine, a simple code like this, may become unkillable.

#include <stdio.h>
#include <unistd.h>
#include <lwp.h>

void pt(void *unused)
{
int i;
while(1) {
        for (i=0;i<100;i++);
        }
}

main ()
{
ucontext_t c;
lwpid_t lpid;
char buf[9000], buf2[9000];
_lwp_makecontext(&c, pt, NULL, NULL, buf, 8192);
_lwp_create(&c, 0x00000040, &lpid);
_lwp_makecontext(&c, pt, NULL, NULL, buf2, 8192);
_lwp_create(&c, 0x00000040, &lpid);
sleep(20);
}


run it like this:
$ ./test &
$ kill -2 %1

Looks like it kills only a lwp, while leaving the other running. Main problem 
is that the remaining one cannot be killed.

--
M