Bug#1002541: libio-async-perl: autopkgtest regression on ppc64el: Parse errors: No plan found in TAP output

2022-02-10 Thread Niko Tyni
(Paul: this is just FYI for now; tested patches will follow eventually
 in a proper bug report.
 See https://bugs.debian.org/1002541 for more context.)

On Fri, Jan 21, 2022 at 06:12:51PM +0100, gregor herrmann wrote:

> > So t/70future-io.t fails consistently since it is run (0.800-2 and
> > 0.801-1). But only on ppc64el.
> 
> And libfuture-io-perl has the same problem: The tests fail on
> ppc64el:

Both of these issues are a test-only wrong expectation on stdio buffer
sizes, which seem to differ on the ppc64el architecture.

The attached test program (pardon my C) makes a pair of nonblocking
pipes, writes to one end until it's full and then reads from the other
end until writes don't block anymore.

The output (see below) indicates that on my amd64 host it takes 64kB
to fill the pipe, and reading 4kB out is enough to unblock it. This
(particularly the 4kB part) is what the tests in libio-async-perl and
libfuture-io-perl are expecting.

However, on ppc64el it takes 1MB to fill the pipe, and 64kB to unblock it.
The tests fail because they only read 4kB out and expect writes to
work again.

Patches need to go around

 
https://sources.debian.org/src/libfuture-io-perl/0.11-1/lib/Test/Future/IO/Impl.pm/#L302

 https://sources.debian.org/src/libio-async-perl/0.801-1/t/70future-io.t/#L59

but I don't have anything finished atm and I'm out of time for now.

Note that the test in libio-async-perl also uses the one in 
Test::Future::IO::Impl,
so both fixes are needed to make libio-async-perl pass.

amd64:
   PIPE_BUF: 4096
   making nonblocking pipes
   writing until it blocks
   wrote 16 * 4096 bytes
   reading out until write no longer blocks
   read 1 * 4096 bytes
   
ppc64el (plummer.debian.org):
   PIPE_BUF: 4096
   making nonblocking pipes
   writing until it blocks
   wrote 256 * 4096 bytes
   reading out until write no longer blocks
   read 16 * 4096 bytes

-- 
Niko Tyni   nt...@debian.org
#include 
#include 
#include 
#include 
#include 
#include 

int main(void) {
	int fds[2];
	int i;
	char r_buf[PIPE_BUF];
	char w_buf[PIPE_BUF];

	memset(w_buf, 'X', PIPE_BUF);
	printf("PIPE_BUF: %d\n", PIPE_BUF);
	printf("making nonblocking pipes\n");
	if (pipe(fds)) {
		perror("pipe");
	}
	if (fcntl(fds[0], F_SETFL, O_NONBLOCK))
		perror("fcntl for read handle");
	if (fcntl(fds[1], F_SETFL, O_NONBLOCK))
		perror("fcntl for write handle");
	printf("writing until it blocks\n");
	i = 0;
	while (write(fds[1], w_buf, PIPE_BUF) > 0) {
		i++;
	}
	if (errno != EAGAIN)
		perror("unexpected write error");
	printf("wrote %d * %d bytes\n", i, PIPE_BUF);

	printf("reading out until write no longer blocks\n");
	i = 0;
	while (write(fds[1], w_buf, PIPE_BUF) < 0) {
		read(fds[0], r_buf, PIPE_BUF);
		i++;
	}
	printf("read %d * %d bytes\n", i, PIPE_BUF);
}


Bug#1002541: libio-async-perl: autopkgtest regression on ppc64el: Parse errors: No plan found in TAP output

2022-01-21 Thread gregor herrmann
Control: clone -1 -2
Control: reassign -2 src:libfuture-io-perl 0.10-2
Control: retitle -2 libfuture-io-perl: autopkgtest failure on ppc64el

On Fri, 24 Dec 2021 00:13:23 +0100, gregor herrmann wrote:

> Ah, in 0.800-2 we have:
> 
> libio-async-perl (0.800-2) unstable; urgency=medium
> 
>   * Don't skip any tests, as Test::Future::IO::Impl is in Debian.
>   * Add test dependency on libfuture-io-perl.
> 
> and t/70future-io.t was skipped in 8.800-1.
> 
> 
> So t/70future-io.t fails consistently since it is run (0.800-2 and
> 0.801-1). But only on ppc64el.

And libfuture-io-perl has the same problem: The tests fail on
ppc64el:

https://ci.debian.net/packages/libf/libfuture-io-perl/


Cheers,
gregor


-- 
 .''`.  https://info.comodo.priv.at -- Debian Developer https://www.debian.org
 : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D  85FA BB3A 6801 8649 AA06
 `. `'  Member VIBE!AT & SPI Inc. -- Supporter Free Software Foundation Europe
   `-   NP: Beatles


signature.asc
Description: Digital Signature


Bug#1002541: libio-async-perl: autopkgtest regression on ppc64el: Parse errors: No plan found in TAP output

2021-12-23 Thread gregor herrmann
On Thu, 23 Dec 2021 21:59:45 +0100, Paul Gevers wrote:

> With a recent upload of libio-async-perl the autopkgtest of libio-async-perl
> fails in testing on ppc64el when that autopkgtest is run with the binary
> packages of libio-async-perl from unstable. It passes when run with only
> packages from testing. In tabular form:

Thanks for the bug report.
 
> t/70future-io.t .. ok 1 - Future::IO->sleep took at least 1.5
> ok 2 - Future::IO->sleep took no more than 4
> ok 3 - Future::IO->sysread
> Nothing was ready after 10 second wait; called at
> /usr/share/perl5/IO/Async/Test.pm line 214
> # Tests were run but no plan was declared and done_testing() was not seen.
> # Looks like your test exited with 255 just after 3.
> Dubious, test returned 255 (wstat 65280, 0xff00)
> All 3 subtests passed
> Test Summary Report
> ---
> t/70future-io.t(Wstat: 65280 Tests: 3 Failed: 0)
>   Non-zero exit status: 255
>   Parse errors: No plan found in TAP output
> Files=63, Tests=1638, 105 wallclock secs ( 0.30 usr  0.09 sys +  8.33 cusr
> 1.42 csys = 10.14 CPU)

So some kind of timeout …

Whatever the reason is, it's not the update from 0.800 to 0.801, as
the whole diff (modulo versions numbers etc.) is:

#v+
--- a/Changes
+++ b/Changes
@@ -1,5 +1,9 @@
 Revision history for IO-Async

+0.801   2021-12-15
+[BUGFIXES]
+ * Remove extraneous test-time use of Data::Dump (RT140143)
+
 0.800   2021-11-11
 [CHANGES]
  * Bumped up to three-digit minor version number
--- a/t/50resolver.t
+++ b/t/50resolver.t
@@ -308,8 +308,6 @@ my @expect_passive_3000 = (
  
my @got = @{$result}[1..$#$result];

-   use Data::Dump 'pp';
-
is_deeply( \@got, \@expect_lo_80, '$resolver->getaddrinfo resolved 
addresses synchronously' );

undef $result;
@@ -344,8 +342,7 @@ my @expect_passive_3000 = (
   
my @got = @{$result}[1..$#$result];
   
-   is_deeply( \@got, \@expect_passive_3000, '$resolver->getaddrinfo passive - 
resolved addresses' ) or
-  diag( "Got=", pp(\@got), "; expected=", pp(\@expect_passive_3000) );
+   is_deeply( \@got, \@expect_passive_3000, '$resolver->getaddrinfo passive - 
resolved addresses' );
 }
   
 {
#v-  


Looking at https://ci.debian.net/packages/libi/libio-async-perl/testing/ppc64el/
I notice that the tests for 0.800-2 also failed. Not sure if this
good or bad :)

Ah, in 0.800-2 we have:

libio-async-perl (0.800-2) unstable; urgency=medium

  * Don't skip any tests, as Test::Future::IO::Impl is in Debian.
  * Add test dependency on libfuture-io-perl.

and t/70future-io.t was skipped in 8.800-1.


So t/70future-io.t fails consistently since it is run (0.800-2 and
0.801-1). But only on ppc64el.


Cheers,
gregor


-- 
 .''`.  https://info.comodo.priv.at -- Debian Developer https://www.debian.org
 : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D  85FA BB3A 6801 8649 AA06
 `. `'  Member VIBE!AT & SPI Inc. -- Supporter Free Software Foundation Europe
   `-   NP: Alan Jackson: Chattahoochee


signature.asc
Description: Digital Signature


Bug#1002541: libio-async-perl: autopkgtest regression on ppc64el: Parse errors: No plan found in TAP output

2021-12-23 Thread Paul Gevers

Source: libio-async-perl
Version: 0.801-1
X-Debbugs-CC: debian...@lists.debian.org
Severity: serious
User: debian...@lists.debian.org
Usertags: regression

Dear maintainer(s),

With a recent upload of libio-async-perl the autopkgtest of 
libio-async-perl fails in testing on ppc64el when that autopkgtest is 
run with the binary packages of libio-async-perl from unstable. It 
passes when run with only packages from testing. In tabular form:


   passfail
libio-async-perl   from testing0.801-1
all others from testingfrom testing

I copied some of the output at the bottom of this report.

Currently this regression is blocking the migration to testing [1]. Can 
you please investigate the situation and fix it?


More information about this bug and the reason for filing it can be found on
https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation

Paul

[1] https://qa.debian.org/excuses.php?package=libio-async-perl

https://ci.debian.net/data/autopkgtest/testing/ppc64el/libi/libio-async-perl/17813300/log.gz


t/70future-io.t .. ok 1 - Future::IO->sleep took at least 1.5
ok 2 - Future::IO->sleep took no more than 4
ok 3 - Future::IO->sysread
Nothing was ready after 10 second wait; called at 
/usr/share/perl5/IO/Async/Test.pm line 214

# Tests were run but no plan was declared and done_testing() was not seen.
# Looks like your test exited with 255 just after 3.
Dubious, test returned 255 (wstat 65280, 0xff00)
All 3 subtests passed
Test Summary Report
---
t/70future-io.t(Wstat: 65280 Tests: 3 Failed: 0)
  Non-zero exit status: 255
  Parse errors: No plan found in TAP output
Files=63, Tests=1638, 105 wallclock secs ( 0.30 usr  0.09 sys +  8.33 
cusr  1.42 csys = 10.14 CPU)

Result: FAIL
autopkgtest [16:15:07]: test autodep8-perl-build-deps



OpenPGP_signature
Description: OpenPGP digital signature