I'm guessing this was the source of the loop. Doesn't this run the risk of not having the session properly configured? If destroy is called before any other methods, the default php configuration will be used when starting the session.