-
- Notifications
You must be signed in to change notification settings - Fork 2.9k
Closed
Closed
Copy link
Labels
plugin: xdistrelated to the xdist external pluginrelated to the xdist external plugintype: bugproblem that needs to be addressedproblem that needs to be addressedtype: regressionindicates a problem that was introduced in a release which was working previouslyindicates a problem that was introduced in a release which was working previously
Description
This simple test testCrashXdist1
crashs pytest when xdist is used. It seems to start when pytest==5.1.2 is used. When using pytest==5.1.1, pytest does not crash and ValueError is raised correctly. My OS is linux.
The most likely cause is this change although I'm not sure: #5786
def badFunc(): raise ValueError() def testCrashXdist1(): import multiprocessing with multiprocessing.Pool(1) as pool: assert pool.apply(badFunc) def testCrashXdist2(): assert badFunc()
$ py.test testcrash.py -n1 -k testCrashXdist1 ============================================================================================================ test session starts ============================================================================================================ platform linux -- Python 3.6.5, pytest-5.1.2, py-1.8.0, pluggy-0.13.0 rootdir: /tmp/crash plugins: forked-1.1.1, xdist-1.29.0 gw0 [1] INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/main.py", line 191, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/main.py", line 235, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/hooks.py", line 286, in __call__ INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 92, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 86, in <lambda> INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False, INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 208, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 80, in get_result INTERNALERROR> raise ex[1].with_traceback(ex[2]) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 187, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/xdist/remote.py", line 71, in pytest_runtestloop INTERNALERROR> self.run_one_test(torun) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/xdist/remote.py", line 85, in run_one_test INTERNALERROR> self.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/hooks.py", line 286, in __call__ INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 92, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 86, in <lambda> INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False, INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 208, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 80, in get_result INTERNALERROR> raise ex[1].with_traceback(ex[2]) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 187, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/runner.py", line 72, in pytest_runtest_protocol INTERNALERROR> runtestprotocol(item, nextitem=nextitem) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/runner.py", line 87, in runtestprotocol INTERNALERROR> reports.append(call_and_report(item, "call", log)) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/runner.py", line 171, in call_and_report INTERNALERROR> hook.pytest_runtest_logreport(report=report) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/hooks.py", line 286, in __call__ INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 92, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 86, in <lambda> INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False, INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 208, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 80, in get_result INTERNALERROR> raise ex[1].with_traceback(ex[2]) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 187, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/xdist/remote.py", line 109, in pytest_runtest_logreport INTERNALERROR> config=self.config, report=report INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/hooks.py", line 286, in __call__ INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 92, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 86, in <lambda> INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False, INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 208, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 80, in get_result INTERNALERROR> raise ex[1].with_traceback(ex[2]) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 187, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/reports.py", line 328, in pytest_report_to_serializable INTERNALERROR> data = report._to_json() INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/reports.py", line 164, in _to_json INTERNALERROR> return _report_to_json(self) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/reports.py", line 394, in _report_to_json INTERNALERROR> d["longrepr"] = serialize_longrepr(report) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/reports.py", line 381, in serialize_longrepr INTERNALERROR> serialize_repr_crash(repr_crash), INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/reports.py", line 367, in serialize_repr_crash INTERNALERROR> return reprcrash.__dict__.copy() INTERNALERROR> AttributeError: 'NoneType' object has no attribute '__dict__' INTERNALERROR> Traceback (most recent call last): INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/main.py", line 191, in wrap_session INTERNALERROR> session.exitstatus = doit(config, session) or 0 INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/_pytest/main.py", line 235, in _main INTERNALERROR> config.hook.pytest_runtestloop(session=session) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/hooks.py", line 286, in __call__ INTERNALERROR> return self._hookexec(self, self.get_hookimpls(), kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 92, in _hookexec INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/manager.py", line 86, in <lambda> INTERNALERROR> firstresult=hook.spec.opts.get("firstresult") if hook.spec else False, INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 208, in _multicall INTERNALERROR> return outcome.get_result() INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 80, in get_result INTERNALERROR> raise ex[1].with_traceback(ex[2]) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/pluggy/callers.py", line 187, in _multicall INTERNALERROR> res = hook_impl.function(*args) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/xdist/dsession.py", line 115, in pytest_runtestloop INTERNALERROR> self.loop_once() INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/xdist/dsession.py", line 138, in loop_once INTERNALERROR> call(**kwargs) INTERNALERROR> File "/tmp/testpytestvenv/lib/python3.6/site-packages/xdist/dsession.py", line 180, in worker_workerfinished INTERNALERROR> assert not crashitem, (crashitem, node) INTERNALERROR> AssertionError: ('testcrash.py::testCrashXdist1', <WorkerController gw0>) INTERNALERROR> assert not 'testcrash.py::testCrashXdist1'
$ pip list Package Version ------------------ ------- apipkg 1.5 atomicwrites 1.3.0 attrs 19.3.0 execnet 1.7.1 importlib-metadata 0.23 more-itertools 7.2.0 packaging 19.2 pip 19.3 pluggy 0.13.0 py 1.8.0 pyparsing 2.4.2 pytest 5.1.2 pytest-forked 1.1.1 pytest-xdist 1.29.0 setuptools 41.4.0 six 1.12.0 wcwidth 0.1.7 wheel 0.33.6 zipp 0.6.0
mpasternak
Metadata
Metadata
Assignees
Labels
plugin: xdistrelated to the xdist external pluginrelated to the xdist external plugintype: bugproblem that needs to be addressedproblem that needs to be addressedtype: regressionindicates a problem that was introduced in a release which was working previouslyindicates a problem that was introduced in a release which was working previously