Skip to content

Segmentation fault in CVAdataStore #49

Open
@lcontento

Description

@lcontento

For some parameter values I get a segmentation fault while doing adjoint sensitivity analysis.
The problematic point is line 2033 in the following snippet:

sundials/src/cvodes/cvodea.c

Lines 2027 to 2037 in 0c83e0b

i = 1;
do {
flag = CVode(cv_mem, ck_mem->ck_t1, ca_mem->ca_ytmp, &t, CV_ONE_STEP);
if (flag < 0) return(CV_FWD_FAIL);
dt_mem[i]->t = t;
ca_mem->ca_IMstore(cv_mem, dt_mem[i]);
i++;
} while ( sign*(ck_mem->ck_t1 - t) > ZERO );

It seems that the index i is not checked for being inside the bounds of the dt_mem array.
If I add the check if (i > ca_mem->ca_nsteps) return(CV_FWD_FAIL); at the beginning of the loop body the segmentation fault is solved.
However, I am not sure if this is the correct thing to do or if index i should always be inside the bounds and the actual problem lies elsewhere.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions