Opened at 2010-04-13T04:21:27Z
Last modified at 2010-05-04T03:50:19Z
#1021 new defect
report all exceptions
Reported by: | zooko | Owned by: | warner |
---|---|---|---|
Priority: | major | Milestone: | eventually |
Component: | code | Version: | 1.6.1 |
Keywords: | logging foolscap error | Cc: | |
Launchpad Bug: |
Description
I'm not sure, but it seems like sometimes an exception can be raised from our code or from some libraries that we use and that exception silently vanishes instead of being logged. There is an allegation of this happening in #710 and in #807. Brian: is this possible? How would an exception get caught and not get logged?
Change History (3)
comment:1 Changed at 2010-04-13T04:35:12Z by zooko
comment:2 Changed at 2010-04-13T17:59:36Z by davidsarah
- Keywords error added
comment:3 Changed at 2010-05-04T03:50:19Z by davidsarah
The following code (based on this article) prints all exceptions raised after it is run:
import sys def trace_exceptions(frame, event, arg): if event != 'exception': return co = frame.f_code func_name = co.co_name line_no = frame.f_lineno filename = co.co_filename exc_type, exc_value, exc_traceback = arg print 'Tracing exception: %s "%s" on line %s of %s' % \ (exc_type.__name__, exc_value, line_no, func_name) def trace_calls(frame, event, arg): if event != 'call': return return trace_exceptions sys.settrace(trace_calls)
The results are interesting but quite voluminous, and would need to be filtered.
Note: See
TracTickets for help on using
tickets.
Well I guess the next step, aside from asking Brian to give his opinion on the topic, is to take #710 and #807 and try to turn them into reproducible test cases -- insert an exception-raising statement into the appropriate part of the code (maybe using voidspace mock lib which I like http://www.voidspace.org.uk/python/mock/ ) and then check whether that exception got logged properly.