Debian Bug report logs - #964770
lintian: lintian will get stuck on arm64

version graph

Package: lintian; Maintainer for lintian is Debian Lintian Maintainers <lintian-maint@debian.org>; Source for lintian is src:lintian (PTS, buildd, popcon).

Reported by: Kentaro Hayashi <hayashi@clear-code.com>

Date: Fri, 10 Jul 2020 09:42:01 UTC

Severity: normal

Found in version lintian/2.83.0

Done: Felix Lechner <felix.lechner@lease-up.com>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Debian Lintian Maintainers <lintian-maint@debian.org>:
Bug#964770; Package lintian. (Fri, 10 Jul 2020 09:42:03 GMT) (full text, mbox, link).


Acknowledgement sent to Kentaro Hayashi <hayashi@clear-code.com>:
New Bug report received and forwarded. Copy sent to Debian Lintian Maintainers <lintian-maint@debian.org>. (Fri, 10 Jul 2020 09:42:03 GMT) (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Kentaro Hayashi <hayashi@clear-code.com>
To: submit@bugs.debian.org
Subject: lintian: lintian will get stuck on arm64
Date: Fri, 10 Jul 2020 18:36:52 +0900
Package: lintian
Version: 2.83.0
Severity: normal

It seems that lintian will get stuck with it on arm64.
I've confirmed this on arm64. It may happen on other platform, but I don't
know.

This issue does not occur on amd64.

At first, I've faced it on arm64v8:focal cloud image, [1]
but it seems that this issue is not specific to the image itself.

[1] https://bugs.launchpad.net/cloud-images/+bug/1881217

Here is the reproducible steps:

  $ docker run -it arm64v8/debian:unstable
  # apt update
  # apt install -y lintian
  # lintian --help

As a result, lintian does not show usage help.
Here is the version about lintian:

  # dpkg -l | grep lintian
  ii  lintian                          2.83.0                         all          Debian package checker

Additional information:

It seems that IO::Async::Loop related code will stuck:

  # perl -d /usr/bin/lintian --help

  Loading DB routines from perl5db.pl version 1.55
  Editor support available.

  Enter h or 'h h' for help, or 'man perldebug' for more help.

  main::(/usr/bin/lintian:55):    };
    DB<1>
  ^C
  IO::Async::Loop::Epoll::loop_once(/usr/share/perl5/IO/Async/Loop/Epoll.pm:187):
  187:       $self->post_wait;
    DB<1> T
  @ = DB::DB called from file '/usr/share/perl5/IO/Async/Loop/Epoll.pm' line 187
  . = IO::Async::Loop::Epoll::loop_once(ref(IO::Async::Loop::Epoll)) called from
  file '/usr/share/perl5/IO/Async/Loop.pm' line 654
  . = IO::Async::Loop::await(ref(IO::Async::Loop::Epoll), ref(IO::Async::Future))
  called from file '/usr/share/perl5/Lintian/Util.pm' line 628
  $ = Lintian::Util::safe_qx('nproc') called from file
  '/usr/share/perl5/Lintian/Internal/FrontendUtil.pm' line 123
  @ = Lintian::Internal::FrontendUtil::default_parallel() called from file
  '/usr/share/lintian/commands/lintian.pm' line 93
  $ = require '/usr/share/lintian/commands/lintian.pm' called from file
  '/usr/bin/lintian' line 36
  . = eval {...} called from file '/usr/bin/lintian' line 36
  . =
  main::__ANON__[/usr/bin/lintian:55]('/usr/share/lintian/commands/lintian.pm')
  called from file '/usr/bin/lintian' line 120
  . = dplint::run_tool('/usr/bin/lintian', 'lintian') called from file
  '/usr/bin/lintian' line 299
  . = dplint::main() called from file '/usr/bin/lintian' line 383

