I can reproduce this one if I hold a strong reference to the UITabBarController subclass before I push it onto the navigation stack. The reference gets overwritten the next time I do it, the controller gets deallocated and I get the crash (with zombies enabled). There's no real reason for this to be strong, so I changed it to weak and it seems to resolve the problem.
This seems to be a timing issue and releasing the reference earlier resolves it in the simplest state. It's possible you have a reference somewhere else (perhaps in a block that's delaying the dealloc and causing your problem).