The CGI interface is a binary stream, because it is pumped directly to/from the HTTP protocol, which is a binary stream.
Hence, cgitb.py should produce binary output. Presently, it produces text output.
When one sets stdout to a binary stream, and then cgitb intercepts an error, cgitb fails.
Demonstration of problem:
import sys
import traceback
sys.stdout = open("sob", "wb") # WSGI sez data should be binary, so stdout should be binary???
import cgitb
sys.stdout.write(b"out")
fhb = open("fhb", "wb")
cgitb.enable()
fhb.write("abcdef") # try writing non-binary to binary file. Expect an error, of course. |