Thanks for clarifying how long it takes to time out due to lack of event processing, eXpl0it3r.
Yeah, my program is a (fairly simple) state machine. In between two states (event processing loops) I was loading a few textures, generating several thousand sprites from them and assigning them random positions and orientations. This delay was quite short (much less than a second), but I feared that might be the issue.
Instead, I found a few places where I was passing bad input to functions, cleaned them up, and I haven't seen a crash yet. The delay definitely wasn't my issue.
Still, I am still curious about other ways that I could switch between game states. I haven't come up with anything better than bools and return codes.