Newsgroups: comp.parallel.pvm
From: Peter Schaefer <schaefer>
Subject: Help! PvmSend seems to overwrite my data.
Organization: Leibniz-Rechenzentrum, Muenchen (Germany)
Date: 23 Apr 1996 15:15:42 GMT
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-ID: <4lis6u$mge@sparcserver.lrz-muenchen.de>

PvmSend seems to overwrite my data. Perhaps the bug results from my attempt
to send a buffer from a process to itself ?
(Thats what process 0 does. Sends to 0 and 1. The error emerges in process 1).
( The reason is I start with fewer than the intended 8 processes for easier 
debugging. )

Heres what some of my internal data structures look like after:
long int: 0x40012    =268479104
     int: 262163     <-TID where none should be
     int: 20
     int: 50331648
     int: 2

The interesting bits of the program look like this:
(In sequence of execution)

 Pro= new TPvmProcessor();
 while(!pvm_nrecv(pvm_parent(),PVMxTERMINATE))
 {
  sleep(1);
//*Debugger shows data is ok up to here*/ 
 Pro->SendStatusMsg(PVMxREPORT,Pro->MyStatus());
//*Here it's buggy*/
  Pro->MainLoop();
 }
 delete Pro;
};  

class TProcessor {
 ..
int          status[3][3][3]; /* sync; odd/even */
.
}

int& TProcessor::MyStatus(){return status[1][1][1];};
int  TProcessor::MyStatus() const {return status[1][1][1];};

Boolean TPvmProcessor::SendStatusMsg(int id,int status)
{
  int s;

  s=status;
  pvm_initsend(PvmDataDefault);
  pvm_pkint(&s,1,1);
  return(pvm_send(pvm_parent(),id)>0);
}

Please tell me if I'm doing anything out of the ordinary
here. Or if you recognize the error.

Thank you very much !
-- 
Peter Schaefer

"office":
schaefer@malaga.math.uni-augsburg.de
http://wwwhoppe.math.uni-augsburg.de/schaefer

"leisure":
schaefer@mathpool.uni-augsburg.de     
http://www.mathpool.uni-augsburg.de/~schaefer

Chant this Mantra 1024 times a day 
to become a happy usenet user:

 Deedledee Deedledee Deedledee
 Deedledee Deedledee Deedledee
 Deedledee Deedledee Deedledee
 Deedledee Deedledee Deedledee
 Deedledee Deedledee Deedledee
 Deedledee Deedledee Deedledee
 Deedledee Deedledee Deedledee
 Deedledee Deedledee Deedledee


