In the function MatWrapML_SHELL, there is a return without creating the shell matrix.  I have two questions about it:<div><br></div><div><div>  m = mlmat->outvec_leng; </div><div>  n = mlmat->invec_leng;</div><div>  if (!m || !n){</div>

<div>    newmat = PETSC_NULL;</div><div>    PetscFunctionReturn(0);</div><div>  }</div></div><div><br></div><div>1) Should there be an error generated here?</div><div><br></div><div>2) If not, why does the function return without generating the matrix?  This can result in deadlock if some processes return in this clause and some do not.  The ones that do not get caught in the MatCreateShell() call.</div>

<div><br></div><div>Regards,</div><div>John</div><div><br></div>