Gabriel Genellina <gagsl-...@yahoo.com.ar> added the comment:

Yes, this is exactly the problem. The execution never goes beyond print
('here'); if you print frame.f_lineno you'll see it blocks at io.py 
line 1036, waiting for a Lock for the second time.

So the trace function cannot use print, not write to regular files 
(because io.py is written in Python). This is a severe limitation.

As a workaround, you can use the _fileio module (written in C):

import _fileio
f = _fileio._FileIO("output.txt", "w", True)

def tracing_func(frame, event, arg):
    f.write('%s %s %d\n' % (frame.f_code.co_filename, frame.f_code.co_
name, frame.f_lineno))
    return tracing_func

A possible fix would be to use an RLock instead of a Lock object, but 
I haven't investigated it.

----------
components: +Library (Lib)
nosy: +gagenellina

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue4716>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to