A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2003-February/033686.html below:

[Python-Dev] Traceback problem

[Python-Dev] Traceback problemChristian Tismer tismer@tismer.com
Wed, 26 Feb 2003 03:40:11 +0100
Guido van Rossum wrote:
> p.s.: I would probably have done the exception saving
> in the caller's frame, where it belongs, IMHO.
> 
> I'm going to see if this is feasible.  The current method is almost
> certainly more efficient, but seems very backwards.
> 
> 
> Watch out though.  There are situations where an exception needs to be
> stored but no frame is available (when executing purely in C).  There
> is always a thread state.

I've been sitting a while over this puzzle now.

tstate has two different kinds of exceptions:
There are tstate->exc_XXX and tstate->curexc_XXX.

I have been searching through the whole source trunk
to validate my thought:

All internal stuff is only concerned with handling
tstate->curexc_XXX.
The tstate->exc_XXX is *only* used in ceval.c .

References to tstate->exc_XXX are only in
pystate.c (clearing stuff) and sysmodule.c (accessing stuff).
The only place where tstate->exc_XXX is filled with life
is ceval.c, which indicates that this is purely interpreter-
-related and has nothing to do with the internal exception
state. It is eval_frame which checks for exceptions, normalizes
them and turns them into interpreter-level exceptions,
around line 2360 of ceval.c .

After stating that, I conclude that tstate.exc_XXX can only
be in use if there is an existing interpreter with an existing
frame. Nobody else makes use of this structure.
So, whenever you have to save this, you can expect a valid
frame waiting in f_back that will be able to take it.

(This all under the maybe false assumption that I'm not wrong).

Still not proposing a change. But thanks for the time,
I understood quite a lot more of the internals, now.

all the best -- chris

-- 
Christian Tismer             :^)   <mailto:tismer@tismer.com>
Mission Impossible 5oftware  :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9a     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 89 09 53 34  home +49 30 802 86 56  pager +49 173 24 18 776
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/





RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4