Tim Peters wrote:
Florent's DeadlockDebugger in turn builds on an external C threadframe module:

    http://www.majid.info/mylos/stories/2004/06/10/threadframe.html

Folding the functionality of that (or similar functionality) into the
core would, IMO, be a valuable addition for 2.5, and would make an
excellent intro project for an aspiring contributor interested in how
threads work in CPython (what this module does is conceptually
simple).  It belongs in the core because it's not safe to chase the
tstate chain without holding pystate.c's internal head_mutex lock
(holding the GIL isn't enough -- it's normal practice to call
PyThreadState_Delete() while not holding the GIL).

I'd do it myself (and maybe I will anyway), but this really would make
a good (finite; conceptually simple) project for someone who wants to
gain Python developer experience.

Since I started this, I might as well finish it. I do have some Python developer experience (hey, I even voted for comp.lang.python back when...) but not in the core interpreter itself.


I suspect integrating this feature (let's call it sys._current_frames() for the sake of argument, although it probably belongs in the threads module) in the core is not going to be quite as trivial as you say, as there are potential memory leaks. If the function returns a dictionary, it should probably be a weak dict to avoid a circular reference between the frame of the thread that calls _current_frames and its locals that contain the returned dictionary. But that would also mean the references to other threads' frames are going to be weak, thus not allowing the current thread to inspect their locals and backtraces at will as those weak references may be broken.

--
Fazal Majid                                             Email:  [EMAIL 
PROTECTED]
                                                                Home:   +1 415 
359-0918
1111 Jones Apt. 1                                       Cell:           +1 415 
244-1337
San Francisco, CA 94109, USA            Web:    www.majid.info

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to