2014-07-04 16:52 GMT+02:00 Guido van Rossum <[email protected]>:
> But wouldn't keeping the traceback (on cancel) be just as detrimental as
> keeping the callback/args?

_source_traceback is not a Python traceback object, it's the result of
traceback.extract_stack(). I chose this function because it avoids
introducing reference cycle. It would be annoying to add reference
cycles in debug mode, while the debug mode is usually used to debug
tricky issues like reference cycles :-)

Storing the traceback as a list has a nice side effect: it's possible
to hide "internal" calls to only show the traceback of the user code.
For example, async() truncates the traceback to hide the call to
Task() constructor. So you only see the call to async().

Storing extract_stack() is maybe more expensive than storing a
traceback object, but I don't care of performances in debug mode. I
designed the debug mode to be able to call more expensive code (in
debug mode) :-)

Victor

Reply via email to