I've seen this before with X applications. Think about the steps that need to occur:
- create the child window
- renders initial content into the child window
- make the child window visible - i.e. "on top" of the stack, either in the current virtual workspace or the workspace of the parent window. Either one can work; neither one is perfect.
You don't want the window to be visible before the initial content is rendered; this makes things look ugly. You want it to pre-render everything with the window hiding somewhere, then bring the window to front.
Often the "to front" logic is handled in a window finalization routine. Think about what would happen in the case where something derails the window layout. Say, final decisions about initial content for widgets or similar. The finalization routine may never get called.
So, a mostly (or maybe even totally) right looking window gets left sitting there, behind the main application window.
If there was some cruft in one of the config files in your ~/.mozilla-thunderbird
directory, that could very well have caused the second step above (child window rendering) to fail.