Closed Bug 1822282 Opened 3 years ago Closed 1 month ago

`./mach wpt-serve` fails on Windows on Python 3.11.2

Categories

(Testing :: web-platform-tests, defect)

Default
defect

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: saschanaz, Unassigned)

References

(Blocks 1 open bug)

Details

This error has been for a while, perhaps forever on Python 3.11:

> ./mach wpt-serve
Config is up to date, not regenerating
[2023-03-14 13:37:00,924 None on port 50739] INFO - Starting http server on http://web-platform.test:50739
[2023-03-14 13:37:01,174 None on port 50739] INFO - Stopped http server on web-platform.test:50739
[2023-03-14 13:37:01,174 None on port 50739] CRITICAL - Traceback (most recent call last):
  File "C:\Users\sasch\Documents\GitHub\gecko-dev\testing\web-platform\tests\tools\serve\serve.py", line 664, in create_daemon
    self.stop_flag.wait()
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\synchronize.py", line 345, in wait
    with self._cond:
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\synchronize.py", line 230, in __enter__
    return self._lock.__enter__()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\synchronize.py", line 95, in __enter__
    return self._semlock.__enter__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [WinError 5] Access is denied

Process None on port 50739:
Traceback (most recent call last):
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\process.py", line 314, in _bootstrap
    self.run()
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\sasch\Documents\GitHub\gecko-dev\testing\web-platform\tests\tools\serve\serve.py", line 664, in create_daemon
    self.stop_flag.wait()
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\synchronize.py", line 345, in wait
    with self._cond:
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\synchronize.py", line 230, in __enter__
    return self._lock.__enter__()
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\synchronize.py", line 95, in __enter__
    return self._semlock.__enter__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [WinError 5] Access is denied
Error running mach:

    ['wpt-serve']

The error occurred in code that was called by the mach command. This is either
a bug in the called code itself or in the way that mach is calling it.
You can invoke ``./mach busted`` to check if this issue is already on file. If it
isn't, please use ``./mach busted file wpt-serve`` to report it. If ``./mach busted`` is
misbehaving, you can also inspect the dependencies of bug 1543241.

If filing a bug, please include the full output of mach, including this error
message.

The details of the failure are as follows:

ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

  File "C:\Users\sasch\Documents\GitHub\gecko-dev\testing\web-platform\mach_commands.py", line 583, in wpt_serve
    return wpt_serve.run(**params)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\Documents\GitHub\gecko-dev\testing\web-platform\mach_commands.py", line 264, in run
    return 0 if serve.run(route_builder=get_route_builder, **kwargs) else 1
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\Documents\GitHub\gecko-dev\testing\web-platform\tests\tools\serve\serve.py", line 1195, in run
    check_subdomains(logger, config, routes, mp_context, log_handlers)
  File "C:\Users\sasch\Documents\GitHub\gecko-dev\testing\web-platform\tests\tools\serve\serve.py", line 700, in check_subdomains
    urllib.request.urlopen(url)
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 519, in open
    response = self._open(req, data)
               ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 536, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
             ^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 1377, in http_open
    return self.do_open(http.client.HTTPConnection, req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 1352, in do_open
    r = h.getresponse()
        ^^^^^^^^^^^^^^^
  File "c:\users\sasch\documents\github\gecko-dev\third_party\python\sentry_sdk\sentry_sdk\integrations\stdlib.py", line 102, in getresponse
    rv = real_getresponse(self, *args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1374, in getresponse
    response.begin()
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 318, in begin
    version, status, reason = self._read_status()
                              ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 279, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sasch\AppData\Local\Programs\Python\Python311\Lib\socket.py", line 706, in readinto
    return self._sock.recv_into(b)
           ^^^^^^^^^^^^^^^^^^^^^^^

Sentry event ID: ca58ebe4da034cd19464dc87f1dd13d3
Sentry is attempting to send 0 pending error messages
Waiting up to 2 seconds
Press Ctrl-Break to quit

But interestingly running python wpt serve inside testing/web-platform/tests` works.

Blocks: mach-busted
No longer blocks: 1660244
See Also: → 1660244

The severity field is not set for this bug.
:jgraham, could you have a look please?

For more information, please visit auto_nag documentation.

Flags: needinfo?(james)

I don't really have a system to test this on, unfortunately. Looking at the attempt to move upstream CI to run Python 3.11 it seems like there's a few unresolved issues, so I guess for now I'd encourage you to stick with 3.10. Obviously we'll need to fix this in the relatively near future as 3.11 becomes common.

Severity: -- → S3
Flags: needinfo?(james)

Has been working even on py3.13.

Status: NEW → RESOLVED
Closed: 1 month ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.