• Perl package failing to migrate to testing

    From Jeff@21:1/5 to Debian Perl List on Sun Aug 4 12:10:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------YuqZ3T13XFlZ3a0vFddAWEbk
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    SSBoYXZlIFBlcmwgcGFja2FnZSAobm90IHRlYW0tbWFpbnRhaW5lZCwgYXMgaXQgaXMgYW4g YXBwbGljYXRpb24sIG5vdCBhIA0KbGlicmFyeSksIHdoaWNoIGlzIGZhaWxpbmcgdG8gbWln cmF0ZSB0byB0ZXN0aW5nIGJlY2F1c2Ugb2YgdGVzdCANCmZhaWx1cmVzIHdpdGggcmlzY3Y2 NDoNCg0KaHR0cHM6Ly90cmFja2VyLmRlYmlhbi5vcmcvcGtnL2dzY2FuMnBkZg0KDQpIb3cg Y2FuIEkgZ28gYWJvdXQgZGVidWdnaW5nIHRoaXM/IEkgZG9uJ3QgaGF2ZSBhIHJpc2N2NjQg bWFjaGluZSB0byBoYW5kLg0KDQpnc2NhbjJwZGYgaXMgYSBkZXNrdG9wIGFwcGxpY2F0aW9u LiBBcmUgdGhlcmUgZXZlbiByaXNjdjY0IGRlc2t0b3AgDQp1c2Vycz8gV291bGQgaXQgYmUg dmFsaWQgdG8gc2ltcGx5IHNraXAgdGVzdHMgZm9yIHJpc2N2NjQ/DQoNClJlZ2FyZHMNCg0K SmVmZg0K

    --------------YuqZ3T13XFlZ3a0vFddAWEbk--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEERjKT5K4zhxhG8wInsyHyAxEPyvMFAmavUi8FAwAAAAAACgkQsyHyAxEPyvMW Lw/9EBTwnlsF022IZAVBNDAaQx8at9HHktFJOj7CchTHYVq2k4RpcICdjtD5CW/KIWp3QFxWHl93 0nWhjaIeer9q1jz/mBBqxh/FzTWpHwKI9+LDxXrZsrhTUXa4dnBGknhEo+6hhJVKiulojXZNy7sf xPl5NNRHuAJLnxr0BTRlGS3YhdhuHDz1Nc0Zz7uCNcs1ivExj3pxxQKIEWvZOikXjojekgfbZKV0 fjDa0TDYe5ps9zYY9/4m7QfBF0nYp/OnI9NK41m6QKrqEGp5MQRvUXbqvWBzYsPWq7VAhJ6Q7xmd cuz9B2lECdGsIV13QY5RsRGSqsk/m8/QXSCaMjzQwoEf7oefomsvgpZTdfgllyd3/PCGDqg9laHu O0MiCIFO3Wi75qv+MxV830U2JCXs+8fxt4rnpAt+mYqN/DsgwHx5QtpKDUQiAbYIgtcfPVV3yeHU h6N3VEyyhlScQ1d+HWisuBGUk2wCyFDHH7TvhogHrXYUVwVZ8BViyM+mrebGhtwtEBpp+3wtb4se W6JXPOS/SjUfWEMZ1XVTlLLjh70KypFZ2gWe8ZEHkAMBVorQ+4fX7bzggeUnYpeMACK7mPs7/XCp /nK5MrCDTP5XjUZInR9dk/M3meeIjp0VlmW+v2d1SRAIpDGfE0li0ftFgrrGaIPlP4/JfX6tFAF+ p50=
    =k/LC
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Russ Allbery@21:1/5 to Jeff on Sun Aug 4 19:20:01 2024
    Jeff <[email protected]> writes:

    I have Perl package (not team-maintained, as it is an application, not a library), which is failing to migrate to testing because of test
    failures with riscv64:

    https://tracker.debian.org/pkg/gscan2pdf

    How can I go about debugging this? I don't have a riscv64 machine to hand.

    gscan2pdf is a desktop application. Are there even riscv64 desktop
    users? Would it be valid to simply skip tests for riscv64?

    The concrete answer to your question is that Debian has porterboxes
    available for various architectures including this one. DDs should
    already have access; Debian maintainers who are not DDs can request guest access. See https://wiki.debian.org/PorterBoxHowToUse.

    For the problem itself, this looks suspiciously like a race condition to
    me, although I'm not sure why it would fail only on riscv64. The test
    code that's failing is the following in 1111_save_pdf.t:

    # use a new main loop to avoid nesting, which was preventing the counters
    # resetting in some environments
    my $loop = Glib::MainLoop->new;
    my $flag = FALSE;
    $slist->import_files(
    paths => ['test.pnm'],
    started_callback => sub {
    my ( $thread, $process, $completed, $total ) = @_;
    is( $completed, 0, 'completed counter starts at 0' );
    is( $total, 2, 'total counter starts at 2' );
    },
    finished_callback => sub {
    is( $slist->scans_saved, '', 'pages not tagged as saved' );
    $flag = TRUE;
    $loop->quit;
    }
    );
    $loop->run unless ($flag);

    What's happening here is that the started_callback is running twice:

    1103s ok 1 - use Gscan2pdf::Document;
    1103s ok 2 - completed counter starts at 0
    1103s not ok 3 - total counter starts at 2
    1103s
    1103s # Failed test 'total counter starts at 2'
    1103s # at t/1111_save_pdf.t line 39.
    1103s # got: '1'
    1103s # expected: '2'
    1103s ok 4 - completed counter starts at 0
    1103s ok 5 - total counter starts at 2

    Notice how there are two completed and total counter test outputs, and
    then at the end of the test it says:

    1103s # Looks like you planned 9 tests but ran 11.
    1103s # Looks like you failed 1 test of 11 run.
    1103s Dubious, test returned 1 (wstat 256, 0x100)

    which implies to me that the started_callback is only supposed to run
    once.

    I have absolutely zero experience with the Perl Glib integration, but just eyeballing this code, it looks like the finished_callback is supposed to
    set $flag to false so that $loop->run doesn't run (a second time? there
    seems to be some threading or other implicit parallelization going on
    here).

    So my hypothesis, which is a straight-up guess that may be wrong since I
    don't know how these libraries work, is that for some reason on this
    platform this code gets run twice, presumably because the
    finished_callback hasn't run before it reaches the $loop->run line, and
    that's also causing some sort of race that causes the total counter to be
    1 instead of 2.

    If it is a race condition, this may be a general problem with the test
    that could trigger elsewhere, but just happened to trigger on this
    architecture for some reason. But it's also quite possible that glib
    works subtly differently on this platform for some reason.

    --
    Russ Allbery ([email protected]) <https://www.eyrie.org/~eagle/>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jeff@21:1/5 to Russ Allbery on Mon Aug 5 14:30:02 2024
    Copy: [email protected] (Debian Perl List)

    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------nQeX04jemYtlbyspAPUY2b2q
    Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64

    T24gMDQvMDgvMjAyNCAxOToxMCwgUnVzcyBBbGxiZXJ5IHdyb3RlOg0KPiBUaGUgY29uY3Jl dGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaXMgdGhhdCBEZWJpYW4gaGFzIHBvcnRlcmJv eGVzDQo+IGF2YWlsYWJsZSBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIGluY2x1ZGluZyB0 aGlzIG9uZS4gIEREcyBzaG91bGQNCj4gYWxyZWFkeSBoYXZlIGFjY2VzczsgRGViaWFuIG1h aW50YWluZXJzIHdobyBhcmUgbm90IEREcyBjYW4gcmVxdWVzdCBndWVzdA0KPiBhY2Nlc3Mu ICBTZWUgaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvUG9ydGVyQm94SG93VG9Vc2UuDQoNClRo YW5rcyBmb3IgdGhlIGxpbmsuIFRoYXQgZ290IG1lIHRvIGEgdmVyeSBuaWNlIHNjcmlwdCBm cm9tIEVucmljbyBaaW5pOg0KDQpodHRwczovL3NhbHNhLmRlYmlhbi5vcmcvZW5yaWNvL2Rl YnVnLW9uLXBvcnRlcmJveA0KDQo+IEZvciB0aGUgcHJvYmxlbSBpdHNlbGYsIHRoaXMgbG9v a3Mgc3VzcGljaW91c2x5IGxpa2UgYSByYWNlIGNvbmRpdGlvbiB0bw0KPiBtZSwgYWx0aG91 Z2ggSSdtIG5vdCBzdXJlIHdoeSBpdCB3b3VsZCBmYWlsIG9ubHkgb24gcmlzY3Y2NC4gIFRo ZSB0ZXN0DQo+IGNvZGUgdGhhdCdzIGZhaWxpbmcgaXMgdGhlIGZvbGxvd2luZyBpbiAxMTEx X3NhdmVfcGRmLnQ6DQoNCllvdSBhcmUgYWJzb2x1dGVseSBjb3JyZWN0IHRoYXQgc3RhcnRl ZF9jYWxsYmFjaygpIGlzIHJ1bm5pbmcgdHdpY2UuIFRoZSANCnRocmVhZGluZyBtZWNoYW5p c20gc2hvdWxkIHByZXZlbnQgdGhhdCwgd2hpY2ggaXMgdGhlIGJ1Zy4gVGhlIA0KaW50ZXJl c3RpbmcgcXVlc3Rpb24gaXMgd2h5IGl0IG9ubHkgb2NjdXJzIG9uIHJpc2N2NjQuDQoNCj4g SSBoYXZlIGFic29sdXRlbHkgemVybyBleHBlcmllbmNlIHdpdGggdGhlIFBlcmwgR2xpYiBp bnRlZ3JhdGlvbiwgYnV0IGp1c3QNCj4gZXllYmFsbGluZyB0aGlzIGNvZGUsIGl0IGxvb2tz IGxpa2UgdGhlIGZpbmlzaGVkX2NhbGxiYWNrIGlzIHN1cHBvc2VkIHRvDQo+IHNldCAkZmxh ZyB0byBmYWxzZSBzbyB0aGF0ICRsb29wLT5ydW4gZG9lc24ndCBydW4gKGEgc2Vjb25kIHRp bWU/IHRoZXJlDQo+IHNlZW1zIHRvIGJlIHNvbWUgdGhyZWFkaW5nIG9yIG90aGVyIGltcGxp Y2l0IHBhcmFsbGVsaXphdGlvbiBnb2luZyBvbg0KPiBoZXJlKS4NCg0KVGhlIHRocmVhZGlu ZyBpc24ndCBkb25lIHdpdGggR0xpYiAtIGl0IHVzZXMgdGhlIFBlcmwgaW50ZXJuYWwgdGhy ZWFkaW5nIA0KbWVjaGFuaXNtLg0KDQo+IFNvIG15IGh5cG90aGVzaXMsIHdoaWNoIGlzIGEg c3RyYWlnaHQtdXAgZ3Vlc3MgdGhhdCBtYXkgYmUgd3Jvbmcgc2luY2UgSQ0KPiBkb24ndCBr bm93IGhvdyB0aGVzZSBsaWJyYXJpZXMgd29yaywgaXMgdGhhdCBmb3Igc29tZSByZWFzb24g b24gdGhpcw0KPiBwbGF0Zm9ybSB0aGlzIGNvZGUgZ2V0cyBydW4gdHdpY2UsIHByZXN1bWFi bHkgYmVjYXVzZSB0aGUNCj4gZmluaXNoZWRfY2FsbGJhY2sgaGFzbid0IHJ1biBiZWZvcmUg aXQgcmVhY2hlcyB0aGUgJGxvb3AtPnJ1biBsaW5lLCBhbmQNCj4gdGhhdCdzIGFsc28gY2F1 c2luZyBzb21lIHNvcnQgb2YgcmFjZSB0aGF0IGNhdXNlcyB0aGUgdG90YWwgY291bnRlciB0 byBiZQ0KPiAxIGluc3RlYWQgb2YgMi4NCg0KSGF2aW5nIGp1c3QgZmlyZWQgdXAgdGhlIHBv cnRlcmJveCBJIHNlZSB0aGF0IHRoZSBidWcgZG9lcyBvY2N1ciANCnJlcHJvZHVjaWJseSB0 aGVyZSwgZWl0aGVyLiBpLmUuIGFzIHlvdSBzdWdnZXN0LCB0aGVyZSBpcyBhIHJhY2UgDQpj b25kaXRpb24gc29tZXdoZXJlLg0KDQo+IElmIGl0IGlzIGEgcmFjZSBjb25kaXRpb24sIHRo aXMgbWF5IGJlIGEgZ2VuZXJhbCBwcm9ibGVtIHdpdGggdGhlIHRlc3QNCj4gdGhhdCBjb3Vs ZCB0cmlnZ2VyIGVsc2V3aGVyZSwgYnV0IGp1c3QgaGFwcGVuZWQgdG8gdHJpZ2dlciBvbiB0 aGlzDQo+IGFyY2hpdGVjdHVyZSBmb3Igc29tZSByZWFzb24uICBCdXQgaXQncyBhbHNvIHF1 aXRlIHBvc3NpYmxlIHRoYXQgZ2xpYg0KPiB3b3JrcyBzdWJ0bHkgZGlmZmVyZW50bHkgb24g dGhpcyBwbGF0Zm9ybSBmb3Igc29tZSByZWFzb24uDQoNCll1cC4gVGhhbmtzIGZvciB5b3Vy IHRpbWUgYW5kIHBvaW50aW5nIG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24uDQoNClJlZ2Fy ZHMNCg0KSmVmZg0K

    --------------nQeX04jemYtlbyspAPUY2b2q--

    -----BEGIN PGP SIGNATURE-----

    wsF5BAABCAAjFiEERjKT5K4zhxhG8wInsyHyAxEPyvMFAmawxAgFAwAAAAAACgkQsyHyAxEPyvNV ow//bO896Yw5qLDoCp4QJX/KL7iWghGvIb+PKzccA2q8SukucSC3V38znBFsenHLnC6cn7IIqSuc AJ9w20SKymJ/0MkPHkfUNSfhc4HoPDMDapP1N12rAwksDlXfC5kIYDjTA0jWlfYB+VCfZLxnfRVO p7guRF/f9kx1rEu3Ms9c3oo+052a58yIKxN83SUapmeR5uNm+4w2xMrTu1qKw4PwiVhM5i+PB2CG K/u4dlDoDZxfSs8dGP002ziFhLDC1oWqTt3rtiuUK45LPLD8gasuJZ8OC8L1kGktzQJbOwIm2SsS q925KETnt9QYdpfACKCAqtVuGRsNwS+kAc9xY35fbGisPj361/LihUXvRyIbFPJwYFJ57FeZAaUl bbLs7aQrChyu6EuyMBW9KR1bTGqoPIVmytfCE9TcL/OwPTko26YkvZNIGO0k5WDlLiBb+TULj8Cp ZNS+f4bpHqMHjgz0OUT3WiY0820JMxd5tMG/tkYz04PorUciTnuoBGHCyIjCH1J5RK62QQS4mSFR 4NCzoyDhFdTxvQFhdDobMxDZ7QOcja4JhBd2ae2iKdQWJSL9zr+KUCrm3F8eRRUjSpn7zSM0YYiX 7088Lp+Ps0IHotR096+sbKVHY81xTVsY7LcijIaSVgF78G8r0Opei6b5fjlYWQPe939oJbFIHZT9 mv4=
    =Pkzr
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)