I fixed the print problem. A method (in TOB Visibility) was being called after the printer shell was closed/destroyed. I don't know why. Actually I don't know how it is ever called but it is. I put code in to test for the shell being destroyed and exit the method.
The method ends pages and starts new pages if needed and ends the job when all pages are done. When it is called after the job has ended and the shell destroyed, it thinks it is at the beginning and tries to end and then start new pages. When a new "real" print job starts, things are messed up.
I can see where the call back is added for this method but don't see where the event is signaled. So, I can't see why it is signaled after the job is closed and the shell destroyed. Anyway, testing to see if the shell is destroyed and jumping around the code fixes the problem.