Frans Pop wrote:
> Relevant part of the log attached, suggested change included.

So the relevant thing is this:

Apr 28 22:27:49 in-target: debconf (developer): ----> GET mdadm/initrdstart
Apr 28 22:27:49 in-target: debconf (developer): <-- 
Apr 28 22:27:49 in-target: debconf (developer): <---- 20 Unsupported command "" 
(full line was "") received from confmodule.
Apr 28 22:27:49 in-target: _change called at 
/usr/share/perl5/Debconf/DbDriver/Stack.pm line 100
Apr 28 22:27:49 in-target:      
Debconf::DbDriver::Stack::_change('Debconf::DbDriver::Stack=ARRAY(0x8467af8)', 
'setfield', 'Debconf::DbDriver::Stack=ARRAY(0x8467af8)', 'mdadm/initrdstart', 
'value', 'undef') called at /usr/share/perl5/Debconf/DbDriver/Stac
Apr 28 22:27:49 in-target:      
Debconf::DbDriver::Stack::setfield('Debconf::DbDriver::Stack=ARRAY(0x8467af8)', 
'mdadm/initrdstart', 'value', 'undef') called at 
/usr/share/perl5/Debconf/Question.pm line 173
Apr 28 22:27:49 in-target:      
Debconf::Question::value('Debconf::Question=ARRAY(0x862c994)', 'undef') called 
at /usr/share/perl5/Debconf/ConfModule.pm line 302
Apr 28 22:27:49 in-target:      
Debconf::ConfModule::command_go('Debconf::ConfModule=HASH(0x8674804)') called 
at /usr/share/perl5/Debconf/ConfModule.pm line 132
Apr 28 22:27:49 in-target:      
Debconf::ConfModule::process_command('Debconf::ConfModule=HASH(0x8674804)', 'GO 
') called at /usr/share/perl5/Debconf/ConfModule.pm line 74
Apr 28 22:27:49 in-target:      
Debconf::ConfModule::communicate('Debconf::ConfModule=HASH(0x8674804)') called 
at /usr/sbin/dpkg-preconfigure line 133
Apr 28 22:27:49 in-target: Use of uninitialized value in join or string at 
/usr/share/perl5/Debconf/DbDriver/Stack.pm line 107, <GEN0> line 10.

The trigger here appears to be a bug in mdadm or in the passthrough
frontend or cdebconf (I suspect one of the latter two). It tries to
shove an enormous multi-line message across the debconf protocol without
using debconf-escape(1):

Apr 28 22:27:49 in-target: debconf (developer): ----> SUBST mdadm/initrdstart 
msg If the system's root file system is located on an MD array (RAID), it needs 
to be started early during the boot sequence. If it is located on a logical 
volume (LVM), whi
Apr 28 22:27:49 in-target: 
Apr 28 22:27:49 in-target: If you know exactly which arrays are needed to bring 
up the root file system, and you want to postpone starting all other arrays to 
a later point in the boot sequence, enter the arrays to start here. 
Alternatively, enter 'al
Apr 28 22:27:49 in-target: 
Apr 28 22:27:49 in-target: If you do not need or want to start any arrays for 
the root file system, leave the answer blank (or enter 'none'). This may be the 
case if you are using kernel autostart or do not need any arrays to boot.

debconf then interprets this as a valid SUBST command, followed by a
blank line that it doesn't know what to do with, followed by an invalid
"If" command, etc. The protocol gets out of sync and I'd not be suprised
if the effects of that are really much worse than the uninitialized
value message.


The details of the uninitialised value itself seem to be these:

* perl debconf talks to cdebconf: "GET mdadm/initrdstart"
* cdebconf, with the protocol out of sync, sees ""
* cdebconf replies with an error message
* perl debconf sees an error message where it expected a nice simple
  value
* Around line 280 of Passthrough.pm, it does check if an error was
  returned, but if it was, it just doesn't set a value for the element
  at all.
* Thus, the value is left undef.
* Thus storing it to the DB later results in an unintialized value
  warning.

-- 
see shy jo

Attachment: signature.asc
Description: Digital signature

Reply via email to