Coroutine is not called between frames

I start a coroutine in Start() like this: StartCoroutine("CoroutineName") and inside it I use yield return null to wait for another frame. But when I log calls to Update() and the coroutine, this is what I get:

42157-coroutine-calls.png

Coroutine is not called between first two Update() calls. Why?

[EDIT]

Example code:

 private void Start() {
     Debug.Log("Start()");

     StartCoroutine("ExampleCoroutine");
 }

 private IEnumerator ExampleCoroutine() {
     Debug.Log("Called for the first time");

     while (true) {
         yield return null;
     }
 }

 private void Update() {
     Debug.Log("Update()");
 }

Extended log:

Considering your new addition, there is nothing wrong.

First you get the Start printing which also starts the coroutine. The coroutine runs until the yield and returns to the Start that finishes. We get:

 Start
 StartCoroutine
 Coroutine for first time
 yield  return null
 (End of Start after the coroutine call)
 Update

The first update is called as should. The frame is now done. Next frame

Coroutines are called after Update so the next frame update is called and finishes. The compiler finds a pending coroutine and runs it until it hits a yield or the end:

 Update
 yield return null

now all together:

 Start
 StartCoroutine
 Coroutine for first time
 yield  return null
 (End of Start after the coroutine call)
 Update
 Update
 yield return null

Coroutines are called after Update so the next frame update is called and finishes. The compiler finds a pending coroutine and runs it until it hits a yield or the end:

 Update
 yield return null

now all together:

 Start
 StartCoroutine
 Coroutine for first time
 yield  return null
 (End of Start after the coroutine call)
 Update
 Update
 yield return null
 Update
 yield return null

Coroutines are called after Update so the next frame update is called and finishes. The compiler finds a pending coroutine and runs it until it hits a yield or the end:

 Update
 yield return null

now all together:

 Start
 StartCoroutine
 Coroutine for first time
 yield  return null
 (End of Start after the coroutine call)
 Update
 Update
 yield return null
 Update
 yield return null
 Update
 yield return null

… And so on

Try

IEnumerator Example()
{
yield return new WaitForEndOfFrame();
}