Description of problem: perl-Event-Lib fails to build in Fedora 33 and Rawhide. Or more precisely, the build does not finish - it hangs after a test failure: # Test 1 got: "foobarfoobarfoobar" (t/64_pending_events_destroyed.t at line 84) # Expected: "foobar" # t/64_pending_events_destroyed.t line 84 is: ok($buf, "foobar"); # Test 2 got: "foobarfoobarfoobar" (t/64_pending_events_destroyed.t at line 84 fail #2) # Expected: "foobar" Here are my scratch builds (that I had to cancel after several days): https://koji.fedoraproject.org/koji/taskinfo?taskID=50236279 https://koji.fedoraproject.org/koji/taskinfo?taskID=50236298 Version-Release number of selected component (if applicable): perl-Event-Lib-1.03-45 Additional info: Presumably the build failure is caused by something outside of perl-Event-Lib, because build of the same version (perl-Event-Lib-1.03-45) succeeded during the recent mass rebuild. perl-Event-Lib will need to be rebuilt soon due to a libevent rebase that I'm planning to do. The rebase includes a soname bump, so perl-Event-Lib will become unusable if it fails to build then.
Hi, any update on this?
Well, It seems like I'm assignee by miss-take on this package, Free free to maintain, rebuild anything, specially take-over the package.
(In reply to Nicolas Chauvet (kwizart) from comment #2) > Well, It seems like I'm assignee by miss-take on this package, > > Free free to maintain, rebuild anything, specially take-over the package. Ok, thanks for the info! You seem to be listed as the maintainer in Pagure, so if you're not interested in maintaining the package, I believe you should orphan it. https://fedoraproject.org/wiki/Orphaned_package_that_need_new_maintainers#Orphaning_Procedure
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.
I corrected reading to the expected sizes (6 and 2 bytes), added some debugging and it's like I said. (CLIENT debugging is not serialized to SERVER debugging): $ perl -Iblib/{lib,arch} t/64_pending_events_destroyed.t 1..6 # Running under perl version 5.032000 for linux # Current time local: Tue Sep 15 13:09:52 2020 # Current time GMT: Tue Sep 15 11:09:52 2020 # Using Test.pm version 1.31 CLIENT 1:1 wrote 6 B at t/64_pending_events_destroyed.t line 39. Use of uninitialized value $read in concatenation (.) or string at t/64_pending_events_destroyed.t line 41. CLIENT 1:1 read B at t/64_pending_events_destroyed.t line 41. CLIENT 1:2 wrote 6 B at t/64_pending_events_destroyed.t line 39. SERVER accepted. at t/64_pending_events_destroyed.t line 74. Use of uninitialized value $read in concatenation (.) or string at t/64_pending_events_destroyed.t line 41. CLIENT 1:2 read B at t/64_pending_events_destroyed.t line 41. CLIENT 1:3 wrote 6 B at t/64_pending_events_destroyed.t line 39. Use of uninitialized value $read in concatenation (.) or string at t/64_pending_events_destroyed.t line 41. CLIENT 1:3 read B at t/64_pending_events_destroyed.t line 41. Use of uninitialized value $ok in concatenation (.) or string at t/64_pending_events_destroyed.t line 88. SERVER read 6 B at t/64_pending_events_destroyed.t line 88. CLIENT 1 closed at t/64_pending_events_destroyed.t line 44. ok 1 SERVER 1 wrote an error: Broken pipe at t/64_pending_events_destroyed.t line 109. CLIENT 2:1 wrote 6 B at t/64_pending_events_destroyed.t line 39. Use of uninitialized value $read in concatenation (.) or string at t/64_pending_events_destroyed.t line 41. CLIENT 2:1 read B at t/64_pending_events_destroyed.t line 41. CLIENT 2:2 wrote 6 B at t/64_pending_events_destroyed.t line 39. Use of uninitialized value $read in concatenation (.) or string at t/64_pending_events_destroyed.t line 41. CLIENT 2:2 read B at t/64_pending_events_destroyed.t line 41. SERVER accepted. at t/64_pending_events_destroyed.t line 74. CLIENT 2:3 wrote 6 B at t/64_pending_events_destroyed.t line 39. Use of uninitialized value $read in concatenation (.) or string at t/64_pending_events_destroyed.t line 41. CLIENT 2:3 read B at t/64_pending_events_destroyed.t line 41. CLIENT 2 closed at t/64_pending_events_destroyed.t line 44. SERVER 1 read 6 B at t/64_pending_events_destroyed.t line 88. ok 2 SERVER 2 wrote an error: Broken pipe at t/64_pending_events_destroyed.t line 109. ^C The client sends all data, reads nothing (because of non-blocking), and closes the connection. Then server reads a response, attempts to write, but that fails and the server in case of write failure does simply resets and waits for a new connection. But client is programmed to perform two connections, while the server expects 6 cycles. I will try to patch the test to work under a condition of a smooth timing.
FEDORA-2020-492e6416b1 has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2020-492e6416b1
FEDORA-2020-492e6416b1 has been pushed to the Fedora 33 testing repository. In short time you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2020-492e6416b1` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-492e6416b1 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2020-492e6416b1 has been pushed to the Fedora 33 stable repository. If problem still persists, please make note of it in this bug report.