[Python-Dev] Breaking bug #411881 into manageable pieces (original) (raw)

Tim Peters tim.one@comcast.net
Tue, 19 Mar 2002 22:30:33 -0500


[Skip Montanaro]

... Attached are the notes I took while picking through the source.

If everyone would do the sensible thing and upgrade to Outlook, they'd have no trouble reading your notes .

doctest.py: I Trust Tim (tm)

Me too.  The first bare except is exec'ing arbitrary user-supplied
code, and needs to catch everything.  The second needs to ignore
any exception that may be raised by a user-define __str__, and
that's any exception whatsoever, so ditto.

threading.py: I Trust Tim.

The first needs to catch any exception that may leak out of the
user's thread code, so can't be limited.  The second is lazy:

try:
    self.__delete()
except:
    pass

but can't be made stronger without guessing at all the exceptions
self.__delete() may raise.  You should shame Guido into catching
the exceptions he thinks are "normal" in the body of self.__delete,
and stop catching any at its call site.  The answers aren't obvious
to me, but I'm afraid this is one of those contexts where we can
get into non-obvious trouble due to module globals getting None'd
out when Python is shutting down.  Better a Big Hammer than bogus
shutdown errors.