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@xxxxxxxxxxxxxxxx
------------------------------------------------------------------------------------------------------