#1429: Assertion error when using "eval" & new UIUC speedup in TwoPunctures --------------------------------------+------------------------------------- Reporter: bernard.j.kelly@… | Owner: Type: defect | Status: new Priority: major | Milestone: ET_2013_11 Component: EinsteinToolkit thorn | Version: development version Keywords: TwoPunctures, malloc | --------------------------------------+------------------------------------- Hi. The new, more efficient, "eval" branch of TwoPunctures is generating a problem in certain cases. I had a job using this code (brought over from the trunk to my ET_2013_05 release), and it failed with an assertion error in TP_utilities.c, within the "d3tensor" allocation routine. I'm attaching a sample parameter file and the associated SCROUT + SCRERR for a small version of this case. It was run on 2 Nehalem nodes (8 cores each; no OpenMP), using an executable compiled with -O3 level optimisation using Intel-2013 compilers and SGI's MPT implementation of MPI.
Here's the actual error message in the SCROUT+ERR file:
{{{ TP_utilities.c:146: TP_d3tensor: Assertion `retval[i][nch]-retval[i][ncl] == (nch-ncl)*depth' failed. }}}
I've looked at the d3tensor allocation routine in TP_utilities.c, and it seems to have several problems:
* it has an actual bug in line 115:
{{{ retval[0][0] = malloc(sizeof(CCTK_REAL)*(nrh-nrl+1)*(nch-ncl+1)*(nrh- nrl+1)); }}}
--- the last factor should be (ndh-ndl+1), ''not'' (nrh-nrl+1)
* even without that bug, the size allocated is too long by one in each dimension, when called by other TP routines, as, in fact, are *all* these TP_utilities routines.
* the way in which memory is allocated seems to assume contiguous memory chunks (I suspect this is the real problem, given the error message).
* all the routines in TP_utilities.c use "int" and "long" instead of "CCTK_INT"