The trace log indicates that $loop->run_child will stuck at 
safe_qx /usr/share/perl5/Lintian/Util.pm:

   608      my $loop = IO::Async::Loop->new;
   609      my $future = $loop->new_future;
   610      my $status;
   611
   612      $loop->run_child(
   613          command => [@command],
   614          on_finish => sub {
   615              my ($pid, $exitcode, $stdout, $stderr) = @_;
   616              $status = ($exitcode >> 8);
   617
   618              if ($status) {
   619                  my $message = "Command @command exited with status $status";
   620                  $message .= ": $stderr" if length $stderr;
   621                  $future->fail($message);
   622                  return;
   623              }
   624
   625              $future->done($stdout);
   626          });
   627
   628      $loop->await($future);
   629

Regards,



Information forwarded to debian-bugs-dist@lists.debian.org, Debian Lintian Maintainers <lintian-maint@debian.org>:
Bug#964770; Package lintian. (Mon, 13 Jul 2020 00:12:02 GMT) (full text, mbox, link).


Acknowledgement sent to Kentaro Hayashi <hayashi@clear-code.com>:
Extra info received and forwarded to list. Copy sent to Debian Lintian Maintainers <lintian-maint@debian.org>. (Mon, 13 Jul 2020 00:12:02 GMT) (full text, mbox, link).


Message #10 received at 964770@bugs.debian.org (full text, mbox, reply):

From: Kentaro Hayashi <hayashi@clear-code.com>
To: 964770@bugs.debian.org
Subject: Re: lintian: lintian will get stuck on arm64
Date: Mon, 13 Jul 2020 09:09:45 +0900
Hi,

Here it the reproducible code.

  use v5.20;
  use warnings;
  use utf8;
  use autodie;

  use IO::Async::Loop;
  use IO::Async::Process;

  my $loop = IO::Async::Loop->new;
  my $future = $loop->new_future;
  my $status;

  my @command = ("nproc");
  print $future;

  $loop->run_child(
      command => [@command],
      on_finish => sub {
          my ($pid, $exitcode, $stdout, $stderr) = @_;
          $status = ($exitcode >> 8);

          if ($status) {
              my $message = "Command @command exited with status $status";
              $message .= ": $stderr" if length $stderr;
              $future->fail($message);
              return;
          }

          $future->done($stdout);
      });

  $loop->await($future);



Information forwarded to debian-bugs-dist@lists.debian.org, Debian Lintian Maintainers <lintian-maint@debian.org>:
Bug#964770; Package lintian. (Mon, 13 Jul 2020 09:39:02 GMT) (full text, mbox, link).


Acknowledgement sent to Felix Lechner <felix.lechner@lease-up.com>:
Extra info received and forwarded to list. Copy sent to Debian Lintian Maintainers <lintian-maint@debian.org>. (Mon, 13 Jul 2020 09:39:02 GMT) (full text, mbox, link).


Message #15 received at 964770@bugs.debian.org (full text, mbox, reply):

From: Felix Lechner <felix.lechner@lease-up.com>
To: Kentaro Hayashi <hayashi@clear-code.com>, 964770@bugs.debian.org
Subject: Re: Bug#964770: lintian: lintian will get stuck on arm64
Date: Mon, 13 Jul 2020 02:37:42 -0700
Hi Kentaro,

On Sun, Jul 12, 2020 at 5:12 PM Kentaro Hayashi <hayashi@clear-code.com> wrote:
>
> Here is the reproducible code.

The failure does not reproduce on the Debian arm64 porterbox amdahl.

In the code above, I removed the 'print $future' statement and
replaced $loop->await with 'say $future->get'. The result is '4',
presumably the number of processors on amdahl.

I also forwarded your bug to the IRC channel #io-async. Someone there
tested your initial filing in the docker container, as you described,
on a Raspberry Pi4 and then the code you submitted later. Both ran
fine.

Do you have more information about your error? If you need help
debugging your Perl setup, I can recommend the channel #perl-help. The
good folks there would be able to shed light on it.

Kind regards
Felix Lechner



