<div dir="ltr"><div>Hello PETSc Community,</div><div><br></div><div>I think I've found a bug - <br></div><div><br></div><div>Go to $PETSC_DIR/src/ksp/ksp/tutorials/</div><div><br></div><div>open ex5f.F90, and add the following line in MyKSPConverged(), say around line 336:</div><div><br></div><div> call KSPConvergedDefault(ksp,n,rnorm,flag,dummy,ierr)</div><div><br></div><div>It should make sense why someone would want to do this - within a definition of custom convergence behaviour, get the default convergence flags, and, based on certain conditions, overwrite it.</div><div><br></div><div>Now, building and running the exercise, making sure to include the flag to use the custom convergence:</div><div><br></div><div> boston@boston-SYS-540A-TR:~/DATA_DRIVE/PETSC_DIRS/petsc_3.22/src/ksp/ksp/tutorials$ ./ex2f -my_ksp_convergence<br>[0]PETSC ERROR: ------------------------------------------------------------------------<br>[0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, probably memory access out of range[...]</div><div><br></div><div>From my debugging, the issue is at line 1520 of iterativ.c:</div><div><br></div><div>  KSPConvergedDefaultCtx *cctx = (KSPConvergedDefaultCtx *)ctx;</div><div><br></div><div>Because a dummy is used for the context object, this cast fails (my debugger says "cannot access memory..." for cctx). Then the crash happens when trying to access members of cctx:</div><div><br>  if (cctx->convmaxits && n >= ksp->max_it) {</div><div><br></div><div><br></div><div>I'm not sure how to fix it. Crucially, we must note that that this did work in older versions of PETSc - I can repeat this test in 3.19.1, for example, and it works fine - a debugger shows the cast succeeding and producing some</div><div>defaulted version of the ctx object, the subsequent crash does not happen, etc.</div><div><br></div><div>Does anybody have any advice for working around this for the time being? A piece of software I work with uses a custom ksp convergence test in the manner described above, and is only functional with older versions of petsc because of this.</div><div>Like in ex2f, I have no need of the ctx object, and just as in ex2f, I use 0 instead. <br></div><div><br></div><div>Things I'll try next: defining a proper ctx object (I use 0, like in ex2f), or looking for some PETSC_NULL_CTX definition somewhere. <br></div><div><br></div><div>Many Thanks,</div><div><br></div><div>Daniel<br></div><div><br></div><div><br></div><div><br></div></div>