Water in cubemap

Does the built-in Water layer, particularly as it exists in the stock Island demo, have any special render handling?

I'm asking because I'm playing with real-time environment mapping (e.g. shiny chrome object) and while I can get cubemap rendering working correctly when I tell the cubemap camera not to render the water layer but keep the water reflection rendering the cubemapped object (meaning the object would show up in the water if it was ever in a position to, but the water doesn't show up on the object), the reverse fails. If I put the cubemapped object on its own layer, mask it off from the water camera/script/shader and try to render the water layer onto the cubemap (even with a custom cubemap shader set to the Overlay queue, and even playing with the camera depth so the cubemap is the last thing rendered before the screen)... any cubemap faces that point towards the water plane fail to render, even if they contain no actual water. It's as if Unity is actively preventing situations that might cause infinite reflection, even if I've manually headed off the possibility in my render order...

When set up in this manner, Unity also throws:

RenderTexture error: failed to retrieve color surface [invalid call] UnityEngine.Camera.Render()

on the reflectionCamera.Render() line of IslandWater.cs

(Unity 2.6.1f3, Pro license, under 64-bit Windows 7; Radeon HD 5850 if it matters)

Partial answer: Turns out this is a pathological interaction between a cubemap that captures a render at the end of the frame because it's set to, and a water layer that captures a render when it itself is rendered, which would normally happen at the end of the frame, but gets thrown off something fierce when it's the cubemap render that triggers it rather than the last-thing-ever-per-frame final screen camera render. The error itself may even be less related to reflections trying to render reflections and more due to a standard camera trying to clone its view parameters off a cubemap camera.

Setting the water script (and the cubemap script) to be LateUpdate rather than OnWillRender allows everything to happen sufficiently close to the end of the update that everything does render. The side-effect will be that when the water script flushes its cameras, the main screen render hasn't completed, which will throw additional errors. Even converting the OnDisables to OnPostRenders and throwing a yield WaitForEndOfFrame() (or in c#, yield return new WaitForEndOfFrame(); with the functin return changed from void to EIterator) doesn't seem to stave these off, probably because they happen relative to the cameras in the scripts rather than the final scene camera. But at least the scene renders...