Skip to content

[2011-07-26] Circular reference in Sitetree causes Fatal error memory exhausted #326

Closed
silverstripe-issues opened this Issue Apr 3, 2013 · 3 comments

2 participants

@silverstripe-issues

created by: omarkohl
created at: 2011-07-26
original ticket: http://open.silverstripe.org/ticket/6688


If you have page A with child page B. Then move page B to the root and move page A to be child of B. You may save both pages (though it doesn't matter if you do) but you may NOT PUBLISH them. Try reloading the Backend and enjoy.

Root--A--B (original)
Root--B--A

Second possibility: Again exchange both pages and this time save and publish A (the child page). Same result.

Only if you save and publish B (the parent) it works.

The reason for this is of course a circular reference. But in the first scenario there is no real circular reference (you can't see it in the DB). It has something to do with the fact that the Sitetree and Sitetree_Live tables have differing information on who is who's parent. In the second scenario you get a true circular reference in the Sitetree_live table.

SiteTree::batch_permission_check() is a recursive function that gets called for every child page (in this case infinite loop of children) until memory runs out.

@silverstripe-issues

comment by: @chillu (ischommer)
created at: 2011-10-18


Unsetting milestone

@silverstripe-issues

comment by: @chillu (ischommer)
created at: 2012-06-01


Also reported in http://open.silverstripe.org/ticket/6641 and http://open.silverstripe.org/ticket/6756

@simonwelsh

This now fails validation.

@simonwelsh simonwelsh closed this Mar 16, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.