From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: Date: Wed, 6 Sep 2006 16:20:44 -0400 From: "Russ Cox" To: "Fans of the OS Plan 9 from Bell Labs" <9fans@cse.psu.edu> Subject: Re: [9fans] thread cleanup In-Reply-To: <9d16c55abf73992d77356892ea9e3c27@9netics.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <9d16c55abf73992d77356892ea9e3c27@9netics.com> Topicbox-Message-UUID: b04df6a4-ead1-11e9-9d60-3106f5b1d025 threadexitsall should take it down (and everything else). don't use threadkill or postnote. instead send the thread something on the channel it's waiting on (like a nil) indicating that it should exit cleanly. i'm very surprised that threadexitsall doesn't work. if you can create a simple test program demonstrating a hang after threadexitsall, i'd like to see it. russ On 9/6/06, Skip Tavakkolian <9nut@9netics.com> wrote: > in an fs i wrote that's using thread library, the parent can't kill the child. > the child was started by proccreate and is in Rendez state; the thread > in the child is running a function that waits on a channel (recvp); > > in fs.end(), i've tried threadexitsall, threadkill, and postnote -- > PNPROC and PNGROUP -- but nothing worked. what am i missing? > > child process state: > cpu% acid 698004 > /proc/698004/text:386 plan 9 executable > > /sys/lib/acid/port > /sys/lib/acid/386 > acid: stk() > rendezvous()+0x7 /sys/src/libc/9syscall/rendezvous.s:5 > runthread(p=0x29a48)+0x83 /sys/src/libthread/sched.c:144 > _sched()+0x90 /sys/src/libthread/sched.c:113 > _schedinit(arg=0x29a48)+0x1a4 /sys/src/libthread/sched.c:77 > main(argc=0x4,argv=0x7fffef9c)+0x38 /sys/src/libthread/main.c:34 > _main+0x31 /sys/src/libc/386/main9.s:16 > acid: > >