https://bugzilla.redhat.com/show_bug.cgi?id=1876460
--- Comment #4 from Petr Pisar <ppisar(a)redhat.com> ---
This could be triggered by a "Fix setting a non-blocking mode in
IO::Socket::UNIX" patch I applied from upstream to perl in Fedora ≥ 33.
Previously, setting a blocking mode for UNIX sockets in Perl was ignored. Now
it is respected.
The t/64_pending_events_destroyed.t test creates a UNIX stream server and
spawns a UNIX stream client. Both of them in a non-blocking mode. Then it
connects the client to the server, and then it lets the client to write
"foobar", and read any response three times, then it connects for the second
time and again does the write and read three times. The server checks that it
received "foobar", then sends some data and it repeats it 6 times. The clients
uses a plain Perl, the server uses the Event library. The client interleaves
few sleeps, the server performs everything as fast as possible.
I can see the test does not perform any other synchronization. Especially it
blindly reads and writes without checking for the success and without verifying
it read and wrote everything to be written or to be expected to read. I believe
that the non-blocking mode coalesces the adjacent messages and that triggers
two failures: The server reads all three "foobar" in one read, and reports the
unexpected value "foobarfoobarfoobar". Then the server blocks indefinitely,
because it waits for another 5 messages that will never arrive, because the
client finished.
--
You are receiving this mail because:
You are on the CC list for the bug.