PETSc Problem with fgets

Joshua Adelman jadelman at ocf.berkeley.edu
Thu May 11 17:54:28 CDT 2006


I am trying to read some parameters into my PETSc simulation using  
fgets, and am getting a strange error. It appears that fgets and  
sscanf are working since the proper values are read into the  
simulation, but it throws an error anyways. This problem only arises  
when I am using the parallel version of the code (i.e. setting -n in  
mpiexec to a value greater than 1). Basically if I comment everything  
out and then start uncommenting one line at a time, the error appears  
once I've uncommented the line with fgets. One strange thing to note  
is that the error happens after the program has already finished  
executing the function where the problem is. Here's a snippet of the  
code that seems to be causing the problem:

PetscErrorCode DataReadParams(SimData *sdata) {
	int 			rank, size;
	PetscErrorCode	ierr;
	int				i;
	FILE			*fd;
	char        	str[256];
	char			line[100];
	int				max = 100;
	
	PetscFunctionBegin;

	ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size); CHKERRQ(ierr);
	ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank); CHKERRQ(ierr);

	
	/* Read data from files	*/
	sprintf(str,"%s%s",sdata->simname,".param");
	ierr = PetscFOpen(PETSC_COMM_WORLD,str,"r",&fd); CHKERRQ(ierr);
	if (!rank && !fd) {
	    SETERRQ1(PETSC_ERR_FILE_OPEN,"Cannot open %s\n",str);
	}
	// PetscPrintf(PETSC_COMM_WORLD,"Opening file %s\n",str);
	fgets(line,max,fd);
    	sscanf(line,"%d",&sdata->NP);

The error that is kicked out is:


[1]PETSC ERROR: Caught signal number 10 BUS: Bus Error, possibly  
illegal memory access
[1]PETSC ERROR: Try option -start_in_debugger or - 
on_error_attach_debugger
[1]PETSC ERROR: or try http://valgrind.org on linux to find memory  
corruption errors
[1]PETSC ERROR: likely location of problem given in stack below
[1]PETSC ERROR: --------------- Stack Frames ---------------
[1]PETSC ERROR: Note: The EXACT line numbers in the stack are not  
available,
[1]PETSC ERROR:       INSTEAD the line number of the start of the  
function
[1]PETSC ERROR:       is given.
[1]PETSC ERROR: [1] DataReadParams line 23 datareadparams.c
[1]PETSC ERROR: [1] SimInit line 19 siminit.c
[1]PETSC ERROR: --------------------------------------------
[1]PETSC ERROR: User provided function() line 0 in unknown directory  
unknown file
[1]PETSC ERROR: Signal received!
[1]PETSC ERROR:  !


Any insight would be most appreciated.

Josh

------------------------------------------------------------------------ 
------------------------------
Joshua L. Adelman
Biophysics Graduate Group              Lab: 510.643.2159
218 Wellman Hall                                Fax: 510.642.7428
University of California, Berkeley     http://www.ocf.berkeley.edu/ 
~jadelman
Berkeley, CA 94720 USA                   jadelman at ocf.berkeley.edu
------------------------------------------------------------------------ 
------------------------------






More information about the petsc-users mailing list