The loop in TSSolve() is simple. Maybe you can use a debugger to find out what happened to post-step function pointer.
while (!ts->reason) {
ierr = TSPreStep(ts);CHKERRQ(ierr);
ierr = TSStep(ts);CHKERRQ(ierr);
ierr = TSPostStep(ts);CHKERRQ(ierr);
ierr = TSMonitor(ts,ts->steps,ts->ptime,ts->vec_sol);CHKERRQ(ierr);
}