LoadLevel break coroutine ?

So I have a simple where i start a coroutine, which works fine.
But if I reload the same level with Application.LoadLevel (Application.loadedLevel), I get the following error when I try to start the same coroutine :

MissingReferenceException: The object of type ‘GameManager’ has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.

“GameManager” if the script where the coroutine is. The script instance or its gameObject are never destroyed explicitly.

Anyone has an explanation or a solution ?
Thanks in advance

The explanation is simple: All game objects are destroyed when you load a level, otherwise your levels would overlay each other.
The solution is also simple: call DontDestroyOnLoad passing your GameManager object as parameter.