Hi,

A quick diff to fix it... and a ticket https://twistedmatrix.com/trac/ticket/10187

I will create a PR and we can refine the fix during the review.


diff --git a/src/twisted/words/protocols/irc.py b/src/twisted/words/protocols/irc.py
index 75300019b..a97abce2e 100644
--- a/src/twisted/words/protocols/irc.py
+++ b/src/twisted/words/protocols/irc.py
@@ -3678,10 +3678,10 @@ def ctcpExtract(message):
             normal_messages.append(messages.pop(0))
         odd = not odd
 
-    extended_messages[:] = filter(None, extended_messages)
-    normal_messages[:] = filter(None, normal_messages)
+    extended_messages[:] = list(filter(None, extended_messages))
+    normal_messages[:] = list(filter(None, normal_messages))
 
-    extended_messages[:] = map(ctcpDequote, extended_messages)
+    extended_messages[:] = list(map(ctcpDequote, extended_messages))


On Wed, 28 Apr 2021 at 10:01, Adi Roiban <adi@roiban.ro> wrote:
Hi Wim,

Thanks for the report

On Tue, 27 Apr 2021 at 08:14, Wim Lewis <wiml@hhhh.org> wrote:
TLDR: Twisted appears broken on PyPy 7.3.4 (aka "3.7.10")?

I don't have time right now to set up a PyPy-capable environment and try
to reproduce this, but perhaps someone does?

Long version:

Trunk has been broken since the last merge a week or so ago, but I
don't think the breakage is due to that merge.  As an experiment I made
a PR based off the last successful version of trunk, with a whitespace
change, and it now fails CI as well. So I think the failure must be due
to some change that isn't in Twisted or controlled-for by tox.

The failure in all cases is in the pypy-3.7-alldeps-nocov-posix task.
Unlike our usual CI problems it doesn't seem to be a random failure: it
fails all the time in the same place. But the place doesn't make sense
to me. It's in the IRC CTCP tests, and they fail in the same ways each
time (an expected response is not received).

The pair of CI runs closest to the change are these:

run 5793: https://github.com/twisted/twisted/runs/2328450554
run 5809: https://github.com/twisted/twisted/runs/2360415474

There are a lot of differences, but sys.version went from 3.7.9 to
3.7.10 between those runs, so that seems like the most likely culprit.

Last working:
>  sys.version              : 3.7.9 (7e6e2bb30ac5, Nov 18 2020, 10:55:52)
>  [PyPy 7.3.3-beta0 with GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
>  sys.prefix               : /opt/hostedtoolcache/PyPy/3.7.9/x64
>  sys.exec_prefix          : /opt/hostedtoolcache/PyPy/3.7.9/x64
>  sys.executable           : /opt/hostedtoolcache/PyPy/3.7.9/x64/bin/python

First broken:
>  sys.version              : 3.7.10 (51efa818fd9b, Apr 04 2021, 11:22:34)
>  [PyPy 7.3.4 with GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
>  sys.prefix               : /opt/hostedtoolcache/PyPy/3.7.10/x64
>  sys.exec_prefix          : /opt/hostedtoolcache/PyPy/3.7.10/x64
>  sys.executable           : /opt/hostedtoolcache/PyPy/3.7.10/x64/bin/python

PyPy's release notes for 7.3.4 don't list anything that jumps out at me:

https://doc.pypy.org/en/latest/whatsnew-pypy3-7.3.4.html

My guess would be some latent timing bug in Twisted that was uncovered
by pypy execution time changes (I don't imagine that the CTCP code gets
exercised very heavily these days) or perhaps PyPy got a bug.


Wim.


I have setup a pyp3.7.4 and I can reproduce it.

I see 3 options:

* Option A: Skip those tests on pypy  and open a separate ticket to fix the test
* Option B: Pin pypy 3.7.9 for GHA and open a separate ticket to fix the test and unpin it
* Option C: Just fix the tests :)

I am looking at option C for one hour... if I can't find a fix will look into option A.

Cheers

--
Adi Roiban


--
Adi Roiban