It's clear that something drastic changed between OpenSSH 2.9 and 3.1 in terms of how it deals with the TTY. The calls to 'raw_pty' and 'log_file' were both causing problems in my module under 3.1, but were harmless under 2.9.
I can probably scrap the 'log_file' method altogether now that I've added the error_handler method in.03. However, I also realized that my current error checking scheme causes a serious drag on performance. I first look for 'bad password', then look for anything else. It's that "anything else" check that's dragging, and I'm inclined to ditch it and look for specific errors only. I'm guessing 99.9% will fall into the "bad password", "permission denied" or "bad host", so I may just check for those.