pipelint does not work on Windows inside pwsh/cmd/bash (mozilla-build shell)
Categories
(Developer Infrastructure :: Lint and Formatting, defect)
Tracking
(Not tracked)
People
(Reporter: beth, Unassigned, NeedInfo)
References
Details
Attachments
(1 file)
97.03 KB,
text/plain
|
Details |
Running more client.py | python ./tools/lint/pipelint client.py
generates a massive crash log, see attached
I added some logging:
$ jj diff
diff --git a/python/mozlint/mozlint/cli.py b/python/mozlint/mozlint/cli.py
index 21d6d878a4..6d7a83cf10 100644
--- a/python/mozlint/mozlint/cli.py
+++ b/python/mozlint/mozlint/cli.py
@@ -416,6 +416,10 @@
dir=os.path.dirname(fpath),
suffix=os.path.splitext(fpath)[1],
)
+
+ print(f"inside mach lint stdin is a tty: {sys.stdin.isatty()} stdin={id(sys.stdin)}", file=sys.stderr)
+
+
stdin_tempfile.write("".join(sys.stdin))
stdin_tempfile.close()
paths = [stdin_tempfile.name]
diff --git a/tools/lint/pipelint b/tools/lint/pipelint
index bfb220aafd..0cbccdab88 100755
--- a/tools/lint/pipelint
+++ b/tools/lint/pipelint
@@ -30,6 +30,8 @@
mach = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mach)
+print(f"inside pipelint stdin is a tty: {sys.stdin.isatty()} stdin={id(sys.stdin)}", file=sys.stderr)
+
assert len(sys.argv) == 2
with tempfile.NamedTemporaryFile(mode="w+") as temp:
args = [
and got the following output:
inside pipelint stdin is a tty: False stdin=1922595248320
inside mach lint stdin is a tty: False stdin=1922595248320
inside pipelint stdin is a tty: False stdin=1742396872896
inside pipelint stdin is a tty: False stdin=1665844664512
inside pipelint stdin is a tty: False stdin=2109049297088
inside pipelint stdin is a tty: False stdin=2916943091904
inside pipelint stdin is a tty: False stdin=2146904266944
inside pipelint stdin is a tty: False stdin=2112730192064
inside pipelint stdin is a tty: False stdin=1574458316992
inside pipelint stdin is a tty: False stdin=2672519829696
inside pipelint stdin is a tty: False stdin=2993197242560
inside pipelint stdin is a tty: False stdin=2203810814144
inside pipelint stdin is a tty: False stdin=1494902397120
inside pipelint stdin is a tty: False stdin=1727416588480
inside pipelint stdin is a tty: False stdin=2760995395776
inside mach lint stdin is a tty: False stdin=1742396872896
inside mach lint stdin is a tty: False stdin=1665844664512
inside pipelint stdin is a tty: False stdin=1480553027776
inside mach lint stdin is a tty: False stdin=2109049297088
inside pipelint stdin is a tty: False stdin=2173329430720
inside mach lint stdin is a tty: False stdin=2916943091904
inside pipelint stdin is a tty: False stdin=2257629239488
inside mach lint stdin is a tty: False stdin=2146904266944
inside pipelint stdin is a tty: False stdin=2065575270592
inside mach lint stdin is a tty: False stdin=2112730192064
inside pipelint stdin is a tty: False stdin=2422191708352
inside mach lint stdin is a tty: False stdin=1574458316992
inside pipelint stdin is a tty: False stdin=1949160921280
inside mach lint stdin is a tty: False stdin=2672519829696
inside pipelint stdin is a tty: False stdin=3010923485376
inside pipelint stdin is a tty: False stdin=2349785831616
inside mach lint stdin is a tty: False stdin=2993197242560
inside pipelint stdin is a tty: False stdin=1812155816128
inside mach lint stdin is a tty: False stdin=2203810814144
inside mach lint stdin is a tty: False stdin=1494902397120
it seems to be in an infinite loop spawning processes
Reporter | ||
Updated•1 month ago
|
Reporter | ||
Updated•1 month ago
|
Reporter | ||
Updated•1 month ago
|
Comment 1•1 month ago
|
||
I'm pretty baffled by this. I suspect there's some black magic in mach at play here, but it's hard to say for sure. I don't have a ready environment to test on, but maybe we can write a unittest that triggers the error and that way test easier on try. It would also be good to find a minimal test case.
E.g, do we get the same output duplicated many times when running all of the following?
more client.py | ./mach lint --stdin-filename client.py
more client.py | ./mach python -c 'import sys; print("".join(sys.stdin), file=sys.stderr)'
more client.py | python -c 'import sys; print("".join(sys.stdin), file=sys.stderr)'
It seems like there might be two issues here, a problem reading stdin and a problem spawning too many processes.
Comment 2•22 days ago
|
||
The severity field is not set for this bug.
:andi, could you have a look please?
For more information, please visit BugBot documentation.
Description
•