Tor integration tests fail on Windows #3347

Open
opened 2020-07-19 13:13:29 +00:00 by sajith · 2 comments

Related to #3320: running integration tests on Windows fails, at least on GitHub Actions. For an example failure, see:

https://github.com/tahoe-lafs/tahoe-lafs/runs/797406097

Related to #3320: running integration tests on Windows fails, at least on GitHub Actions. For an example failure, see: <https://github.com/tahoe-lafs/tahoe-lafs/runs/797406097>
sajith added the
c/dev-infrastructure
p/normal
t/defect
v/unknown
labels 2020-07-19 13:13:29 +00:00
sajith added this to the undecided milestone 2020-07-19 13:13:29 +00:00
Author

GitHub may purge the logs eventually, so here's the failure for future reference:

2020-06-23T00:15:45.2583036Z integration/test_aaa_aardvark.py::test_create_flogger PASSED             [  5%]
2020-06-23T00:15:57.6151796Z integration/test_aaa_aardvark.py::test_create_introducer PASSED          [ 11%]
2020-06-23T00:16:23.5543904Z integration/test_aaa_aardvark.py::test_create_storage PASSED             [ 16%]
2020-06-23T00:16:40.1798875Z integration/test_servers_of_happiness.py::test_upload_immutable PASSED   [ 22%]
2020-06-23T00:17:49.9033565Z integration/test_streaming_logs.py::test_streaming_logs PASSED           [ 27%]
2020-06-23T00:17:50.0034080Z integration/test_tor.py::test_onion_service_storage ERROR                [ 33%]
2020-06-23T00:17:50.4545168Z integration/test_web.py::test_index PASSED                               [ 38%]
2020-06-23T00:17:50.5339962Z integration/test_web.py::test_index_json PASSED                          [ 44%]
2020-06-23T00:17:50.7801376Z integration/test_web.py::test_upload_download PASSED                     [ 50%]
2020-06-23T00:17:50.8310376Z integration/test_web.py::test_put PASSED                                 [ 55%]
2020-06-23T00:17:51.0641041Z integration/test_web.py::test_helper_status PASSED                       [ 61%]
2020-06-23T00:17:52.2467157Z integration/test_web.py::test_deep_stats PASSED                          [ 66%]
2020-06-23T00:17:53.0700293Z integration/test_web.py::test_status PASSED                              [ 72%]
2020-06-23T00:17:58.8040475Z integration/test_web.py::test_directory_deep_check PASSED                [ 77%]
2020-06-23T00:17:58.8255745Z integration/test_web.py::test_storage_info PASSED                        [ 83%]
2020-06-23T00:17:58.8256523Z integration/test_web.py::test_storage_info_json PASSED                   [ 88%]
2020-06-23T00:17:58.8256982Z integration/test_web.py::test_introducer_info PASSED                     [ 94%]
2020-06-23T00:18:01.0832885Z integration/test_web.py::test_mkdir_with_children PASSED                 [100%]
2020-06-23T00:18:01.0906746Z 
2020-06-23T00:18:01.0907325Z =================================== ERRORS ====================================
2020-06-23T00:18:01.0907627Z ________________ ERROR at setup of test_onion_service_storage _________________
2020-06-23T00:18:01.0907836Z 
2020-06-23T00:18:01.0908090Z reactor = <twisted.internet.selectreactor.SelectReactor object at 0x00000000033DE108>
2020-06-23T00:18:01.0908397Z temp_dir = 'c:\\users\\runner~1\\appdata\\local\\temp\\tahoeheselp'
2020-06-23T00:18:01.0908724Z 
2020-06-23T00:18:01.0908971Z     @pytest.fixture(scope='session')
2020-06-23T00:18:01.0909238Z     def chutney(reactor, temp_dir):
2020-06-23T00:18:01.0909489Z         chutney_dir = join(temp_dir, 'chutney')
2020-06-23T00:18:01.0909734Z         mkdir(chutney_dir)
2020-06-23T00:18:01.0909971Z     
2020-06-23T00:18:01.0910206Z         # TODO:
2020-06-23T00:18:01.0910437Z     
2020-06-23T00:18:01.0910648Z         # check for 'tor' binary explicitly and emit a "skip" if we can't
2020-06-23T00:18:01.0910905Z         # find it
2020-06-23T00:18:01.0911136Z     
2020-06-23T00:18:01.0911386Z         # XXX yuck! should add a setup.py to chutney so we can at least
2020-06-23T00:18:01.0911648Z         # "pip install <path to tarball>" and/or depend on chutney in "pip
2020-06-23T00:18:01.0912005Z         # install -e .[dev]" (i.e. in the 'dev' extra)
2020-06-23T00:18:01.0912220Z         #
2020-06-23T00:18:01.0912485Z         # https://trac.torproject.org/projects/tor/ticket/20343
2020-06-23T00:18:01.0912736Z         proto = _DumpOutputProtocol(None)
2020-06-23T00:18:01.0912948Z         reactor.spawnProcess(
2020-06-23T00:18:01.0913158Z             proto,
2020-06-23T00:18:01.0913452Z             'git',
2020-06-23T00:18:01.0913599Z             (
2020-06-23T00:18:01.0913786Z                 'git', 'clone', '--depth=1',
2020-06-23T00:18:01.0913998Z                 'https://git.torproject.org/chutney.git',
2020-06-23T00:18:01.0914204Z                 chutney_dir,
2020-06-23T00:18:01.0914413Z             ),
2020-06-23T00:18:01.0914598Z >           env=environ,
2020-06-23T00:18:01.0914789Z         )
2020-06-23T00:18:01.0914935Z 
2020-06-23T00:18:01.0915080Z integration\conftest.py:384: 
2020-06-23T00:18:01.0915275Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2020-06-23T00:18:01.0915482Z .tox\integration\lib\site-packages\twisted\internet\posixbase.py:353: in spawnProcess
2020-06-23T00:18:01.0917093Z     return Process(self, processProtocol, executable, args, env, path)
2020-06-23T00:18:01.1659932Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2020-06-23T00:18:01.1673656Z 
2020-06-23T00:18:01.1679573Z self = <Process pid=None>
2020-06-23T00:18:01.1682355Z reactor = <twisted.internet.selectreactor.SelectReactor object at 0x00000000033DE108>
2020-06-23T00:18:01.1685766Z protocol = <integration.util._DumpOutputProtocol instance at 0x00000000085AEB88>
2020-06-23T00:18:01.1793792Z command = 'git'
2020-06-23T00:18:01.1804563Z args = ['git', 'clone', '--depth=1', 'https://git.torproject.org/chutney.git', 'c:\users\runner~1\appdata\local\temp\tahoeheselp\chutney']
2020-06-23T00:18:01.1807055Z environment = {'COMSPEC': 'C:\\windows\\system32\\cmd.exe', 'COVERAGE_PROCESS_START': '.coveragerc', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\runneradmin', ...}
2020-06-23T00:18:01.1815417Z path = None
2020-06-23T00:18:01.1999481Z 
2020-06-23T00:18:01.2001061Z     def __init__(self, reactor, protocol, command, args, environment, path):
2020-06-23T00:18:01.2019596Z         """
2020-06-23T00:18:01.2022230Z         Create a new child process.
2020-06-23T00:18:01.2052576Z         """
2020-06-23T00:18:01.2063732Z         _pollingfile._PollingTimer.__init__(self, reactor)
2020-06-23T00:18:01.2072475Z         BaseProcess.__init__(self, protocol)
2020-06-23T00:18:01.2084363Z     
2020-06-23T00:18:01.2085961Z         # security attributes for pipes
2020-06-23T00:18:01.2086536Z         sAttrs = win32security.SECURITY_ATTRIBUTES()
2020-06-23T00:18:01.2086828Z         sAttrs.bInheritHandle = 1
2020-06-23T00:18:01.2217916Z     
2020-06-23T00:18:01.2218420Z         # create the pipes which will connect to the secondary process
2020-06-23T00:18:01.2218727Z         self.hStdoutR, hStdoutW = win32pipe.CreatePipe(sAttrs, 0)
2020-06-23T00:18:01.2219042Z         self.hStderrR, hStderrW = win32pipe.CreatePipe(sAttrs, 0)
2020-06-23T00:18:01.2219342Z         hStdinR, self.hStdinW  = win32pipe.CreatePipe(sAttrs, 0)
2020-06-23T00:18:01.2219763Z     
2020-06-23T00:18:01.2220032Z         win32pipe.SetNamedPipeHandleState(self.hStdinW,
2020-06-23T00:18:01.2220324Z                                           win32pipe.PIPE_NOWAIT,
2020-06-23T00:18:01.2220616Z                                           None,
2020-06-23T00:18:01.2220954Z                                           None)
2020-06-23T00:18:01.2221207Z     
2020-06-23T00:18:01.2221469Z         # set the info structure for the new process.
2020-06-23T00:18:01.2221744Z         StartupInfo = win32process.STARTUPINFO()
2020-06-23T00:18:01.2221974Z         StartupInfo.hStdOutput = hStdoutW
2020-06-23T00:18:01.2222237Z         StartupInfo.hStdError  = hStderrW
2020-06-23T00:18:01.2222500Z         StartupInfo.hStdInput  = hStdinR
2020-06-23T00:18:01.2222770Z         StartupInfo.dwFlags = win32process.STARTF_USESTDHANDLES
2020-06-23T00:18:01.2223026Z     
2020-06-23T00:18:01.2223300Z         # Create new handles whose inheritance property is false
2020-06-23T00:18:01.2223578Z         currentPid = win32api.GetCurrentProcess()
2020-06-23T00:18:01.2223831Z     
2020-06-23T00:18:01.2224129Z         tmp = win32api.DuplicateHandle(currentPid, self.hStdoutR, currentPid, 0, 0,
2020-06-23T00:18:01.2224441Z                                        win32con.DUPLICATE_SAME_ACCESS)
2020-06-23T00:18:01.2224717Z         win32file.CloseHandle(self.hStdoutR)
2020-06-23T00:18:01.2224983Z         self.hStdoutR = tmp
2020-06-23T00:18:01.2225482Z     
2020-06-23T00:18:01.2225890Z         tmp = win32api.DuplicateHandle(currentPid, self.hStderrR, currentPid, 0, 0,
2020-06-23T00:18:01.2226279Z                                        win32con.DUPLICATE_SAME_ACCESS)
2020-06-23T00:18:01.2226656Z         win32file.CloseHandle(self.hStderrR)
2020-06-23T00:18:01.2226914Z         self.hStderrR = tmp
2020-06-23T00:18:01.2227086Z     
2020-06-23T00:18:01.2227308Z         tmp = win32api.DuplicateHandle(currentPid, self.hStdinW, currentPid, 0, 0,
2020-06-23T00:18:01.2227651Z                                        win32con.DUPLICATE_SAME_ACCESS)
2020-06-23T00:18:01.2228065Z         win32file.CloseHandle(self.hStdinW)
2020-06-23T00:18:01.2228304Z         self.hStdinW = tmp
2020-06-23T00:18:01.2228532Z     
2020-06-23T00:18:01.2228780Z         # Add the specified environment to the current environment - this is
2020-06-23T00:18:01.2229044Z         # necessary because certain operations are only supported on Windows
2020-06-23T00:18:01.2229299Z         # if certain environment variables are present.
2020-06-23T00:18:01.2229535Z     
2020-06-23T00:18:01.2229769Z         env = os.environ.copy()
2020-06-23T00:18:01.2230012Z         env.update(environment or {})
2020-06-23T00:18:01.2230212Z         newenv = {}
2020-06-23T00:18:01.2230457Z         for key, value in items(env):
2020-06-23T00:18:01.2230686Z     
2020-06-23T00:18:01.2230922Z             key = _fsdecode(key)
2020-06-23T00:18:01.2231164Z             value = _fsdecode(value)
2020-06-23T00:18:01.2231396Z     
2020-06-23T00:18:01.2231632Z             newenv[key] = value
2020-06-23T00:18:01.2231865Z     
2020-06-23T00:18:01.2232094Z         env = newenv
2020-06-23T00:18:01.2232322Z     
2020-06-23T00:18:01.2232577Z         # Make sure all the arguments are Unicode.
2020-06-23T00:18:01.2232826Z         args = [_fsdecode(x) for x in args]
2020-06-23T00:18:01.2233058Z     
2020-06-23T00:18:01.2233292Z         cmdline = quoteArguments(args)
2020-06-23T00:18:01.2233525Z     
2020-06-23T00:18:01.2233733Z         # The command, too, needs to be Unicode, if it is a value.
2020-06-23T00:18:01.2233989Z         command = _fsdecode(command) if command else command
2020-06-23T00:18:01.2234244Z         path = _fsdecode(path) if path else path
2020-06-23T00:18:01.2234479Z     
2020-06-23T00:18:01.2234720Z         # TODO: error detection here.  See #2787 and #4184.
2020-06-23T00:18:01.2234962Z         def doCreate():
2020-06-23T00:18:01.2235249Z             flags = win32con.CREATE_NO_WINDOW
2020-06-23T00:18:01.2235512Z             self.hProcess, self.hThread, self.pid, dwTid = win32process.CreateProcess(
2020-06-23T00:18:01.2235867Z                 command, cmdline, None, None, 1, flags, env, path, StartupInfo)
2020-06-23T00:18:01.2236116Z         try:
2020-06-23T00:18:01.2236355Z             doCreate()
2020-06-23T00:18:01.2236600Z         except pywintypes.error as pwte:
2020-06-23T00:18:01.2236809Z             if not _invalidWin32App(pwte):
2020-06-23T00:18:01.2237087Z                 # This behavior isn't _really_ documented, but let's make it
2020-06-23T00:18:01.2237352Z                 # consistent with the behavior that is documented.
2020-06-23T00:18:01.2237598Z >               raise OSError(pwte)
2020-06-23T00:18:01.2238987Z E               OSError: (2, 'CreateProcess', 'The system cannot find the file specified.')
2020-06-23T00:18:01.2239225Z 
2020-06-23T00:18:01.2239481Z .tox\integration\lib\site-packages\twisted\internet\_dumbwin32proc.py:232: OSError
2020-06-23T00:18:01.2239757Z ==================== 17 passed, 1 error in 142.26 seconds =====================
2020-06-23T00:18:01.2240128Z ERROR: InvocationError for command 'D:\a\tahoe-lafs\tahoe-lafs\.tox\integration\Scripts\py.test.EXE' --coverage -v integration (exited with code 1)
2020-06-23T00:18:01.2240372Z ___________________________________ summary ___________________________________
2020-06-23T00:18:01.2240590Z ERROR:   integration: commands failed
2020-06-23T00:18:06.4175335Z ##[error]Process completed with exit code 1.
GitHub may purge the logs eventually, so here's the failure for future reference: ``` 2020-06-23T00:15:45.2583036Z integration/test_aaa_aardvark.py::test_create_flogger PASSED [ 5%] 2020-06-23T00:15:57.6151796Z integration/test_aaa_aardvark.py::test_create_introducer PASSED [ 11%] 2020-06-23T00:16:23.5543904Z integration/test_aaa_aardvark.py::test_create_storage PASSED [ 16%] 2020-06-23T00:16:40.1798875Z integration/test_servers_of_happiness.py::test_upload_immutable PASSED [ 22%] 2020-06-23T00:17:49.9033565Z integration/test_streaming_logs.py::test_streaming_logs PASSED [ 27%] 2020-06-23T00:17:50.0034080Z integration/test_tor.py::test_onion_service_storage ERROR [ 33%] 2020-06-23T00:17:50.4545168Z integration/test_web.py::test_index PASSED [ 38%] 2020-06-23T00:17:50.5339962Z integration/test_web.py::test_index_json PASSED [ 44%] 2020-06-23T00:17:50.7801376Z integration/test_web.py::test_upload_download PASSED [ 50%] 2020-06-23T00:17:50.8310376Z integration/test_web.py::test_put PASSED [ 55%] 2020-06-23T00:17:51.0641041Z integration/test_web.py::test_helper_status PASSED [ 61%] 2020-06-23T00:17:52.2467157Z integration/test_web.py::test_deep_stats PASSED [ 66%] 2020-06-23T00:17:53.0700293Z integration/test_web.py::test_status PASSED [ 72%] 2020-06-23T00:17:58.8040475Z integration/test_web.py::test_directory_deep_check PASSED [ 77%] 2020-06-23T00:17:58.8255745Z integration/test_web.py::test_storage_info PASSED [ 83%] 2020-06-23T00:17:58.8256523Z integration/test_web.py::test_storage_info_json PASSED [ 88%] 2020-06-23T00:17:58.8256982Z integration/test_web.py::test_introducer_info PASSED [ 94%] 2020-06-23T00:18:01.0832885Z integration/test_web.py::test_mkdir_with_children PASSED [100%] 2020-06-23T00:18:01.0906746Z 2020-06-23T00:18:01.0907325Z =================================== ERRORS ==================================== 2020-06-23T00:18:01.0907627Z ________________ ERROR at setup of test_onion_service_storage _________________ 2020-06-23T00:18:01.0907836Z 2020-06-23T00:18:01.0908090Z reactor = <twisted.internet.selectreactor.SelectReactor object at 0x00000000033DE108> 2020-06-23T00:18:01.0908397Z temp_dir = 'c:\\users\\runner~1\\appdata\\local\\temp\\tahoeheselp' 2020-06-23T00:18:01.0908724Z 2020-06-23T00:18:01.0908971Z @pytest.fixture(scope='session') 2020-06-23T00:18:01.0909238Z def chutney(reactor, temp_dir): 2020-06-23T00:18:01.0909489Z chutney_dir = join(temp_dir, 'chutney') 2020-06-23T00:18:01.0909734Z mkdir(chutney_dir) 2020-06-23T00:18:01.0909971Z 2020-06-23T00:18:01.0910206Z # TODO: 2020-06-23T00:18:01.0910437Z 2020-06-23T00:18:01.0910648Z # check for 'tor' binary explicitly and emit a "skip" if we can't 2020-06-23T00:18:01.0910905Z # find it 2020-06-23T00:18:01.0911136Z 2020-06-23T00:18:01.0911386Z # XXX yuck! should add a setup.py to chutney so we can at least 2020-06-23T00:18:01.0911648Z # "pip install <path to tarball>" and/or depend on chutney in "pip 2020-06-23T00:18:01.0912005Z # install -e .[dev]" (i.e. in the 'dev' extra) 2020-06-23T00:18:01.0912220Z # 2020-06-23T00:18:01.0912485Z # https://trac.torproject.org/projects/tor/ticket/20343 2020-06-23T00:18:01.0912736Z proto = _DumpOutputProtocol(None) 2020-06-23T00:18:01.0912948Z reactor.spawnProcess( 2020-06-23T00:18:01.0913158Z proto, 2020-06-23T00:18:01.0913452Z 'git', 2020-06-23T00:18:01.0913599Z ( 2020-06-23T00:18:01.0913786Z 'git', 'clone', '--depth=1', 2020-06-23T00:18:01.0913998Z 'https://git.torproject.org/chutney.git', 2020-06-23T00:18:01.0914204Z chutney_dir, 2020-06-23T00:18:01.0914413Z ), 2020-06-23T00:18:01.0914598Z > env=environ, 2020-06-23T00:18:01.0914789Z ) 2020-06-23T00:18:01.0914935Z 2020-06-23T00:18:01.0915080Z integration\conftest.py:384: 2020-06-23T00:18:01.0915275Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2020-06-23T00:18:01.0915482Z .tox\integration\lib\site-packages\twisted\internet\posixbase.py:353: in spawnProcess 2020-06-23T00:18:01.0917093Z return Process(self, processProtocol, executable, args, env, path) 2020-06-23T00:18:01.1659932Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2020-06-23T00:18:01.1673656Z 2020-06-23T00:18:01.1679573Z self = <Process pid=None> 2020-06-23T00:18:01.1682355Z reactor = <twisted.internet.selectreactor.SelectReactor object at 0x00000000033DE108> 2020-06-23T00:18:01.1685766Z protocol = <integration.util._DumpOutputProtocol instance at 0x00000000085AEB88> 2020-06-23T00:18:01.1793792Z command = 'git' 2020-06-23T00:18:01.1804563Z args = ['git', 'clone', '--depth=1', 'https://git.torproject.org/chutney.git', 'c:\users\runner~1\appdata\local\temp\tahoeheselp\chutney'] 2020-06-23T00:18:01.1807055Z environment = {'COMSPEC': 'C:\\windows\\system32\\cmd.exe', 'COVERAGE_PROCESS_START': '.coveragerc', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\runneradmin', ...} 2020-06-23T00:18:01.1815417Z path = None 2020-06-23T00:18:01.1999481Z 2020-06-23T00:18:01.2001061Z def __init__(self, reactor, protocol, command, args, environment, path): 2020-06-23T00:18:01.2019596Z """ 2020-06-23T00:18:01.2022230Z Create a new child process. 2020-06-23T00:18:01.2052576Z """ 2020-06-23T00:18:01.2063732Z _pollingfile._PollingTimer.__init__(self, reactor) 2020-06-23T00:18:01.2072475Z BaseProcess.__init__(self, protocol) 2020-06-23T00:18:01.2084363Z 2020-06-23T00:18:01.2085961Z # security attributes for pipes 2020-06-23T00:18:01.2086536Z sAttrs = win32security.SECURITY_ATTRIBUTES() 2020-06-23T00:18:01.2086828Z sAttrs.bInheritHandle = 1 2020-06-23T00:18:01.2217916Z 2020-06-23T00:18:01.2218420Z # create the pipes which will connect to the secondary process 2020-06-23T00:18:01.2218727Z self.hStdoutR, hStdoutW = win32pipe.CreatePipe(sAttrs, 0) 2020-06-23T00:18:01.2219042Z self.hStderrR, hStderrW = win32pipe.CreatePipe(sAttrs, 0) 2020-06-23T00:18:01.2219342Z hStdinR, self.hStdinW = win32pipe.CreatePipe(sAttrs, 0) 2020-06-23T00:18:01.2219763Z 2020-06-23T00:18:01.2220032Z win32pipe.SetNamedPipeHandleState(self.hStdinW, 2020-06-23T00:18:01.2220324Z win32pipe.PIPE_NOWAIT, 2020-06-23T00:18:01.2220616Z None, 2020-06-23T00:18:01.2220954Z None) 2020-06-23T00:18:01.2221207Z 2020-06-23T00:18:01.2221469Z # set the info structure for the new process. 2020-06-23T00:18:01.2221744Z StartupInfo = win32process.STARTUPINFO() 2020-06-23T00:18:01.2221974Z StartupInfo.hStdOutput = hStdoutW 2020-06-23T00:18:01.2222237Z StartupInfo.hStdError = hStderrW 2020-06-23T00:18:01.2222500Z StartupInfo.hStdInput = hStdinR 2020-06-23T00:18:01.2222770Z StartupInfo.dwFlags = win32process.STARTF_USESTDHANDLES 2020-06-23T00:18:01.2223026Z 2020-06-23T00:18:01.2223300Z # Create new handles whose inheritance property is false 2020-06-23T00:18:01.2223578Z currentPid = win32api.GetCurrentProcess() 2020-06-23T00:18:01.2223831Z 2020-06-23T00:18:01.2224129Z tmp = win32api.DuplicateHandle(currentPid, self.hStdoutR, currentPid, 0, 0, 2020-06-23T00:18:01.2224441Z win32con.DUPLICATE_SAME_ACCESS) 2020-06-23T00:18:01.2224717Z win32file.CloseHandle(self.hStdoutR) 2020-06-23T00:18:01.2224983Z self.hStdoutR = tmp 2020-06-23T00:18:01.2225482Z 2020-06-23T00:18:01.2225890Z tmp = win32api.DuplicateHandle(currentPid, self.hStderrR, currentPid, 0, 0, 2020-06-23T00:18:01.2226279Z win32con.DUPLICATE_SAME_ACCESS) 2020-06-23T00:18:01.2226656Z win32file.CloseHandle(self.hStderrR) 2020-06-23T00:18:01.2226914Z self.hStderrR = tmp 2020-06-23T00:18:01.2227086Z 2020-06-23T00:18:01.2227308Z tmp = win32api.DuplicateHandle(currentPid, self.hStdinW, currentPid, 0, 0, 2020-06-23T00:18:01.2227651Z win32con.DUPLICATE_SAME_ACCESS) 2020-06-23T00:18:01.2228065Z win32file.CloseHandle(self.hStdinW) 2020-06-23T00:18:01.2228304Z self.hStdinW = tmp 2020-06-23T00:18:01.2228532Z 2020-06-23T00:18:01.2228780Z # Add the specified environment to the current environment - this is 2020-06-23T00:18:01.2229044Z # necessary because certain operations are only supported on Windows 2020-06-23T00:18:01.2229299Z # if certain environment variables are present. 2020-06-23T00:18:01.2229535Z 2020-06-23T00:18:01.2229769Z env = os.environ.copy() 2020-06-23T00:18:01.2230012Z env.update(environment or {}) 2020-06-23T00:18:01.2230212Z newenv = {} 2020-06-23T00:18:01.2230457Z for key, value in items(env): 2020-06-23T00:18:01.2230686Z 2020-06-23T00:18:01.2230922Z key = _fsdecode(key) 2020-06-23T00:18:01.2231164Z value = _fsdecode(value) 2020-06-23T00:18:01.2231396Z 2020-06-23T00:18:01.2231632Z newenv[key] = value 2020-06-23T00:18:01.2231865Z 2020-06-23T00:18:01.2232094Z env = newenv 2020-06-23T00:18:01.2232322Z 2020-06-23T00:18:01.2232577Z # Make sure all the arguments are Unicode. 2020-06-23T00:18:01.2232826Z args = [_fsdecode(x) for x in args] 2020-06-23T00:18:01.2233058Z 2020-06-23T00:18:01.2233292Z cmdline = quoteArguments(args) 2020-06-23T00:18:01.2233525Z 2020-06-23T00:18:01.2233733Z # The command, too, needs to be Unicode, if it is a value. 2020-06-23T00:18:01.2233989Z command = _fsdecode(command) if command else command 2020-06-23T00:18:01.2234244Z path = _fsdecode(path) if path else path 2020-06-23T00:18:01.2234479Z 2020-06-23T00:18:01.2234720Z # TODO: error detection here. See #2787 and #4184. 2020-06-23T00:18:01.2234962Z def doCreate(): 2020-06-23T00:18:01.2235249Z flags = win32con.CREATE_NO_WINDOW 2020-06-23T00:18:01.2235512Z self.hProcess, self.hThread, self.pid, dwTid = win32process.CreateProcess( 2020-06-23T00:18:01.2235867Z command, cmdline, None, None, 1, flags, env, path, StartupInfo) 2020-06-23T00:18:01.2236116Z try: 2020-06-23T00:18:01.2236355Z doCreate() 2020-06-23T00:18:01.2236600Z except pywintypes.error as pwte: 2020-06-23T00:18:01.2236809Z if not _invalidWin32App(pwte): 2020-06-23T00:18:01.2237087Z # This behavior isn't _really_ documented, but let's make it 2020-06-23T00:18:01.2237352Z # consistent with the behavior that is documented. 2020-06-23T00:18:01.2237598Z > raise OSError(pwte) 2020-06-23T00:18:01.2238987Z E OSError: (2, 'CreateProcess', 'The system cannot find the file specified.') 2020-06-23T00:18:01.2239225Z 2020-06-23T00:18:01.2239481Z .tox\integration\lib\site-packages\twisted\internet\_dumbwin32proc.py:232: OSError 2020-06-23T00:18:01.2239757Z ==================== 17 passed, 1 error in 142.26 seconds ===================== 2020-06-23T00:18:01.2240128Z ERROR: InvocationError for command 'D:\a\tahoe-lafs\tahoe-lafs\.tox\integration\Scripts\py.test.EXE' --coverage -v integration (exited with code 1) 2020-06-23T00:18:01.2240372Z ___________________________________ summary ___________________________________ 2020-06-23T00:18:01.2240590Z ERROR: integration: commands failed 2020-06-23T00:18:06.4175335Z ##[error]Process completed with exit code 1. ```
Author

Looks like the failure is in cloning chutney from https://git.torproject.org/chutney.git, but it is unclear why.

Looks like the failure is in cloning chutney from <https://git.torproject.org/chutney.git>, but it is unclear why.
sajith self-assigned this 2020-07-19 14:39:44 +00:00
Sign in to join this conversation.
No labels
c/code
c/code-dirnodes
c/code-encoding
c/code-frontend
c/code-frontend-cli
c/code-frontend-ftp-sftp
c/code-frontend-magic-folder
c/code-frontend-web
c/code-mutable
c/code-network
c/code-nodeadmin
c/code-peerselection
c/code-storage
c/contrib
c/dev-infrastructure
c/docs
c/operational
c/packaging
c/unknown
c/website
kw:2pc
kw:410
kw:9p
kw:ActivePerl
kw:AttributeError
kw:DataUnavailable
kw:DeadReferenceError
kw:DoS
kw:FileZilla
kw:GetLastError
kw:IFinishableConsumer
kw:K
kw:LeastAuthority
kw:Makefile
kw:RIStorageServer
kw:StringIO
kw:UncoordinatedWriteError
kw:about
kw:access
kw:access-control
kw:accessibility
kw:accounting
kw:accounting-crawler
kw:add-only
kw:aes
kw:aesthetics
kw:alias
kw:aliases
kw:aliens
kw:allmydata
kw:amazon
kw:ambient
kw:annotations
kw:anonymity
kw:anonymous
kw:anti-censorship
kw:api_auth_token
kw:appearance
kw:appname
kw:apport
kw:archive
kw:archlinux
kw:argparse
kw:arm
kw:assertion
kw:attachment
kw:auth
kw:authentication
kw:automation
kw:avahi
kw:availability
kw:aws
kw:azure
kw:backend
kw:backoff
kw:backup
kw:backupdb
kw:backward-compatibility
kw:bandwidth
kw:basedir
kw:bayes
kw:bbfreeze
kw:beta
kw:binaries
kw:binutils
kw:bitcoin
kw:bitrot
kw:blacklist
kw:blocker
kw:blocks-cloud-deployment
kw:blocks-cloud-merge
kw:blocks-magic-folder-merge
kw:blocks-merge
kw:blocks-raic
kw:blocks-release
kw:blog
kw:bom
kw:bonjour
kw:branch
kw:branding
kw:breadcrumbs
kw:brians-opinion-needed
kw:browser
kw:bsd
kw:build
kw:build-helpers
kw:buildbot
kw:builders
kw:buildslave
kw:buildslaves
kw:cache
kw:cap
kw:capleak
kw:captcha
kw:cast
kw:centos
kw:cffi
kw:chacha
kw:charset
kw:check
kw:checker
kw:chroot
kw:ci
kw:clean
kw:cleanup
kw:cli
kw:cloud
kw:cloud-backend
kw:cmdline
kw:code
kw:code-checks
kw:coding-standards
kw:coding-tools
kw:coding_tools
kw:collection
kw:compatibility
kw:completion
kw:compression
kw:confidentiality
kw:config
kw:configuration
kw:configuration.txt
kw:conflict
kw:connection
kw:connectivity
kw:consistency
kw:content
kw:control
kw:control.furl
kw:convergence
kw:coordination
kw:copyright
kw:corruption
kw:cors
kw:cost
kw:coverage
kw:coveralls
kw:coveralls.io
kw:cpu-watcher
kw:cpyext
kw:crash
kw:crawler
kw:crawlers
kw:create-container
kw:cruft
kw:crypto
kw:cryptography
kw:cryptography-lib
kw:cryptopp
kw:csp
kw:curl
kw:cutoff-date
kw:cycle
kw:cygwin
kw:d3
kw:daemon
kw:darcs
kw:darcsver
kw:database
kw:dataloss
kw:db
kw:dead-code
kw:deb
kw:debian
kw:debug
kw:deep-check
kw:defaults
kw:deferred
kw:delete
kw:deletion
kw:denial-of-service
kw:dependency
kw:deployment
kw:deprecation
kw:desert-island
kw:desert-island-build
kw:design
kw:design-review-needed
kw:detection
kw:dev-infrastructure
kw:devpay
kw:directory
kw:directory-page
kw:dirnode
kw:dirnodes
kw:disconnect
kw:discovery
kw:disk
kw:disk-backend
kw:distribute
kw:distutils
kw:dns
kw:do_http
kw:doc-needed
kw:docker
kw:docs
kw:docs-needed
kw:dokan
kw:dos
kw:download
kw:downloader
kw:dragonfly
kw:drop-upload
kw:duplicity
kw:dusty
kw:earth-dragon
kw:easy
kw:ec2
kw:ecdsa
kw:ed25519
kw:egg-needed
kw:eggs
kw:eliot
kw:email
kw:empty
kw:encoding
kw:endpoint
kw:enterprise
kw:enum34
kw:environment
kw:erasure
kw:erasure-coding
kw:error
kw:escaping
kw:etag
kw:etch
kw:evangelism
kw:eventual
kw:example
kw:excess-authority
kw:exec
kw:exocet
kw:expiration
kw:extensibility
kw:extension
kw:failure
kw:fedora
kw:ffp
kw:fhs
kw:figleaf
kw:file
kw:file-descriptor
kw:filename
kw:filesystem
kw:fileutil
kw:fips
kw:firewall
kw:first
kw:floatingpoint
kw:flog
kw:foolscap
kw:forward-compatibility
kw:forward-secrecy
kw:forwarding
kw:free
kw:freebsd
kw:frontend
kw:fsevents
kw:ftp
kw:ftpd
kw:full
kw:furl
kw:fuse
kw:garbage
kw:garbage-collection
kw:gateway
kw:gatherer
kw:gc
kw:gcc
kw:gentoo
kw:get
kw:git
kw:git-annex
kw:github
kw:glacier
kw:globalcaps
kw:glossary
kw:google-cloud-storage
kw:google-drive-backend
kw:gossip
kw:governance
kw:grid
kw:grid-manager
kw:gridid
kw:gridsync
kw:grsec
kw:gsoc
kw:gvfs
kw:hackfest
kw:hacktahoe
kw:hang
kw:hardlink
kw:heartbleed
kw:heisenbug
kw:help
kw:helper
kw:hint
kw:hooks
kw:how
kw:how-to
kw:howto
kw:hp
kw:hp-cloud
kw:html
kw:http
kw:https
kw:i18n
kw:i2p
kw:i2p-collab
kw:illustration
kw:image
kw:immutable
kw:impressions
kw:incentives
kw:incident
kw:init
kw:inlineCallbacks
kw:inotify
kw:install
kw:installer
kw:integration
kw:integration-test
kw:integrity
kw:interactive
kw:interface
kw:interfaces
kw:interoperability
kw:interstellar-exploration
kw:introducer
kw:introduction
kw:iphone
kw:ipkg
kw:iputil
kw:ipv6
kw:irc
kw:jail
kw:javascript
kw:joke
kw:jquery
kw:json
kw:jsui
kw:junk
kw:key-value-store
kw:kfreebsd
kw:known-issue
kw:konqueror
kw:kpreid
kw:kvm
kw:l10n
kw:lae
kw:large
kw:latency
kw:leak
kw:leasedb
kw:leases
kw:libgmp
kw:license
kw:licenss
kw:linecount
kw:link
kw:linux
kw:lit
kw:localhost
kw:location
kw:locking
kw:logging
kw:logo
kw:loopback
kw:lucid
kw:mac
kw:macintosh
kw:magic-folder
kw:manhole
kw:manifest
kw:manual-test-needed
kw:map
kw:mapupdate
kw:max_space
kw:mdmf
kw:memcheck
kw:memory
kw:memory-leak
kw:mesh
kw:metadata
kw:meter
kw:migration
kw:mime
kw:mingw
kw:minimal
kw:misc
kw:miscapture
kw:mlp
kw:mock
kw:more-info-needed
kw:mountain-lion
kw:move
kw:multi-users
kw:multiple
kw:multiuser-gateway
kw:munin
kw:music
kw:mutability
kw:mutable
kw:mystery
kw:names
kw:naming
kw:nas
kw:navigation
kw:needs-review
kw:needs-spawn
kw:netbsd
kw:network
kw:nevow
kw:new-user
kw:newcaps
kw:news
kw:news-done
kw:news-needed
kw:newsletter
kw:newurls
kw:nfc
kw:nginx
kw:nixos
kw:no-clobber
kw:node
kw:node-url
kw:notification
kw:notifyOnDisconnect
kw:nsa310
kw:nsa320
kw:nsa325
kw:numpy
kw:objects
kw:old
kw:openbsd
kw:openitp-packaging
kw:openssl
kw:openstack
kw:opensuse
kw:operation-helpers
kw:operational
kw:operations
kw:ophandle
kw:ophandles
kw:ops
kw:optimization
kw:optional
kw:options
kw:organization
kw:os
kw:os.abort
kw:ostrom
kw:osx
kw:osxfuse
kw:otf-magic-folder-objective1
kw:otf-magic-folder-objective2
kw:otf-magic-folder-objective3
kw:otf-magic-folder-objective4
kw:otf-magic-folder-objective5
kw:otf-magic-folder-objective6
kw:p2p
kw:packaging
kw:partial
kw:password
kw:path
kw:paths
kw:pause
kw:peer-selection
kw:performance
kw:permalink
kw:permissions
kw:persistence
kw:phone
kw:pickle
kw:pip
kw:pipermail
kw:pkg_resources
kw:placement
kw:planning
kw:policy
kw:port
kw:portability
kw:portal
kw:posthook
kw:pratchett
kw:preformance
kw:preservation
kw:privacy
kw:process
kw:profile
kw:profiling
kw:progress
kw:proxy
kw:publish
kw:pyOpenSSL
kw:pyasn1
kw:pycparser
kw:pycrypto
kw:pycrypto-lib
kw:pycryptopp
kw:pyfilesystem
kw:pyflakes
kw:pylint
kw:pypi
kw:pypy
kw:pysqlite
kw:python
kw:python3
kw:pythonpath
kw:pyutil
kw:pywin32
kw:quickstart
kw:quiet
kw:quotas
kw:quoting
kw:raic
kw:rainhill
kw:random
kw:random-access
kw:range
kw:raspberry-pi
kw:reactor
kw:readonly
kw:rebalancing
kw:recovery
kw:recursive
kw:redhat
kw:redirect
kw:redressing
kw:refactor
kw:referer
kw:referrer
kw:regression
kw:rekey
kw:relay
kw:release
kw:release-blocker
kw:reliability
kw:relnotes
kw:remote
kw:removable
kw:removable-disk
kw:rename
kw:renew
kw:repair
kw:replace
kw:report
kw:repository
kw:research
kw:reserved_space
kw:response-needed
kw:response-time
kw:restore
kw:retrieve
kw:retry
kw:review
kw:review-needed
kw:reviewed
kw:revocation
kw:roadmap
kw:rollback
kw:rpm
kw:rsa
kw:rss
kw:rst
kw:rsync
kw:rusty
kw:s3
kw:s3-backend
kw:s3-frontend
kw:s4
kw:same-origin
kw:sandbox
kw:scalability
kw:scaling
kw:scheduling
kw:schema
kw:scheme
kw:scp
kw:scripts
kw:sdist
kw:sdmf
kw:security
kw:self-contained
kw:server
kw:servermap
kw:servers-of-happiness
kw:service
kw:setup
kw:setup.py
kw:setup_requires
kw:setuptools
kw:setuptools_darcs
kw:sftp
kw:shared
kw:shareset
kw:shell
kw:signals
kw:simultaneous
kw:six
kw:size
kw:slackware
kw:slashes
kw:smb
kw:sneakernet
kw:snowleopard
kw:socket
kw:solaris
kw:space
kw:space-efficiency
kw:spam
kw:spec
kw:speed
kw:sqlite
kw:ssh
kw:ssh-keygen
kw:sshfs
kw:ssl
kw:stability
kw:standards
kw:start
kw:startup
kw:static
kw:static-analysis
kw:statistics
kw:stats
kw:stats_gatherer
kw:status
kw:stdeb
kw:storage
kw:streaming
kw:strports
kw:style
kw:stylesheet
kw:subprocess
kw:sumo
kw:survey
kw:svg
kw:symlink
kw:synchronous
kw:tac
kw:tahoe-*
kw:tahoe-add-alias
kw:tahoe-admin
kw:tahoe-archive
kw:tahoe-backup
kw:tahoe-check
kw:tahoe-cp
kw:tahoe-create-alias
kw:tahoe-create-introducer
kw:tahoe-debug
kw:tahoe-deep-check
kw:tahoe-deepcheck
kw:tahoe-lafs-trac-stream
kw:tahoe-list-aliases
kw:tahoe-ls
kw:tahoe-magic-folder
kw:tahoe-manifest
kw:tahoe-mkdir
kw:tahoe-mount
kw:tahoe-mv
kw:tahoe-put
kw:tahoe-restart
kw:tahoe-rm
kw:tahoe-run
kw:tahoe-start
kw:tahoe-stats
kw:tahoe-unlink
kw:tahoe-webopen
kw:tahoe.css
kw:tahoe_files
kw:tahoewapi
kw:tarball
kw:tarballs
kw:tempfile
kw:templates
kw:terminology
kw:test
kw:test-and-set
kw:test-from-egg
kw:test-needed
kw:testgrid
kw:testing
kw:tests
kw:throttling
kw:ticket999-s3-backend
kw:tiddly
kw:time
kw:timeout
kw:timing
kw:to
kw:to-be-closed-on-2011-08-01
kw:tor
kw:tor-protocol
kw:torsocks
kw:tox
kw:trac
kw:transparency
kw:travis
kw:travis-ci
kw:trial
kw:trickle
kw:trivial
kw:truckee
kw:tub
kw:tub.location
kw:twine
kw:twistd
kw:twistd.log
kw:twisted
kw:twisted-14
kw:twisted-trial
kw:twitter
kw:twn
kw:txaws
kw:type
kw:typeerror
kw:ubuntu
kw:ucwe
kw:ueb
kw:ui
kw:unclean
kw:uncoordinated-writes
kw:undeletable
kw:unfinished-business
kw:unhandled-error
kw:unhappy
kw:unicode
kw:unit
kw:unix
kw:unlink
kw:update
kw:upgrade
kw:upload
kw:upload-helper
kw:uri
kw:url
kw:usability
kw:use-case
kw:utf-8
kw:util
kw:uwsgi
kw:ux
kw:validation
kw:variables
kw:vdrive
kw:verify
kw:verlib
kw:version
kw:versioning
kw:versions
kw:video
kw:virtualbox
kw:virtualenv
kw:vista
kw:visualization
kw:visualizer
kw:vm
kw:volunteergrid2
kw:volunteers
kw:vpn
kw:wapi
kw:warners-opinion-needed
kw:warning
kw:weapi
kw:web
kw:web.port
kw:webapi
kw:webdav
kw:webdrive
kw:webport
kw:websec
kw:website
kw:websocket
kw:welcome
kw:welcome-page
kw:welcomepage
kw:wiki
kw:win32
kw:win64
kw:windows
kw:windows-related
kw:winscp
kw:workaround
kw:world-domination
kw:wrapper
kw:write-enabler
kw:wui
kw:x86
kw:x86-64
kw:xhtml
kw:xml
kw:xss
kw:zbase32
kw:zetuptoolz
kw:zfec
kw:zookos-opinion-needed
kw:zope
kw:zope.interface
p/blocker
p/critical
p/major
p/minor
p/normal
p/supercritical
p/trivial
r/cannot reproduce
r/duplicate
r/fixed
r/invalid
r/somebody else's problem
r/was already fixed
r/wontfix
r/worksforme
t/defect
t/enhancement
t/task
v/0.2.0
v/0.3.0
v/0.4.0
v/0.5.0
v/0.5.1
v/0.6.0
v/0.6.1
v/0.7.0
v/0.8.0
v/0.9.0
v/1.0.0
v/1.1.0
v/1.10.0
v/1.10.1
v/1.10.2
v/1.10a2
v/1.11.0
v/1.12.0
v/1.12.1
v/1.13.0
v/1.14.0
v/1.15.0
v/1.15.1
v/1.2.0
v/1.3.0
v/1.4.1
v/1.5.0
v/1.6.0
v/1.6.1
v/1.7.0
v/1.7.1
v/1.7β
v/1.8.0
v/1.8.1
v/1.8.2
v/1.8.3
v/1.8β
v/1.9.0
v/1.9.0-s3branch
v/1.9.0a1
v/1.9.0a2
v/1.9.0b1
v/1.9.1
v/1.9.2
v/1.9.2a1
v/cloud-branch
v/unknown
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: tahoe-lafs/trac#3347
No description provided.