Author: Antonio Cuni <anto.c...@gmail.com> Branch: fix-vmprof-stacklet-switch Changeset: r93036:52a6650ba479 Date: 2017-11-15 15:49 +0100 http://bitbucket.org/pypy/pypy/changeset/52a6650ba479/
Log: add a test which is failing (i.e., segfaulting) on default, and that it seems to be fixed on this branch diff --git a/pypy/module/_continuation/test/test_translated.py b/pypy/module/_continuation/test/test_translated.py --- a/pypy/module/_continuation/test/test_translated.py +++ b/pypy/module/_continuation/test/test_translated.py @@ -5,6 +5,7 @@ py.test.skip("to run on top of a translated pypy-c") import sys, random +from rpython.tool.udir import udir # ____________________________________________________________ @@ -92,6 +93,33 @@ from pypy.conftest import option if not option.runappdirect: py.test.skip("meant only for -A run") + cls.w_vmprof_file = cls.space.wrap(str(udir.join('profile.vmprof'))) + + def test_vmprof(self): + """ + The point of this test is to check that we do NOT segfault. In + particular, we need to ensure that vmprof does not sample the stack in + the middle of a switch, else we read nonsense. + """ + try: + import _vmprof + except ImportError: + py.test.skip("no _vmprof") + # + def switch_forever(c): + while True: + c.switch() + # + f = open(self.vmprof_file, 'w+b') + _vmprof.enable(f.fileno(), 1/250.0, False, False, False, False) + c = _continuation.continulet(switch_forever) + for i in range(10**7): + if i % 100000 == 0: + print i + c.switch() + _vmprof.disable() + f.close() + def _setup(): for _i in range(20): @@ -124,7 +152,8 @@ try: import thread except ImportError: - py.test.skip("no threads") + py.test.ski + p("no threads") ts = [ThreadTest(thread.allocate_lock()) for i in range(5)] for t in ts: thread.start_new_thread(t.run, ()) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit