I've reproduced this and done some debugging. If I install perl (not just perl-base), the uninitialised value goes away! I'm leaning solidly toward this being a perl problem now, and it seems it's a problem in the perl-base package, possibly missing something pulled in if full perl is installed. It seems that the call to split is sometimes causing this uninitalised value warning. I've verified that it can happen when $reply has a value such as "0 multiselect escape " when going into the split. And it is still defined when coming out, AND both values split out are defined and correct. So what's uninitialised? Here's a backtrace I got of how SWASHNEW gets called. This call seems to be done implicity by perl. May 20 23:05:11 in-target: utf8::SWASHNEW('utf8', 'IsSpacePerl', undef, 1, 0) called at /usr/share/perl5/Debconf/FrontEnd/Passthrough.pm line 74 May 20 23:05:11 in-target: Debconf::FrontEnd::Passthrough::talk('Debconf::FrontEnd::Passthrough=HASH(0x853aa58)', 'CAPB', 'backup') called at /usr/share/perl5/Debconf/FrontEnd/Passthrough.pm line 113 May 20 23:05:11 in-target: Debconf::FrontEnd::Passthrough::capb_backup('Debconf::FrontEnd::Passthrough=HASH(0x853aa58)', 1) called at /usr/share/perl5/Debconf/ConfModule.pm line 250 May 20 23:05:11 in-target: Debconf::ConfModule::command_capb('Debconf::ConfModule=HASH(0x8661f10)', 'backup', 'multiselect') called at /usr/share/perl5/Debconf/ConfModule.pm line 132 May 20 23:05:11 in-target: Debconf::ConfModule::process_command('Debconf::ConfModule=HASH(0x8661f10)', 'CAPB backup multiselect') called at /usr/share/perl5/Debconf/ConfModule.pm line 74 May 20 23:05:11 in-target: Debconf::ConfModule::communicate('Debconf::ConfModule=HASH(0x8661f10)') called at /usr/sbin/dpkg-preconfigure line 133 Tracing through SWASHNEW, I see: - $extras is not set, because $list ($_[2]) is undef. - So 'for my $x ($extras)' just sets $x to undef, causing 2 uninitialised value warnings as code in the loop operates on $x. - I'm not sure what it returns exactly (hard to tell w/o Data::Dumper, which is in perl-modules), but I suspect that it contains some sort of uninitialised value.. In debconf, I can work around the perl problem and avoid the warning messages with this change: Index: Debconf/FrontEnd/Passthrough.pm =================================================================== --- Debconf/FrontEnd/Passthrough.pm (revision 2280) +++ Debconf/FrontEnd/Passthrough.pm (working copy) @@ -95,7 +95,7 @@ $reply = <$readfh>; chomp($reply); debug developer => "<---- $reply"; - my ($tag, $val) = split(' ', $reply, 2); + my ($tag, $val) = split(/ /, $reply, 2); $val = '' unless defined $val; $val = Debconf::Encoding::convert("UTF-8", $val); So I think that SWASHNEW is getting called incorrectly somehow for the implied whitespace-matching regexp in the ' ' pattern passed to split. FWIW, this is the only instance of split(' ', ...) in debconf, aside from one in a rarely used code path. But I don't see anything wrong with the code in debconf, so I think that rather than change those, this needs to be reassigned to perl-base. -- see shy jo
Attachment:
signature.asc
Description: Digital signature