[issue9285] Add a profile decorator to profile and cProfile
Louie Lu
report at bugs.python.org
Sat Feb 25 02:35:23 EST 2017
Louie Lu added the comment:
giampaolo: it seems that contextmanager will somehow make a bad return in `trace_dispatch_return`:
$ ./python tests.py
# logging.fatal('%r %r' % (frame.f_code.co_name, self.cur[-3]))
CRITICAL:root:'runblock' '' ('profile', 0, '')
CRITICAL:root:'__enter__' '' ('profile', 0, '')
Traceback (most recent call last):
File "tests.py", line 18, in <module>
with p.runblock():
File "/home/grd/Python/cpython/Lib/contextlib.py", line 82, in __enter__
return next(self.gen)
File "/home/grd/Python/cpython/Lib/profile.py", line 256, in trace_dispatch_i
if self.dispatch[event](self, frame, t):
File "/home/grd/Python/cpython/Lib/profile.py", line 346, in trace_dispatch_return
raise AssertionError("Bad return", self.cur[-3])
AssertionError: ('Bad return', ('profile', 0, ''))
I make a workaround in GitHub PR, that skip the assert when self.cur[-3] is ('profile', 0, ''), and this work fine with your test cases.
p.s. I'm not very sure about the assertion of bad return, maybe this workaround may cause some side affact I didn't notice.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue9285>
_______________________________________
More information about the Python-bugs-list
mailing list