[petsc-dev] Increase PETSCSTACKSIZE?

Jed Brown jed at 59A2.org
Tue May 4 14:42:39 CDT 2010


PetscFunctionBegin has logic to to avoid overflowing the array, but the
stack still gets skewed because PetscFunctionReturn always pops the
stack.  This is a problem because many simple examples already overflow
the stack at some point, resulting in a truncated stack in the error
messages.  This macro is currently defined at 15, with fieldsplits and
V-cycles, it's easy to exceed 30 frames.

The stack skew problem could be overcome by introducing a new local
variable with another level of nesting, something like

#define PetscFunctionBegin {  \
    PetscTruth _petscstackpushed = petscstack->currentsize < PETSCSTACKSIZE; \
    ExistingPetscFunctionBegin;

#define PetscFunctionReturn(n) \
    {if (_petscstackpushed) PetscStackPop; return (n);} \
  }

But I'm not a huge fan of doing this sort of thing with macros and it's
still easy enough to get an error from deeper than 15 frames, so I want
to increase the PETSCSTACKSIZE regardless of whether the macro hack
above is also done.  Is there a reason not to use a biggish number like
50 or more?

Jed



More information about the petsc-dev mailing list