Just in case someone else might have a clue what is going on: that error is raised because there is an attribute in the HTTP request named "wsgi_environ" and that attribute has an invalid value. I don't know why such an attribute might exist.
Possibilities I can think of:
- calibre is running behind a reverse proxy that uses a WSGI module.
- cherrypy is looking at some environment variable that sets up WSGI.
- there is something installed that is getting between the network and calibre, adding attributes to the request. "Something" would most likely be some kind of security software.