Information forwarded to debian-bugs-dist@lists.debian.org, Debian Lintian Maintainers <lintian-maint@debian.org>:
Bug#964770; Package lintian. (Thu, 16 Jul 2020 10:15:09 GMT) (full text, mbox, link).


Acknowledgement sent to Kentaro Hayashi <hayashi@clear-code.com>:
Extra info received and forwarded to list. Copy sent to Debian Lintian Maintainers <lintian-maint@debian.org>. (Thu, 16 Jul 2020 10:15:09 GMT) (full text, mbox, link).


Message #20 received at 964770@bugs.debian.org (full text, mbox, reply):

From: Kentaro Hayashi <hayashi@clear-code.com>
To: 964770@bugs.debian.org
Subject: Re: Bug#964770: lintian: lintian will get stuck on arm64
Date: Thu, 16 Jul 2020 19:11:04 +0900
Hi,

On Mon, 13 Jul 2020 02:37:42 -0700 Felix Lechner <felix.lechner@lease-up.com> wrote:
> Hi Kentaro,
> 
> On Sun, Jul 12, 2020 at 5:12 PM Kentaro Hayashi <hayashi@clear-code.com> wrote:
> >
> > Here is the reproducible code.
> 
> The failure does not reproduce on the Debian arm64 porterbox amdahl.
> 
> In the code above, I removed the 'print $future' statement and
> replaced $loop->await with 'say $future->get'. The result is '4',
> presumably the number of processors on amdahl.
> 
> I also forwarded your bug to the IRC channel #io-async. Someone there
> tested your initial filing in the docker container, as you described,
> on a Raspberry Pi4 and then the code you submitted later. Both ran
> fine.
> 
> Do you have more information about your error? If you need help
> debugging your Perl setup, I can recommend the channel #perl-help. The
> good folks there would be able to shed light on it.
> 

Thank you for checking.

I've tested with docker.io 19.03.12+dfsg1-3.

  % docker pull arm64v8/debian:unstable
  unstable: Pulling from arm64v8/debian
  75b27a953f63: Pull complete 
  Digest: sha256:7556a36722abe5df26d81b77059c7d002c3c8184540c0058bfa4b215000fc298
  Status: Downloaded newer image for arm64v8/debian:unstable
  docker.io/arm64v8/debian:unstable

  % docker run -it arm64v8/debian:unstable
  # apt update
  # apt upgrade
  # apt install -y lintian

  # dpkg -l | grep lintian
  ii  lintian                          2.84.0                         all          Debian package checker
  # dpkg -l | grep libio-async
  ii  libio-async-loop-epoll-perl      0.21-1                         all          Perl extension for an event loop using epoll
  ii  libio-async-perl                 0.77-3                         all          modules for asynchronous event-driven programming

  # nproc
  12

Sample code is here. (again)

  use v5.20;
  use warnings;
  use utf8;
  use autodie;

  use IO::Async::Loop;
  use IO::Async::Process;

  my $loop = IO::Async::Loop->new;
  my $future = $loop->new_future;
  my $status;

  my @command = ("nproc");

  $loop->run_child(
      command => [@command],
      on_finish => sub {
          my ($pid, $exitcode, $stdout, $stderr) = @_;
          $status = ($exitcode >> 8);

          if ($status) {
              my $message = "Command @command exited with status $status";
              $message .= ": $stderr" if length $stderr;
              $future->fail($message);
              return;
          }

          $future->done($stdout);
      });
  say $future->get;

From the command line in docker:

  # nproc
  12

So, I've expected that execution result of sample is 12, but it has no
output to console. the sample code must be killed by Ctrl+C.

> I also forwarded your bug to the IRC channel #io-async. Someone there
tested your initial filing in the docker container, as you described,
on a Raspberry Pi4 and then the code you submitted later. Both ran
fine.

It is strange that it can't be reproducible on other person's docker container
because it is easy to reproduce on my debian unstable host.

