My guess is that the socket error that is triggering the error is not an "Address already in use" error, although what else it might be I don't know. What happens if you replace the "raise errors.CannotBindAddress(...)" line with a plain "raise"? (i.e. reraise the original exception)
Something a bit funny is going on indeed. On my Ubuntu intrepid laptop doing "bzr serve" in two terminals triggers a normal error, not a traceback:
$ bzr serve
bzr: ERROR: Cannot bind address "None:4155": Address already in use.
My guess is that the socket error that is triggering the error is not an "Address already in use" error, although what else it might be I don't know. What happens if you replace the "raise errors. CannotBindAddre ss(...) " line with a plain "raise"? (i.e. reraise the original exception)