Package: perl Version: 5.34.0-4 Severity: normal Control: block 923829 by -1
Hi, While infestigating a random FTBFS in starlet (#923829), it appeared to me that the problem is actually in perl. To reproduce te issue, t/12bad_request_line.t needs to be run in a loop with the following change: (starlet packaging repo is at ssh://g...@salsa.debian.org/perl-team/modules/packages/starlet.git) ------------------------------------------- diff --git a/t/12bad_request_line.t b/t/12bad_request_line.t index 61b4e7b..bdc8368 100644 --- a/t/12bad_request_line.t +++ b/t/12bad_request_line.t @@ -22,7 +22,7 @@ test_tcp( my $port = shift; local $SIG{__WARN__} = sub { ok 0, "No warnings"; - diag @_; + diag Carp::longmess(@_); }; my $loader = Plack::Loader->load('Starlet', port => $port); $loader->run(sub { [200, ['Content-Type' => 'text/plain'], ['OK']] }); ------------------------------------------- A sample loop is this: while prove -l t/12bad_request_line.t; do date; done Running this simultaneously in several terminals may help triggering the failure. Eventually it fails with: # Failed test 'No warnings' # at t/12bad_request_line.t line 24. # SIGTERM handler "DEFAULT" not defined. # at /usr/share/perl5/Parallel/Prefork.pm line 71. # Parallel::Prefork::start(Parallel::Prefork=HASH(0x55cd856355b8)) called at .../lib/Plack/Handler/Starlet.pm line 78 # Plack::Handler::Starlet::run(Plack::Handler::Starlet=HASH(0x55cd849b0ad8), CODE(0x55cd8562ac98)) called at t/12bad_request_line.t line 28 # main::__ANON__(33415) called at /usr/share/perl5/Test/TCP.pm line 100 # Test::TCP::start(Test::TCP=HASH(0x55cd8562aed8)) called at /usr/share/perl5/Test/TCP.pm line 82 # Test::TCP::new("Test::TCP", "code", CODE(0x55cd8562aab8)) called at /usr/share/perl5/Test/TCP.pm line 28 # Test::TCP::test_tcp("client", CODE(0x55cd854306b0), "server", CODE(0x55cd8562aab8)) called at t/12bad_request_line.t line 31 # Looks like you failed 1 test of 2. t/12bad_request_line.t .. Dubious, test returned 1 (wstat 256, 0x100) Failed 1/2 subtests The lines in Parallel::Prefork where the warning comes from are: https://salsa.debian.org/perl-team/modules/packages/libparallel-prefork-perl/-/blob/master/lib/Parallel/Prefork.pm#L71 ... 68 unless ($pid) { 69 # child process 70 $self->{in_child} = 1; 71 $SIG{$_} = 'DEFAULT' for keys %{$self->trap_signals}; 72 $SIG{CHLD} = 'DEFAULT'; # revert to original 73 exit 0 if $self->signal_received; ... Seems perfectly normal to me - signal handlers are reset in the forked child. The only plausible source I find is line 3522 of mg.c: https://salsa.debian.org/perl-team/interpreter/perl/-/blob/debian-5.34/mg.c#L3522 and here my idea of what is going on vanishes. I hope this is enough as a clue. -- Damyan -- System Information: Debian Release: bookworm/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 5.17.0-3-amd64 (SMP w/4 CPU threads; PREEMPT) Kernel taint flags: TAINT_OOT_MODULE Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages perl depends on: ii dpkg 1.21.8 ii libperl5.34 5.34.0-4 ii perl-base 5.34.0-4 ii perl-modules-5.34 5.34.0-4 Versions of packages perl recommends: ii netbase 6.3 Versions of packages perl suggests: pn libtap-harness-archive-perl <none> ii libterm-readline-gnu-perl 1.42-2+b1 ii libterm-readline-perl-perl 1.0303-2.1 ii make 4.3-4.1 ii perl-doc 5.34.0-4 -- no debconf information