Philip Martin wrote on Wed, Jul 25, 2012 at 11:09:54 +0100: > Daniel Shahaf <danie...@elego.de> writes: > > > Philip Martin wrote on Wed, Jul 25, 2012 at 10:49:36 +0100: > >> > >> I attached to the issue a repository that demonstrates the corruption; > >> verify doesn't report a problem on that repository. What does verify > >> check? > > > > validate_root_noderev() catches an instance of the #4129 corruption and > > in its docstring xrefs svn_fs_fs__verify(), so I think the checks in the > > former are done in the latter too. > > validate_root_noderev is only called by write_final_rev and not during > verify. svn_fs_fs__verify calls svn_fs_fs__verify_root and that does: > > /* Issue #4129: bogus predecessors. */ > /* Check 1: predecessor must be an earlier revision. > */ > if (pred_rev >= root->rev) > return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL, > "r%ld's root node's predecessor is r%ld" > " but must be earlier revision", > root->rev, pred_rev);
The check was included in svn_fs_fs__verify_root() in r1349313: /* Verify explicitly the predecessor of the root. */ { ... /* Check the predecessor's revision. */ if (pred_id) { SVN_ERR(svn_fs_fs__dag_get_node(&pred, root->fs, pred_id, pool)); SVN_ERR(svn_fs_fs__dag_get_revision(&pred_rev, pred, pool)); if (pred_rev+1 != root->rev) /* Issue #4129. */ return svn_error_createf(SVN_ERR_FS_CORRUPT, NULL, "r%ld's root node's predecessor is r%ld", root->rev, pred_rev); } {