I'll contact to #perl-help.



Information forwarded to debian-bugs-dist@lists.debian.org, Debian Lintian Maintainers <lintian-maint@debian.org>:
Bug#964770; Package lintian. (Fri, 30 Oct 2020 05:18:03 GMT) (full text, mbox, link).


Acknowledgement sent to Felix Lechner <felix.lechner@lease-up.com>:
Extra info received and forwarded to list. Copy sent to Debian Lintian Maintainers <lintian-maint@debian.org>. (Fri, 30 Oct 2020 05:18:03 GMT) (full text, mbox, link).


Message #25 received at 964770@bugs.debian.org (full text, mbox, reply):

From: Felix Lechner <felix.lechner@lease-up.com>
To: Kentaro Hayashi <hayashi@clear-code.com>, 964770@bugs.debian.org
Subject: Re: Bug#964770: lintian: lintian will get stuck on arm64
Date: Thu, 29 Oct 2020 22:14:41 -0700
Hi Kentaro,

On Fri, Jul 10, 2020 at 2:42 AM Kentaro Hayashi <hayashi@clear-code.com> wrote:
>
> It seems that IO::Async::Loop related code will stuck:

Lintian no longer uses IO::Async (although our test suite does). Have
you seen this issue recently? Otherwise, I would like to close this
bug. Thanks!

Kind regards
Felix Lechner



Information forwarded to debian-bugs-dist@lists.debian.org, Debian Lintian Maintainers <lintian-maint@debian.org>:
Bug#964770; Package lintian. (Sun, 01 Nov 2020 14:36:03 GMT) (full text, mbox, link).


Acknowledgement sent to Kentaro Hayashi <kenhys@xdump.org>:
Extra info received and forwarded to list. Copy sent to Debian Lintian Maintainers <lintian-maint@debian.org>. (Sun, 01 Nov 2020 14:36:03 GMT) (full text, mbox, link).


Message #30 received at 964770@bugs.debian.org (full text, mbox, reply):

From: Kentaro Hayashi <kenhys@xdump.org>
To: 964770@bugs.debian.org
Subject: Re: Bug#964770: lintian: lintian will get stuck on arm64
Date: Sun, 1 Nov 2020 23:31:09 +0900
On Thu, 29 Oct 2020 22:14:41 -0700 Felix Lechner <felix.lechner@lease-up.com> wrote:
> Lintian no longer uses IO::Async (although our test suite does). Have
> you seen this issue recently? Otherwise, I would like to close this
> bug. Thanks!

No, I've confirmed it version 2.83.0 and 2.84.0.
It seems that dependency to IO::Async was explicitly removed since 2.92.0.
so, it was already fixed. (It is ok to close, I think)




Reply sent to Felix Lechner <felix.lechner@lease-up.com>:
You have taken responsibility. (Sun, 01 Nov 2020 14:42:02 GMT) (full text, mbox, link).


Notification sent to Kentaro Hayashi <hayashi@clear-code.com>:
Bug acknowledged by developer. (Sun, 01 Nov 2020 14:42:02 GMT) (full text, mbox, link).


Message #35 received at 964770-close@bugs.debian.org (full text, mbox, reply):

From: Felix Lechner <felix.lechner@lease-up.com>
To: Kentaro Hayashi <kenhys@xdump.org>, 964770-close@bugs.debian.org
Subject: Re: Bug#964770: lintian: lintian will get stuck on arm64
Date: Sun, 1 Nov 2020 06:39:16 -0800
Hi Kentaro,

On Sun, Nov 1, 2020 at 6:36 AM Kentaro Hayashi <kenhys@xdump.org> wrote:
>
> (It is ok to close, I think)

I agree. Closing this bug. Thanks!

Kind regards
Felix Lechner



Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Mon, 30 Nov 2020 07:28:12 GMT) (full text, mbox, link).


Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Thu Aug 8 02:04:03 2024; Machine Name: buxtehude

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.