mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
#1019882: if start() and stop() were not in the same stack frame, stats.load() would crash with IndexError.
This commit is contained in:
parent
05f819b6e9
commit
a491727ded
3 changed files with 20 additions and 1 deletions
|
@ -106,7 +106,10 @@ class LogReader:
|
|||
return what, t, tdelta
|
||||
|
||||
if what == WHAT_EXIT:
|
||||
return what, self._pop(), tdelta
|
||||
try:
|
||||
return what, self._pop(), tdelta
|
||||
except IndexError:
|
||||
raise StopIteration
|
||||
|
||||
if what == WHAT_LINENO:
|
||||
filename, firstlineno, funcname = self._stack[-1]
|
||||
|
|
|
@ -10,6 +10,7 @@ from test import test_support
|
|||
# Silence Py3k warning
|
||||
hotshot = test_support.import_module('hotshot', deprecated=True)
|
||||
from hotshot.log import ENTER, EXIT, LINE
|
||||
from hotshot import stats
|
||||
|
||||
|
||||
def shortfilename(fn):
|
||||
|
@ -136,6 +137,19 @@ class HotShotTestCase(unittest.TestCase):
|
|||
emptyfile.close()
|
||||
gc.collect()
|
||||
|
||||
def test_load_stats(self):
|
||||
def start(prof):
|
||||
prof.start()
|
||||
# Make sure stats can be loaded when start and stop of profiler
|
||||
# are not executed in the same stack frame.
|
||||
profiler = self.new_profiler()
|
||||
start(profiler)
|
||||
profiler.stop()
|
||||
profiler.close()
|
||||
stats.load(self.logfn)
|
||||
os.unlink(self.logfn)
|
||||
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(HotShotTestCase)
|
||||
|
||||
|
|
|
@ -64,6 +64,8 @@ Library
|
|||
Extension Modules
|
||||
-----------------
|
||||
|
||||
- Issue #1019882: Fix IndexError when loading certain hotshot stats.
|
||||
|
||||
- Issue #9422: Fix memory leak when re-initializing a struct.Struct object.
|
||||
|
||||
- Issue #7900: The getgroups(2) system call on MacOSX behaves rather oddly
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue