Bug 1876460 - perl-Event-Lib FTBFS in F33 and Rawhide
Summary: perl-Event-Lib FTBFS in F33 and Rawhide
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: perl-Event-Lib
Version: 33
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Petr Pisar
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-09-07 09:26 UTC by Ondřej Lysoněk
Modified: 2020-09-25 16:58 UTC (History)
3 users (show)

Fixed In Version: perl-Event-Lib-1.03-46.fc34 perl-Event-Lib-1.03-46.fc33
Clone Of:
Environment:
Last Closed: 2020-09-25 16:58:42 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
CPAN 133340 0 None None None 2020-09-15 11:48:27 UTC

Description Ondřej Lysoněk 2020-09-07 09:26:17 UTC
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.

Comment 1 Ondřej Lysoněk 2020-09-14 18:28:01 UTC
Hi, any update on this?

Comment 2 Nicolas Chauvet (kwizart) 2020-09-14 18:52:44 UTC
Well, It seems like I'm assignee by miss-take on this package, 

Free free to maintain, rebuild anything, specially take-over the package.

Comment 3 Ondřej Lysoněk 2020-09-15 08:40:01 UTC
(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

Comment 4 Petr Pisar 2020-09-15 09:25:35 UTC
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.

Comment 5 Petr Pisar 2020-09-15 11:18:14 UTC
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.

Comment 6 Fedora Update System 2020-09-15 11:58:30 UTC
FEDORA-2020-492e6416b1 has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2020-492e6416b1

Comment 7 Fedora Update System 2020-09-15 14:55:10 UTC
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.

Comment 8 Fedora Update System 2020-09-25 16:58:42 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.