App launches, tab bar shows, but content is white and viewWillAppear not called

Upon launch, my app is going through most of the calls I would expect, including applicationDidFinishLaunching:
However, whichever viewController is the selected view controller on launch does not get displayed, nor does it viewWillAppear: method get called. Instead, it shows the tab bar at the bottom, and empty white above up to the status bar (with time, battery, etc.).

Has anybody seen this before?

This bug happens only on iPhone OS 2.x devices. The app is built with iPhone SDK 3.1.2.

What changed with regards to tab bar controllers going from 2.x to 3.x? I cannot find anything indicating a change.