Newsgroups: comp.parallel.pvm
From: manchek@thud.CS.UTK.EDU (Bob Manchek)
Subject: Re: PVMFCATCHOUT gives bus error?
Organization: Computer Science Dept, University of Tennessee, Knoxville
Date: 26 Jun 1995 16:36:35 GMT
Message-ID: <3smnmjINN9pr@CS.UTK.EDU>

In article <3smei6$3ru@newshost.lanl.gov>, rbarrett@ranger.lanl.gov (Richard Barrett) writes:
|> The documentation leaves out the necessary INFO argument in the fortran
|> description (it's there for C). Should be
|> 
|>       CALL PVMFCATCHOUT( 1, INFO )
|> 
|> Richard
|> In article <3skh24$6a2@nexus.uiowa.edu>, haferman@icaen.uiowa.edu (Jeff Haferman) writes:
|> |> 
|> |> I'm running pvm 3.3.4 across a 4-machine homogeneous virtual
|> |> machine with ARCH=HPPA.  I added "CALL PVMFCATCHOUT(1)" to my
|> |> code just before the parent spawned 3 tasks.  I got a bus error.

Patches 5 and 6 included changes to pvm_catchout.  Patch 8 will, too.
Here is the relevant part of the patch in case someone else is having
trouble:
________________________________________________________________
*** ../netlib/pvm3.3.7/src/lpvmcat.c	Wed Dec 21 16:56:52 1994
--- src/lpvmcat.c	Wed May 17 12:18:21 1995
***************
*** 32,37 ****
--- 32,40 ----
   *	Child task output collection.
   *
  $Log: lpvmcat.c,v $
+  * Revision 1.5  1995/05/17  16:17:24  manchek
+  * fixed buf in pvmclaimo, copying one byte too few
+  *
   * Revision 1.4  1994/12/20  16:35:57  manchek
   * added ShowTids option
   *
***************
*** 115,121 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmcat.c,v 1.4 1994/12/20 16:35:57 manchek Exp $";
  static char pvmtxt[512];				/* scratch for error log */
  static struct tobuf *tobuflist = 0;
  static FILE *outlogff = 0;
--- 118,124 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmcat.c,v 1.5 1995/05/17 16:17:24 manchek Exp $";
  static char pvmtxt[512];				/* scratch for error log */
  static struct tobuf *tobuflist = 0;
  static FILE *outlogff = 0;
***************
*** 250,255 ****
--- 253,259 ----
  */
  		p = op->o_buf + op->o_len;
  		op->o_len += n;
+ /* XXX would be more efficient to remove all lines before copying remainder */
  		while (p = CINDEX(p, '\n')) {
  			*p++ = 0;
  			if (outlogff)
***************
*** 258,264 ****
  				else
  					fprintf(outlogff, "%s\n", op->o_buf);
  			op->o_len -= p - op->o_buf;
! 			BCOPY(p, op->o_buf, op->o_len);
  			p = op->o_buf;
  		}
  
--- 262,268 ----
  				else
  					fprintf(outlogff, "%s\n", op->o_buf);
  			op->o_len -= p - op->o_buf;
! 			BCOPY(p, op->o_buf, op->o_len + 1);
  			p = op->o_buf;
  		}
  
________________________________________________________________

/ Robert Manchek                University of Tennessee     /
/                               Computer Science Department /
/ (615)974-8295                 Ayres Hall #104             /
/ manchek@CS.UTK.EDU.           Knoxville TN  37996-1301    /
/     http://www.netlib.org/utk/people/BobManchek.html      /


