I have found the reason for the loop. When saving a synonym, it verifies that the target exists and sets the target name to the existing name of the target. The problem is that during a rename, the target name is actually about to change. So the synonym gets created pointing to its own name but with the correct target ID. Then the final collections that are intended to point synonyms with no prior target to the new target if it matches, catches the synonym itself and changes the target ID to itself so that it becomes useless (with information about the originally intended target being lost forever).
The reason that the change in my earlier post had fixed the problem was somewhat of a coincidence, because the synonym was still being created based on the pre-rename information. Escalated the issue described in my earlier post to a security issue, as it's a permissions escalation (mass-dissociating of synonyms without permission to delete synonyms).
To fix the problem with wrong meta for new synonyms (existing affected synonyms to be fixed / removed as needed by the next upgrade), edit
src/addons/vw/vw/_core/controller/dm/base/routable/vw.php. Find:
Code:
$redirectdm = vw_Hard_Core::controller('DM')->create('Redirect', 'SILENT');
AFTER it, add:
Code:
$redirectdm->set_info('on_rename', 1);
In
src/addons/vw/vw/_core/controller/dm/redirect/vw.php, find:
Code:
!vw_Hard_Core::model('Node')->has_type($page, 'Island') AND
BEFORE it, add:
Code:
!$this->instance->get_info('on_rename') AND
The bug appeared in 4.0.16, which released in early 2017.