4.6 UI Text graphic rebuild loop iOS

I get this message in the Xcode console:

Trying to add Text (UnityEngine.UI.Text) for graphic rebuild while we are already inside a graphic rebuild loop. This is not supported.
UnityEngine.Debug:Internal_Log(Int32, String, Object)
UnityEngine.Debug:LogError(Object)
UnityEngine.UI.CanvasUpdateRegistry:InternalRegisterCanvasElementForGraphicRebuild(ICanvasElement)
UnityEngine.UI.CanvasUpdateRegistry:RegisterCanvasElementForGraphicRebuild(ICanvasElement)
UnityEngine.UI.Graphic:SetVerticesDirty()
UnityEngine.UI.Graphic:SetAllDirty()
UnityEngine.UI.Text:set_text(String)

The code wich makes this is this:

void Update() {
    DistanceLabel.text = mDistance+"m";
}

It only happens on iOS, in Editor it works as desired the UI gets rendered, UI Text updates. On device It doesn’t even render.

I don’t know if it’s related, but I get this too a lot:

[13:55:55] Gábor Tóth: ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
at System.Collections.Generic.List`1[UnityEngine.UI.ICanvasElement].get_Item (Int32 index) [0x00000] in :0
at UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate () [0x00000] in :0
at UnityEngine.Canvas.SendWillRenderCanvases () [0x00000] in :0

(Filename: Line: -1)

I didn’t find much about this anywhere. I am using Unity Pro license. The project was created with Unity 4.5.5. Please give some advice.

It looks like Unity iOS doesn’t like it when you have multiple root canvases. I had a different canvas for input and another for gizmos. On PC and Mac they were running perfectly, but iOS didn’t like it. Now I merged them into one canvas and it works the way it should.