From: <er...@he...> - 2002-10-23 17:51:50
|
On Mon, Oct 21, 2002 at 10:06:44AM -0400, Nicholas Henke wrote: > Hrm -- I seems to be breaking things again. The following oops occurred > running my 'noop' script again -- the ps script is that script, just > remove the bpsh $node ps line. I have seen this oops twice so far -- the > Code: was the same in both. If the trace is bogus, I would _really_ > appreciate any pointers you could give me to get better traces for you. Ok, here we go again. I saw an oops. It might be the oops you saw. I think the odds are decent that it's the same one. I fixed it (I think) and the slave nodes that were crashing with your script don't seem to be crashing anymore. So give this one a whirl and let me know how it goes. You can either try the patch (for kernel/slave.c) included in this email (in addition to all the other ones). Or just grab BProc 3.2.2 which I just threw up on SourceForge. Oh, and I fixed that silly VERSION:= build problem. - Erik diff -u -r1.47 -r1.48 --- slave.c 5 Aug 2002 22:56:10 -0000 1.47 +++ slave.c 22 Oct 2002 22:01:02 -0000 1.48 @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: slave.c,v 1.47 2002/08/05 22:56:10 hendriks Exp $ + * $Id: slave.c,v 1.48 2002/10/22 22:01:02 hendriks Exp $ *-----------------------------------------------------------------------*/ #define __NO_VERSION__ @@ -53,7 +53,7 @@ ** exist) before allowing the slave daemon to continue. **/ struct recv_proc_info { - struct semaphore sem; + struct completion cmpl; struct bproc_masq_master_t *master; struct bproc_krequest_t *req; int status; @@ -75,7 +75,7 @@ /* Let the slave daemon continue now that we've camped on * these pid's and it's safe to go on doing other things * now. */ - up(&arg->sem); /* Can't use "arg" beyond this point. */ + complete(&arg->cmpl); /* Can't use "arg" beyond this point. */ if (r != 0) { bproc_put_req(req); silent_exit(); @@ -139,7 +139,7 @@ struct recv_proc_info info; info = (struct recv_proc_info) {{}, master, req, 0}; - init_MUTEX_LOCKED(&info.sem); + init_completion(&info.cmpl); /* We have to clear out PF_TRACESYS temporarily here since kernel * thread uses the system call entry/exit path. (on x86 @@ -157,7 +157,7 @@ current->ptrace |= (flags & PT_TRACESYS); if (pid < 0) return pid; - down(&info.sem); /* Wait for the process to get setup */ + wait_for_completion(&info.cmpl); /* Wait for the process to get setup */ return info.status; } |