[Python-Dev] What is the precise problem? [was: Reference cycles in Exception.traceback] (original) (raw)
Guido van Rossum guido at python.org
Mon Mar 10 18:49:40 CET 2014
- Previous message: [Python-Dev] What is the precise problem? [was: Reference cycles in Exception.__traceback__]
- Next message: [Python-Dev] What is the precise problem? [was: Reference cycles in Exception.__traceback__]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Mar 10, 2014 at 10:39 AM, Maciej Fijalkowski <fijall at gmail.com>wrote:
On Mon, Mar 10, 2014 at 7:35 PM, Guido van Rossum <guido at python.org> wrote: > On Mon, Mar 10, 2014 at 10:30 AM, Maciej Fijalkowski <fijall at gmail.com> > wrote: >> >> On Mon, Mar 10, 2014 at 3:23 PM, Victor Stinner >> <victor.stinner at gmail.com> wrote: >> > 2014-03-10 13:11 GMT+01:00 Maciej Fijalkowski <fijall at gmail.com>: >> >> It was agreed long time ago that the immediate finalization is an >> >> implementation specific detail and it's not guaranteed. You should not _>> >> rely on del_s being called timely one way or another. Why would you >> >> require this for the program to work correctly in the particular >> >> example of traceback? >> > >> > For asyncio, it's very useful to see unhandled exceptions as early as >> > possible. Otherwise, your program is blocked and you don't know why. >> > >> > Guido van Rossum suggests to run gc.collect() regulary: >> > http://code.google.com/p/tulip/issues/detail?id=42 >> > >> > Victor >> >> twisted goes around it by attaching errback by hand. Would that work for >> tulip? > > > Can you describe that idea in more detail?
Essentially, instead of relying on deferred to be garbage collected, you attach an errback like this: deferred.addErrback(callbackthatwritestolog) so in case of a failure, you get a traceback directly in the callback immediately, without relying on garbage collection. I'm sorry if I'm using twisted nomenclature here (it's also awfully off-topic for python-dev), but making programs rely on refcounting sounds like a bad idea for us (PyPy).
IIUC the problem that Victor is trying to solve is what to do if nobody thought to attach an errback. Tulip makes a best effort to still log a traceback. We've found this very helpful (just as it is helpful that Python prints a traceback when synchronous code raises an exception and no except clause caught it).
The best effort relies on GC. I am guessing that refcounting makes the traceback appear sooner, but there would be other ways to force it, like occasionally calling gc.collect() during idle times (presumably during busy times it will be called soon enough. :-)
-- --Guido van Rossum (python.org/~guido) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20140310/32a533a3/attachment-0001.html>
- Previous message: [Python-Dev] What is the precise problem? [was: Reference cycles in Exception.__traceback__]
- Next message: [Python-Dev] What is the precise problem? [was: Reference cycles in Exception.__traceback__]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]